A desktop application for geotagging underwater photos using GPS data from transect files. The application helps marine researchers synchronize underwater images with GPS tracks and export metadata in iFDO (Image File Data Object) format for marine research purposes.
- Photo Geotagging: Automatically add GPS coordinates to underwater photos using GPX track data
- Time Synchronization: Sync camera timestamps with GPS timestamps using reference photos
- Marine Research Metadata: Export comprehensive iFDO metadata files for FAIR data principles
- KML Export: Generate KML/KMZ files with geotagged photo locations for visualization in Google Earth
- Attribution Metadata: Embed researcher and copyright information directly into photo EXIF data
- Cross-Platform: Native desktop applications for Windows and macOS
- Python 3.11 or higher (for development)
- uv for dependency management
- ExifTool (automatically downloaded during build)
- Install Python 3.11+ from python.org
- Install uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
-
Clone the repository:
git clone https://github.com/csiro/ibenthos-geotagging-tool.git cd ibenthos-geotagging-tool
-
Install dependencies using Poetry:
uv venv uv pip install . source .venv/bin/activate
-
Run the application in development mode:
python src/main.py
Run the test suite:
pytest
Run specific test files:
pytest tests/test_user_input_model.py
The macOS build targets x86_64 architecture, which runs natively on Intel Macs and via Rosetta on Apple Silicon Macs.
./build_x86.zsh
- Build the application bundle:
pyinstaller --clean --noconfirm main.spec
To ensure x86_64 compatibility on Apple Silicon Macs:
- Install Python using the universal2 build from python.org
- Set your terminal to Rosetta mode: Right-click iTerm2 → Get Info → Use Rosetta
- Create an x86_64 virtual environment:
python -m venv x86_builder source x86_builder/bin/activate
- Install packages with x86_64 architecture:
arch -x86_64 pip install poetry arch -x86_64 poetry install
- Set
target_arch = "x86_64"
inmain.spec
- Build with PyInstaller
./build_x86.ps1
This script:
- Builds the application bundle using PyInstaller
- Downloads ExifTool for Windows
- Creates a Windows installer using Inno Setup
-
Build the application:
poetry run pyinstaller --clean --noconfirm main.spec
-
The Windows installer setup is defined in the
.iss
file and can be compiled with Inno Setup.
This application is built using the following open-source libraries and tools:
- PySide6 - Cross-platform GUI framework by The Qt Company
- Python - Programming language by the Python Software Foundation
- geotag-pt - GPS photo tagging library (CSIRO internal)
- PyExifTool - Python wrapper for ExifTool by Phil Harvey
- Pillow (PIL) - Python Imaging Library for image processing
- simplekml - KML generation library
- PyYAML - YAML parser and emitter for Python
- NumPy - Numerical computing library
- PyInstaller - Packaging Python applications
- Poetry - Dependency management and packaging
- Inno Setup - Windows installer creator (Windows builds)
- ExifTool by Phil Harvey - Command-line application for reading, writing and editing meta information
This project is distrbuted under the LGPLv3 license.
If you use this software in your research, please cite:
iBenthos Geotagging Tool. (2025). Commonwealth Scientific and Industrial Research Organisation (CSIRO).
https://github.com/csiro/ibenthos-geotagging-tool
Author: Brendan Do ([email protected])
Organization: Commonwealth Scientific and Industrial Research Organisation (CSIRO)