Author: Dean Hand \ Date Created: 09/07/2019 \ Name: Drone_Footprints.py
The purpose of this application is to accurately calculate the geographic footprints of individual drone images. Initially, it extracts specific metadata from the drone image files to determine each image's Field of View (FOV). Following this, the application performs a series of calculations to establish the geospatial reference of each image. Subsequently, it adjusts the image to align accurately with the Earth's surface within that FOV, ensuring precise geolocation without the need for stitching images together. This results in a remarkably efficient process. The final output includes a orthorectified GeoTiff image file, accompanied by a GeoJSON file detailing:
sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable
sudo apt-get update
sudo apt-get install libgdal-dev
brew install gdal
Installation via pip
First, you probably want to install into a virtual environment or similar, for example:
python3 -m venv .venv # Install with compatible maximum version of Python (Requires-Python >=3.7,<3.11)
source .venv/bin/activate
The we install using the requirements list as follows:
pip install --no-cache-dir --force-reinstall -r requirements.txt # this current version of GDAL demands the extra tags
Python 3.9 and above
-i
- The Default root folder path for the mission you wish to process. Required
-o
- The output directory path for the GeoJSON file and GeoTiffs. Required
-w
- Sensor Width (default is 13.2), Not Required (Check your Drones Specs for information)
-t
- Sensor Height (default is 8.8), Not Required (Check your Drones Specs for information)
-d
- Correct images using local magnetic declination (optional)
-e
- Desired EPSG code for output GeoTiffs (default is 4326
) (optional)
-v
- Path to a Digital Surface Model file to use for more accuracy (optional)
-m
- Utilize open_elevation.com for more accuracy but extends processing time (location dependent) (optional)
-c
- Cloud Optimized GeoTIFF (COG) for output tiff files (optional). Extends processing time
-z
- Improve local contrast option to can make details more visible (optional). Significantly
extends processing time
-l
- Applies lens distortion correction using lensfun api (optional)
-m
or -v
but not both!From the src
directory, run the following commands:
python Drone_Footprints.py -i '/Path/To/Dataset1/images' -o '/Path/To/Dataset1/output
python Drone_Footprints.py -i "/Path/To/Dataset2/images" -o "/Path/To/Dataset2/output" -w 6.16 -t 4.62
python Drone_Footprints.py -i "/Path/To/Dataset3/images" -o "/Path/To/Dataset3/output" -e 3857
python Drone_Footprints.py -i "/Path/To/Dataset4/images" -o "/Path/To/Dataset4/output" -e 3857 -c n
Parallel to Main Path
It is highly recommended that you sort the images you want processed into corresponding datasets
├── /Path/to/mission_folder
│ ├── images
-d
flag and see if that fixes the issue.
Sometimes electro-magnetic fields can mess witht he aircrafts compass.It is a good practice to set your output folder -o
location within your flight mission folder as shown in
Example Commands, but it is not required.
├── /Path/to/output_folder
│ ├── geotiffs
│ │ ├── image1.tif
│ │ ├── image1.tif
│ ├── geojsons
│ │ ├── M_2024-02-06_11-16.json
│ ├── logfiles
│ │ ├── L_M_2024-03-21_13-49.log
Geojson name is constructed using the date/time of processing like so:
M
= mission2024-02-06
= year, month, day11-16
= hour, minuteTested and works with: