Geo-tagged aerial pictures are very useful for mosaic mapping as well as the creation of accurate 3D models from a terrain.

Michael Oborne added a great tool for injecting GPS data on the EXIF tags by using APM's telemetry log from a flight.
This tutorial was created to show you how does it work.
This is a work from Sandro Benigno and Guto Santaella who kindly provided the sample files and screenshots used for making this tutorial.


Step by Step


1: Open the Mission Planner and press "Ctrl+F". It will open a hidden screen, like shown here:

2: Click the button "Geo ref images".
It will give you access to the Geo Tagging resource as shown below:

3: Click the button "Browse Log" and select the telemetry log (.tlog) of the flight related to the shooting session.
Note: You can use both sources: the "Logs" folder from Mission Planner install or you can download it from the APM's dataflash through the USB port.
4: Click the button "Browse Directory" and select the folder where your aerial pictures was downloaded from your camera.

5: Just to illustrate, the screen below shows the mission used for creating this tutorial:

6: The next step is clicking on "Estimate Offset". It will try to extract the offset from the "Log Start Time" and the "Shooting Time" from the first picture taken.
The result shows "offset should be about...". You need to take the guessing and insert it manually on the field "Seconds offset".

7: Click the button "Do it" and wait until the processing is finished. The number shown in "Done... matches" must be the number of pictures taken. Otherwise it means that the sync isn't good enough.
8: After the previous step you can verify the positioning of each picture on Google Earth by clicking "Location Kml".

9: Looking at the example above you'll see the estimated position of a picture. You can click any images at the list on left to check it. If the position is not accurate you can step back and retry it from the step "6" by increasing or decrasing the "Seconds offset" a little bit, just like a fine tuning.
10: After finishing the tuning, all you need to do is click "Geo Tag Images". This process will add geographic data to your picture, i.e. Latitude, Longitude and Altitude.
The processing creates new files with a suffix "_geotag". The original set of pictures remains untouched.

11: You can check your pictures by visualizing the file properties details. You should see the inserted GPS tags on the EXIF data.

Thanks to Michael Oborne by one more awesome tool! ;)

Views: 33495

Comment by Bret C on March 14, 2013 at 8:57am

Thank you James.  Wow, the more I learn - the more I realize I need to learn!

Bret C

Comment by Richard on March 14, 2013 at 9:18am

@James, cheers for the comprehensive information.

Heading info would be great, it would make it much easier to ensure the seconds offset is correct.

I have found the camera specs, but can't find enough info on the sensor

Height m (agl) - 100m

Focal length from the EXIF data, -  6mm,

Sensor size is 1/2.5" Type CCD - How does this transfer to width and height?

Pixel width - 3264 px

Pixel height - 2448 px

Regarding Camera time and seconds offset:

I was using seconds offset from GMT on a webpage. I will check by computers time. I am also unable to see seconds on the camera EXIF data, it seems to only record the hours and minutes. 

I'll post my results tonight if I get anywhere, again, thanks for your help, it's much appreciated,


Comment by James on March 14, 2013 at 12:50pm

if its a canon 80-200 then its 6,17width and 4,55height

Comment by Ricardo Affonso on July 5, 2013 at 7:55am


i´m having an issue with a dataset from a few days ago i still can´t figure out. i made one flight wich had problems with telemetry (wrong video chanel, vTx too close to 3dradio), it disconected in the start of the mission. i decided to keep it going, as i would only fly a short mission. but now i can´t geotag the photos, the tlog states that it start and end at the same time, and on the day before i flown.

when i create the gpx, it shows the correct date, and a little time offset (4 hours, i believe because Br is -4), but there is time information

the next flight i did i got telemetry ok, and with offsets of about 35 seconds the tlog was able to geotag all photos.

is there any problem with the .log file, or my options on the logging to apm? and is there any action i could take to geotag those photos with the .log? i would add them here, but there´s no option to attach a file.

Comment by Milz on August 28, 2013 at 4:33am


Yesterday (27.08) ive tested my first geotagging mission but i forget to the clock time from the camera.
I change the time from the images via Faststone to test the geo ref images script.

The timestamp from the logs in is the future for 2 days whatever time i set to picture
e.g if i set 29.08 as date the logfiles shows me 31.08 as flightdate.
where is my fault ? -)



 stiched images


Comment by Milz on September 27, 2013 at 5:52am


I´ve tested it again and it won´t work 100%. the first tow images will be tagged now.
after the second images in folder the process stopped and i got an error after i click geotag images.
The timestamp from the logfiles seems in the futures. Can anyone explain me how the gps logfiles works ?
If tryed to convert the gps stamp to date but it couldnt work. i think it´s not a standart gps timestamp ?!?
I added the log and some testimages below the picture.
mfg milz


Comment by Milz on September 27, 2013 at 5:54am

Sorry forgot to say
OS Win7 Ultimate SP1 64bit
latest updates and several .net enviroments

Comment by Milz on October 5, 2013 at 7:48am

I have cannibalized the georefimages.cs and writren my own small tool
you can found it here
the rar contants the exeuctable program.
The tool works only with the gpx file.
It´s create a new file with gtg_ as prefix.
It´s also create a location.kml and txt.

mfg milz

Comment by Antonius Lourenço Kasbergen on October 9, 2013 at 4:32pm

Milz, whats the difference from the default software? 

I'm having another type of issue, take a look here:

Comment by Milz on October 10, 2013 at 1:42am

I´m not 100% sure but i think the way how the gps coordinates will be found is different to the orginal script.
And the main goal is.. it´s works for me. i couldnt get the orginal script running.
I build a list of images and a list of gps coordinates found in the gpx file.
I compare the datetime from the images with all coordinates datetimes.
After looking at the orginal code i guess the problem is somewhere with 

System.Globalization.CultureInfo things in c#. It´s for local conversion of doubles like 1,0 and 1.0.


You need to be a member of DIY Drones to add comments!

Join DIY Drones

© 2020   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service