Geotagging photos with a Qstarz GPS data logger

A few days ago I posted an entry about my GPS data logger, a “Qstarz GPS Travel Recorder: BT-Q1000 Platinum”. I mentioned the ability to geotag of photos with the data from it, now I’ll tell you how to actually do it.

To steal a definition from Wikipedia:

Geotagging is the process of adding geographical identification metadata to various media such as photographs, video, websites, SMS messages, or RSS feeds and is a form of geospatial metadata. These data usually consist of latitude and longitude coordinates, though they can also include altitude, bearing, distance, accuracy data, and place names. It is commonly used for photographs, giving geotagged photographs.

As previously mentioned, the included software with the data logger doesn’t do a very good job of geotagging:

  • Adding tag data rewrites the included EXIF orientation data on photos.
  • When tagging photos it also recompresses the JPEG image data. (BAD, BAD, BAD!)
  • When matching photos to locations on the log, syncing time zones between the logs and your photos is an extreme pain, and attempts to fix it result in the EXIF time taken data being altered.

For this reason I went looking for other geotagging software, and discovered GeoSetter ( This program accepts various formats of GPS track files, and writes geotag information into the photo’s EXIF headers without reencoding the image data itself. (For the geeks out there, I ran a few test images through WinMerge before and after tagging them, and the only changes to the binary file were in the EXIF header section, just as I wanted to see).

Once you have downloaded GeoSetter and run it for the first time, it will need to install another program called ExifTool to actually write the EXIF data – it is smart enough to do this automatically.

You will also need to configure how GeoSetter will write the geotag data to your images. The following settings result in three files being produced for each image:

  • The original JPEG image, with geotag information added to the EXIF header.
  • A file with the .xmp extension, which contains the EXIF data as XML.
  • A backup of the original JPEG image, with the .jpg_original file extension.

I delete the backup and the .xmp files after I have have finished tagging a folder of photos: I don’t have a need for the XML file, and I keep a backup of my original files on a separate hard drive so if GeoSetter manages to really mess up an image, then I still have a fallback.

Once GeoSetter has been set up, my usual procedure is as follows:

(all of the screen shots can be clicked on to see the full version)

  1. Carry the GPS data logger with me when taking photos.
  2. Download the logs when I get home using the software included with the data logger. (Travel Recorder PC Utility V5)
  3. Correct any drift in the GPS tracks – a new feature in version 5 of the software.

  4. Export the track as a ‘GPS Exchange Format’ file (this feature only exists in version 5 of the software).

  5. You need to make sure that each track is saved as a separate .gpx file, I have found that in some circumstances GeoSetter gets confused by ‘gaps’ in a track file, resulting in the image to track synchronisation being incorrect.

  6. You then get the usual ‘save file as’ prompt, then a success message.

  7. The rest of the process involves GeoSetter. Firstly, the .gpx file needs to be imported into the program.

  8. If this is successful, then the new item will appear in the track lists, and the track overlay will appear on the Google Map in the main windowGPS . GeoSetter has the ability to tag photos from more than one track at once – I only have one here.

  9. On the other side of the window, load the folder of images to be tagged. I have found that GeoSetter has a limit of 999 photos that can be tagged at one time: if you are taking more than that many photos in a day, then you will need to split them into subfolders, and load only one folder at a time.

  10. GeoSetter will then churn away for a while as it reads the EXIF data from the images. Once the photos are loaded, highlight the images to be geotagged, then click on the ‘synchronise with GPS data file’ button. I suggest only selecting one image (not an entire folder!) the first time you geotag photos, so you can make sure you get the GPS location to photo time synchronization correct.

  11. A dialog will be displayed to set up the synchronisation between GPS track and the photo.
    • “Synchronise with visible tracks” will make GeoSetter use the map data displayed in the parent window during the tagging process.
    • Assignment of found positions has some effect if the GPS data logger lost a signal at some point. The ‘interpolate’ setting in the screenshot is probably wrong for tracks produced my Qstarz data logger, which produces tracks with lots of “wandering” when I stand still. The end product from this setting with my logger results in images being tagged on the wandering tracks, which are places I never actually travelled.
    • The time zone options will affect how photos are synchronised on the tracks. I always keep my camera set on the correct time for the location I am currently in, so I set the drop down to the value of the time zone I took the photo in.

    If you get the settings wrong, photos will be tagged at the wrong location: the only link the software has is the time the picture was taken, and the time that a point on the track was made.

  12. After a bit of churning away, GeoSetter will tell you how many photos could be successfully matted with locations.

  13. It will then update the screen, in the left hand pane a red background against an image means they have been successfully tagged. In the right hand pane the “pins” on the map represent various items and functions:
    • Blue pins are geotagged photo locations: as you can see, my data logger is not as accurate as I would like it to be.
    • The purple pin is the tagged location of the currently selected photo in the left hand pane.
    • The red pin is the last place you clicked on on the map.

  14. If you are unhappy with the locations (eg: scatter from the original GPS log) then you can manually set the location for one or more photos. Highlight the desired images in the right hand pane, click the location on the map where you want the photo to be tagged (a red pin will appear), then select the ‘assign position marker to selected images’ button. The location of the images will then be updated, as well as the map view.

  15. The final action is to write the EXIF date to the image files. You can either save changes of all altered files, or just those images highlighted the the left hand pane.

  16. I happen to use Picasa to manage my folders: you can now load the folder you just tagged, once Picasa finds the updated geotags, you can fly around the map and check out your handiwork.

    Picasa also lets you manually update the locations of photos: you might find it nicer to use than GeoSetter: both programs write to the same EXIF headers, so it doesn’t matter which one you use.

You can see the final result on my Flickr site, this map shows all photos from December 4, 2010.

Liked it? Take a second to support Marcus Wong on Patreon!
You can leave a response, or trackback from your own site.

6 Responses to “Geotagging photos with a Qstarz GPS data logger”

  1. Charles A-M says:

    Roughly, how long does it take to get from camera to Picasa when you process a batch of photos (say one or two hundred over a couple of days)?

    I’m coming from the angle of “I’ll geotag my photos if it doesn’t take too much of my time” rather than “I need to geotag my photos and need to find the best way of doing it”.

    Thanks in advance

    • Marcus says:

      Sorry for the late reply, but here is a breakdown of how long it is currently taking me to geotag the photos from my just completed overseas holiday…

      – Step 1: Downloading the logs from the GPS datalogger to my computer, and then emptying it ready for the next day: 5 minutes, including the time it takes to download
      – Step 2: Exporting the logs into the .GPX format required by Geosetter: 1 minute
      – Step 3: Fiddling with the Geosetter timezone and time offset settings to ensure the track-to-photo location matching is correct: 10 minutes
      – Step 4: Waiting for Geosetter to write the changes to disk: 5 minutes or thereabouts (about 2 seconds per photo)

      The above steps need to be carried out for each day worth of photos you are processing – the time taken for 10 photos is only slightly faster than that for 500 photos, the main differencing being in the wait for Geosetter to save the changes to disk.

      However, the time required to setup the track-to-photo location matching drops when are processing photos from multiple days – this is because you already know the correct timezone, as well as the offset between camera time and the real GPS time.

      So all up I spend 5 minutes each day while on holiday to download the logs, and then around 15 minutes to process each day worth of photos once I get home.

  2. […] Footnote: Setting the date and time correctly is also essential if you are geotagging your photos with location data. […]

  3. […] them, I make sure I caption them accurately. Getting the location correct is easy to do when I geotag the photos, but sometimes I forget to carry my GPS datalogger with me, which results in photos like the one […]

  4. […] my 2012 trip to Europe I managed to break my GPS data logger, leaving me with no way to geotag my photos. Ordering a new data logger online and getting it delivered to my hotel wasn’t an option, as […]

  5. […] ran into similar issues with skewed maps when geotagging photos that I took on my 2013 trip through China – when viewed on Google’s satellite view they […]

Leave a Reply

Your email address will not be published. Required fields are marked *