GeoSetter (by Friedemann Schmidt) is a Windows program that does a great job helping you set the location for your photos. In this article, I will go in depth on how to use this tool. If you are interested in a Mac program, or a more general overview of geotagging, see my previous post – How to Geotag Old Photos.
With GeoSetter, you can geotag photos manually by using the map. Or you can geotag automatically using a GPS track file such as .kmz or .gpx files. It allows you to save latitude/longitude coordinates (and in some cases altitude) to the EXIF data of your photo files. In the background, it uses the open source exiftool program for saving changes. GeoSetter’s interface includes Google Map display, file browser with thumbnails and previews, and track overlays. Most importantly, it features manual and automatic batch geotagging. The author hasn’t updated the software in a while, but I found it really easy to use for both methods of geotagging. I like seeing the results when the map updates as I browse through my photos. The program has great documentation as well. You may find something else out there, but I’ve tried a few, and this is what I use.
Manually Geotagging Single Photos
It’s easy to geotag a few photos with GeoSetter.
- Open the folder with your photos in the file browser area, and click the photo that you wish to geotag.
- Find the right area in the map (you can search to get there quickly).
- Click on the map to pin the location.
- Click the “Assign position marker to selected images” button in the toolbar above the map (red pin with left arrow). The new coordinates will now show red underneath the photo.
- Click the floppy disk icon to “Save all change to image files” or use Ctrl-S. This writes the changes to the file(s).
Of course, you can assign the position on many photos before hitting the Save button to save a bunch in a batch. It may take a minute so that’s a good way to do it.
Once the location is saved in the file, the photo is ready for map displays wherever they are used. This includes uploads to photo sharing sites such as Flickr (see Flickr’s photo map), or uploaded photos of places in Google Maps (How to Upload Great Photos to Google Maps), and many others.
The altitude (or elevation) will not be set using this method. There is no source for that information like there might be in a GPS track.
When Using a GPS Track, Timing is Everything
Geotagging photos automatically using a GPS track is a great way to go. Of course you need to have recorded a GPS track at the time. You do have to be careful about the photo timestamps though. Programs like GeoSetter rely on the time saved in the photo for finding where the photo fits along a GPS track. If the time is incorrect, it won’t match up correctly with the points saved in the track file and the location chosen will probably be way off. Conveniently, you can use an option within GeoSetter to offset the time for purposes of setting photo coordinates.
GPS receivers and apps record the current UTC time into the GPS track in the resulting GPX file. UTC does not have a daylight savings time shift like many places do. So even if you have your camera’s time set correctly, you may still need a correction. When I last geotagged some older photos, I had the time set correctly on my camera, but I had to adjust for 1 hour in the GeoSetter dialog to sync them properly. After that, the result was excellent. I had a few photos where I took one both with my camera and my phone (which already had GPS coordinates), and they matched.
Now you may want to actually save a new time within each photo file to correct it. I do this when I forget to adjust my camera’s time while in a different time zone, and back home I want to keep photos from both my camera and my cellphone in the same folder sorted by time so they show up in order. For this I recommend using ExifToolGUI.
How accurate is geotagging automatically from a GPX track in this way?
GPS tracks do not have continuous data. They record track-points at certain intervals and normally that’s good enough. GeoSetter, and other geotagging applications, allow for estimating the position in between GPS track-points in your track. Presumably it interpolates in this way by the elapsed time between the two points and the time of the photo.
What does this mean? If the photo is taken about halfway between the time of the two track-points, then the program will place it halfway between the two GPS coordinates of those track-points. So the location it finds can be slightly off depending on the consistency of the speed in which you travel between those two points, the straightness of your trail, and just the time elapsed between the two track-points. If you stop and take several photos in one place, the time difference between them causes them to be put at different locations along your path. Photos taken within a short interval relative to the rest of your travel will be placed quite close together.
You can likely adjust how often track-points are recorded in your GPS receiver or app. Shorter time intervals between track-points will of course result in more accurate estimations (and use more battery). But don’t bother with this unless you notice a need for it.
For a test in accuracy, I have used my track file recorded by the MotionX GPS mobile app during a backpacking trip in Rocky Mountain National Park, and of course the geotagging program GeoSetter. I took some photos with my camera and some with my phone. The cellphone shots have accurate GPS info saved in their EXIF data due to the phone’s GPS. I stuck one of those in with my regular camera photos, and then ran the synchronization in GeoSetter. That set the location of all my un-geotagged photos. It also overwrote the GPS coordinates on the one photo from my phone to its best estimate based on the photo’s time and the GPS track data.
Below is the result. I’d say it’s pretty darn close! Depending on how your GPS track is recorded and the other conditions I mentioned, I’m sure it will be accurate enough for you as well.