Geocoding Your Photos with Lightroom and HoudahGeo
Eric Scouten
I'm kind of a metadata addict. And a map junkie. So it should be no surprise that I've been waiting for a long time for a program \to help me mark up my photos with the exact location of capture. I was very happy to learn this spring of a new application called HoudahGeo. Most of the geocoding apps I've seen before only write to JPEG files. HoudahGeo actually works directly on PSD and DNG files, among others, meaning I can actually mark up my master files instead of a derivative.

HoudahGeo is available only for Mac OS, and I'm not aware of any plans to make a Windows version available. I haven't looked for a similar Windows application, but the tips below regarding how it would interact with Lightroom should apply if so. (Please add a comment if you're aware of a good counterpart for Windows.)
In the Field
If you have a hand-held GPS unit that you can carry with you, the main thing you need to be concerned with is ensuring that your GPS and camera clocks are in sync with each other. Spend the time to get your camera within a minute or less of the GPS clock. If it's not the same time zone, that's OK; you can take care of that later.
And, of course, you need to have your GPS running while you're shooting. I keep mine permanently tethered to the outside of my camera backpack. When I'm packing, I simply put the GPS in an outside pocket, leaving the tether cord in place. When I take the camera out of the pack to start shooting, I pull the GPS out, turn it on, and run its tether through the top handle on my camera bag so it's not dangling. As long as the camera backpack stays on my back, I'm logging my location continuously.
Downloading Data
How you download data will, of course, be dependent on the make and model of your GPS unit and the software that comes with it. HoudahGeo claims to be able to read directly from the GPS unit. I like to keep the original GPS track log files, so I haven't tried this feature myself. What is important is that you wind up with a GPX file. GPX is a standard interchange format for GPS marker data; you should be able to save to that format from whatever software comes with your GPS unit. The MapSource software that comes with my Garmin GPS can generate GPX files through its "Save As" menu item.
When you're downloading data from your GPS, you should take a moment to look for bogus data in your track logs. Whenever you move with your GPS unit turned off (even a short distance), it will generate a lot of noise when you first turn it on again. (For example, see this rather improbable traversal of 105 miles in northern Minnesota that I supposedly accomplished in 30 seconds.) HoudahGeo isn't able to sort out this errant data, so any photos taken shortly before or after turning on your GPS might get tagged with wildly incorrect locations. Take the time to use your GPS software to delete these incorrect data points.

Once you have a cleaned up GPX file, you're ready to go!
A Caution
I generally convert all of my camera raw files to DNG as part of my import workflow. I've only occasionally used HG with original RAW files, and the results were not quite what I had hoped. If possible, I recommend using PSD, JPEG, and DNG files instead; I've done thousands of these files successfully.
Geocoding in HoudahGeo
At this point, you should open both HoudahGeo and Lightroom. In Lightroom, choose one or more photos that you are ready to tag. Make sure to exclude virtual copies since HoudahGeo can't do anything with them. (To exclude virtual copies, click on the negative strip icon just just above the filmstrip at the bottom of the Library window as shown below.)
![]()
Unfortunately, any geocoding you do in HoudahGeo won't get propagated to existing virtual copies in your library. This is a known bug in Lightroom. Any virtual copies you create after geocoding will retain this information.
Drag these photos from Lightroom into HoudahGeo. After a brief pause, they should appear in your HoudahGeo project window. You may also be asked to specify the time zone for the camera's capture dates. Make sure to leave these same photos selected in Lightroom; you'll need this selection later in the process.
If you have a GPX file, now is the time to load it in to HoudahGeo. Click on the waypoint button (highlighted below).

Once you've done that, HoudahGeo should automatically match the track log data with your camera's capture time stamps. Assuming the camera and GPS were in sync (as described above), these should be fairly accurate, but I recommend that you always spot-check a few of the locations. Select a single photo in the list and click on the down-arrow icon just to the right of the waypoint button. HoudahGeo will bring up a map with the location it has assigned to this photo. Verify that this location is correct. If not, you may need to adjust the time zone or the camera clock error setting in HoudahGeo.
If you don't have a GPX file, or if the file has gaps (i.e. you were shooting with the GPS turned off or in an area with poor coverage), you can also use this map button (the rightmost button in the yellow group) to manually assign locations.
Once you are satisfied that your photos have accurate locations, it's time to save the changes back to the files. Click on the first button in the green tab (with the tooltip "Write EXIF Tags"). Be sure to click on the checkbox labeled "Work on original images." Otherwise, Lightroom won't see the changes you've made.

At this point, you're done in HoudahGeo. It's time to go back to Lightroom and make sure it sees the changes.
Bringing Lightroom Up to Date
Back in Lightroom, the same photos should still be selected.
The first thing you should do is select Save Metadata to File from the Metadata menu. Yes, I know this seems odd. It seems like it would overwrite the new metadata you just created in HoudahGeo, but it doesn't. This command causes Lightroom to update the XMP in the file, but not the EXIF data. Geocoding information is stored in EXIF. What you're doing here is ensuring that the XMP in the file reflects any changes you've made in Lightroom.
Even if you think your XMP is up to date, I still recommend that you perform this step. I have seen cases where keywords will be read back incorrectly, especially in JPEG files containing keywords with letters outside the US ASCII set (typically letters with accents). Saving will help prevent this problem.
Wait for this operation to finish, then select Read Metadata from File with the same photos still selected. Lightroom will now read back the same metadata you've just written to the files, and also pick up the updated EXIF metadata including the geocoding. You can able to see this new metadata if you have the Metadata panel set to the EXIF, Location, or All tag sets. If you like, you can verify the location by clicking on the right-arrow button to the right of the GPS location (highlighted below). This will bring up a map with the location.

Finally, I recommend that you assign a keyword to each photo that you've geotagged so you can keep track of what you've done and what hasn't yet been tagged. See my previous article on worklist keywords to help you remember what you have and haven't tagged. Here are the keywords I use in Lightroom:

Happy geocoding!
Comments
For those not angry using a command line tool and change a line of code: try gpsPhoto.pl (http://www.carto.net/projects/photoTools/gpsPhoto/). Works on Mac, Windows and Unices. DNG works as well after altering the proper line in the code (see "Currently supported image file formats" on the website to alter the specified line of code).
Posted by: Frank Meier | November 7, 2007 03:38 AM
Hi Eric,
If you're going to sync the camera to the GPS clock, it makes sense to get it as correct as possible, at least to within the track-point interval. I geoencode all my photos using a 1-second interval in my track logs, but even at that, I find that I can still easily move in that one second farther than the GPS accuracy limits. If my camera clock was a few seconds off, the possible skew would be all the larger (and all the more unacceptable to a geoencoding freak like me).
I use a GPS unit that writes tracklogs to an SD card, which means that I never have to worry about it running out of tracklog space. After having used a unit with a tiny 10,000-point limit, the freedom to record a track at 1-second intervals for days on end is wonderful.
(I wrote about that unit here: http://regex.info/blog/2007-08-09/539 )
I've been wishing for built-in geoencoding in Lightroom for ages. Any idea whether (when?) we might see that?
Posted by: Jeffrey Friedl | November 7, 2007 05:54 AM
Hi!
Be careful: Garmin saves only the "Active Log" with a time stamp. "Saved Logs" only contain the tracklog information - no time information!
I use RoboGeo as a windows application. It works fine with all sorts of pictures, including RAW-files.
Posted by: Armin Maerz | November 7, 2007 03:20 PM
A windows equivalent to Houdah Geo would be something like Breeze Systems Downloader Pro.
Posted by: Jauder Ho | November 8, 2007 01:12 PM
Hi Eric. Long time no see...
I use a variety of Garmin and Magellan GPSes for geocaching, hiking, and navigation. Some thoughts to go along with your excellent tutorial...
* MapSource doesn't like working in GPX as a native format. Catch yourself when you save that it doesn't try to put the data in their proprietary GDB (not debugger) format.
* There is a tool on the google code site called GPicSync that does a tolerably decent job of geocoding on DNGs and various RAW formats, given the price. It runs on Windows. It uses EXIFTool on the back-end to munge the source file. It even managed to work out the differences in the clock/TZ that I had between my camera and GPS unit.
* There is a code project called GPSBabel for converting file formats. It's been around for years and is quite stable.
Happy hiking!
Posted by: Eric Cloninger | November 10, 2007 08:19 AM
I'm also a fan of ROBOGeo and in fact never use track logs of GPX files and the like. My preferred method is to make a 'Waypoint' in my Garmin GPS (which is more accurate) at the location I take an image. Back on the computer my workflow is to initially convert all RAW (CR2) files to DNG using the stand alone Adobe DNG converter. Once the files are converted I open ROBOGeo, bring in all the DNG's, import the 'Waypoints' from the GPS and apply the relevant 'Waypoint' to the DNG file. Closing ROBOGeo I then open Lightroom and Import the DNG files as normal - the coordinates now show in the metadata panel as expected. With ROBOGeo you can also apply other metadata info such as copyright, artist etc etc meaning you don't then have to apply an Import preset in Lightroom with this data. This makes ROBOGeo a one stop shop and speeds up workflow as well.
Posted by: Alan Ingham | November 10, 2007 09:52 AM
I am using RoboGeo also. No problems tagging DNGs, and the tags show up in Lightroom where you can click and see the waypoint on a map.
If you sync your GPS (Garmin E-Trek,see RoboGeo site for other GPSs) and your camera clock, the pictures can be automatically tagged according to the time they were taken.
RoboGeo has mostly eliminated the tedious task of GeoTagging. It interfaces with Google Earth making it very easy to adjust the postion of tags.
I then create KMZ files which open in GE and show pictures when you click on the tag. You can also post the kmz to the Google Community or email it for others to see your pictures and where you took them.
Posted by: Eric Bier | November 11, 2007 01:29 PM
There are lots of tools that do this and some are free. The 800 pound gorilla and the one that has been around the longest is RoboGEO.
Posted by: Sean | November 12, 2007 12:16 AM
a (free) great app i'm using under win xp is gpicsync
http://code.google.com/p/gpicsync/
it works fine with raw from my 5d and the gps field in lightroom shows up
Posted by: kheops | November 13, 2007 03:43 AM
FYI, as Jeffrey Friedl noted, Garmin GPS units strip timestamps from saved tracklogs.
*BUT*, if you have a unit (like the 60csx) that can store tracks to the SD or microSD card, then those saved tracks *will* have timestamp and altitude information preserved.
Posted by: Peter Davis | November 15, 2007 05:01 PM
Another fine freeware program is GeoSetter (for Windows) to tag raw files. Lot of features...
www.geosetter.de
Posted by: Thomas | November 22, 2007 09:00 AM
Love the blog.
I have been looking everywhere - what is the photo import limit for Lightroom and how can I increase it. I shoot about 1500 photos at a wedding and would love to open them all in one folder.
Thanks
Posted by: Trevor Allen | January 18, 2008 12:53 PM
Awesome resource, thanks! I especiallly like the reference to gpicsync. I'll check it out. The following is a resource on ExifTool use:
http://professionalsnapshots.com/blog/?p=41
Posted by: Brian Reyman | January 18, 2008 07:06 PM
I prefer to use another application for geotagging my photos, it's called Geophoto. It has a cleaner interface and the new "match photos with GPS track" feature is really cool.
http://www.ovolab.com/geophoto/
Posted by: Raphael | April 26, 2008 01:20 AM