Geotagging photos

On a regular basis I go driving or cycling with a GPS in logging mode. This creates a nice big GPX file of where I was on a second-by-second basis.

Whilst on such travels, I often take photos. My camera timestamps these photos, but doesn’t have a built in GPS.

So, I want something that takes the photos, and the GPS tracks, and writes the GPS information into each of the photographs.

So far, so good – there is all manner of software out there to do this.

However, this relies on the clocks in my GPS and camera being in sync, which isn’t always true (and even if I were to remember to synchronise them every time I go out that doesn’t help with old photos which are really badly out of sync, such as from my round-Australia drive where I was crossing timezones on a regular basis and would often forget to update the time on my camera for several days).

GPSPhotoLinker, which I normally use, is almost good enough here, but not quite. It allows me to adjust the time on all my photos by a specified amount. But then I need to work out what that amount should be, and that’s a decidedly non-trivial problem.

Generally I can pinpoint fairly accurately where at least one photograph was taken, but then I need to manually find that point in my GPS tracks to work out what time I was really there at – which is also non-trivial as if I’ve stopped to take a photograph, and my GPS is logging every second, I’ll have a variety of points all roughly around the point. And it’s even worse if I’ve been past that same point several times. GPS Visualizer is quite helpful here as it will plot a GPX file onto Google Earth with timestamps as waypoints, but it’s super slow, and really doesn’t like big GPX files (of the type you might get if you drive 300+km a day logging every second…)

So what I really want is something that will take the GPS track, and a set of a photographs, and plot the photos on a map for where it thinks they were taken. Then I should be able to take one or more of the photos and drag them to where they were actually taken, and the software will use that new information to adjust all its timings and replot all the other photos. Then, when I’m happy they all look like they’re in roughly the correct location, it can write the GPS info to the photos.

Does such a thing exist?

If not, how difficult would it be to even write a little utility that does the plotting of photos onto Google Maps and then lets me “try out” different scenarios simply by giving it an offset and having it move all the photos accordingly, until I get a good enough result by trial and error? It doesn’t sound like it would be too difficult, but there are too many components of it I don’t know anywhere near enough about to actually do it.

Anyone any thoughts or pointers?

4 thoughts on “Geotagging photos

  1. I’m pretty sure that the time zone changes on the GPS are display only, and that the logging uses UTC consistently. The camera, on the other hand, doesn’t have time zones. So, I guess I could leave it on GMT and always have to adjust the time of my photos (but by a generally known amount based on the location), but it seems easier to just try to keep it in sync.

    Of course none of this really helps with the historic photos that are causing the most trouble right now, particularly Samoa, Tonga, NZ and Australia where some of them aren’t just the wrong time, but the wrong day. Damned date line!

  2. Well, it is definetly not very complicated. When I was doing my homework in university I’ve made a tool to place photos on a map connecting photos with NMEA log by date and time. It was done like You have written – you just have to pick a photo and place it on a map. Program then automatically finds what was the time when I was in that point and counts time difference that should be added to all timestamps. It also helps to overcome timezone problem :)
    You can make a look at it here:

Leave a Reply

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