Geotagging Photos

Now that I have a GPS, I can have some fun with hiking and photography. The idea is to record my position on the GPS while hiking (i.e., the tracklog). This will provide me (and others) with a good record of different hikes. In addition, I can pinpoint the location where I took photographs and hence tag the photos with those coordinates (i.e., geotagging).

Here is the procedure I use for the purpose:

  1. Set the GPS tracklog setting. My GPS allows time, distance and auto. Time and distance options are for specifying the time or distance respectively after which the GPS position should be recorded in the tracklog. Auto mode tries to determine the optimal interval automatically, though Garmin does not provide any information about how it determines the optimum interval. The preferable mode is specifying the time interval. If you are walking, then a time interval of 6 seconds should give you maximum accuracy and in my case the tracklog won’t fill up to its maximum of 10,000 points for about 17 hours. This just needs to be decided on once.
  2. At the start of the hike, set the camera clock to the time from the GPS. You can either use UTC (popularly known as GMT) or your local time zone. I prefer to set the camera to UTC since then I don’t have to get into the hassle of changing camera time at the end of daylight savings or when I travel.
  3. Sometimes, I also like to take a photograph of the GPS screen with the time showing so that I can later compare the difference in their clocks.
  4. Reset the tracklog.
  5. Mark waypoints on the hike for features, like parking, trailhead, scenic view, waterfall, etc. Write some shorthand in the waypoint name on the GPS to remember the reason later.
  6. Take photographs whenever I feel like it.
  7. Go home and upload the waypoints and tracklog from the GPS to my computer.
  8. Upload the photographs from my camera.
  9. Run RoboGEO to geotag the images and create a Google map.
  10. Use GPS Visualizer to create an elevation profile for a hike.
  11. Upload everything to my web server.

One thing I also want to do is to create a database of the tracklogs of trails which I hike. For this purpose, I will be providing you the GPX file for my hikes here. However, it would probably be a good idea to upload them to public repositories of trails. Does anyone know any such good sites?

Before using this technique on a hike, I decided to test it with a walk locally. I set my GPS tracklog setting to “auto”. With this setting the average time between tracklog points was 12 seconds but there was one interval of 2minutes and 57seconds, probably when I was sitting.

I tried several software solutions for geotagging and creating maps with the photos. Here is my review of them.

TopoFusion

Rich Owings told me about TopoFusion which is a great software with lots of features. But their PhotoFusion is not up to par. It is super-easy to use. All you do is load the tracklog either directly from your GPS or from a GPX file on your computer, point PhotoFusion to the folder where the photographs are and voila!

However, it does not output the coordinates of the photo locations in any form (EXIF data of the images or as waypoints in a GPX file). Hence, we are limited to its own output which shows the locations on USGS aerial and topographic maps with camera icons.

Another problem is that the camera icons do not stand out and can be difficult to spot in the web page output. We also have no options to set the size of the map image for the web output, so we have to set the size of the main TopoFusion window to whatever size we want the final map image to be.

if I provide an output folder in the options for PhotoFusion, thumbnails and all other files are created there. But the original photos are not copied. However the link to full photos in the web page is to the output directory, so those links don’t work without copying the original images yourself.

Also, thumbnails are created but you have to specify both width and height and so there might be a black band if the aspect ratio is not correct. You can see that in the one landspace format thumbnail in my test scenario.

Finally, the output of PhotoFusion is a static map image and the user cannot pan, zoom out or do other interesting things with the map like you can with Google Maps.

One good thing about it is that the output includes an elevation profile and other useful info (like distance travelled etc.)

Here is my test of TopoFusion.

WWMX and GPS Visualizer

Let’s now look at some free solutions. While there are several free solutions, none of them are as easy to use or as complete for this task. One has to use multiple software: one for geotagging the photos and another for creating maps.

The best solution for the map creation is GPS Visualizer, an online tool that does almost anything you could think of.

But before using that, I needed to geotag the photos using my tracklog. I checked two programs for that.

WWMX Location Stamper is a Windows-based application which is simple to use but does not have many features. For example, the camera must be set to the same time as your computer and you cannot specify any difference in the clocks of the GPS and your camera. It needs a GPX file with a tracklog as input unless you use WWMX TrackDownload which can get the tracklog directly from a GPS. It shows the track and photo locations on a map within the application (I think the map requires you to be connected to the Internet) and then stores the location info in the image EXIF.

Another program for geotagging is gpsPhoto.pl, a command-line Perl tool to extract location info from a tracklog and write to EXIF. It has a lot of options. However, it is command-line and requires Perl installation on your computer. Also, you can’t check the results in a map. One pro for this tool is that it is OS-independent.

Once I had the images with their coordinates in the EXIF info, I had to get it in a format that would be acceptable for GPS Visualizer. For the tracklog, I could use the GPX format, but for the photo information, I needed CSV as described here and here. I wrote a short Perl script to do that using Image::ExifTool.

Now comes the time to get GPS Visualizer’s Google Maps form to generate the map. If you are going to fill out the same form again and again, it helps to use the Firefox extension Form Saver to store the form data so you don’t have to select the same options every time.

And finally using the GPX file, I created an elevation profile of my walk.

Here is the page with all the results.

So you might be thinking why go through all this hassle. First, it is free. Second, GSP Visualizer has lots of options and can do almost anything: Google Maps, Google Earth, SVG or JPEG maps, topographic, aerial, street maps, all kinds of profile graphs, etc. And you can control the presentation in detail. Take a look at the map linked to above. In addition to the Google maps, it also has USGS topographic and aerial maps as well as some imagery from NASA.

The downside is the amount fo time/effort used to create a map every time. Also, I would be dependent on another website to create and display my maps.

I do plan to use GPS Visualizer to create elevation profiles and other special maps, but it is too much work for regular stuff.

RoboGEO

RoboGEO looks good and does lots of stuff related to geotagging. You can set the location of your photos manually using Google Earth, or set it using GPS waypoints or use the tracklog. It stores the location info in the EXIF fields or can even stamp the location on the image itself. The output can also be in several formats: Google Maps, Google Earth, GPX/CSV, Flickr, ESRI shapefiles, etc.

For Google maps, the output is in the form of a web page, but it also creates an XML file with all the data in case you want to use XSLT to create your own web page. There is also an option for string substitutions in the generated web files if you want to customize. These options are not as good as having a templating system for web page generation, but they do provide ways to customize the web page code.

I used the string substitution option to add USGS topographic and aerial maps to my map pages. I got the required code to do this from GPS Visualizer and Acme Mapper.

The demo version of RoboGEO is sort-of crippleware as it adds big random error to photo locations and tracklog points. However, I liked it enough after trying it out that I immediately bought it.

Another gripe I have with RoboGEO is that it stores output files in the Program Files folder.

One feature I would really like to see in RoboGEO is to be able to put the waypoints in my GPX files on the map as well. This would help by pointing out parking, trailhead, scenic view, waterfalls, or other features on a hike on the map. I emailed Tim Helton about this and he’s agreed to put it on his to-do list.

Before I show you the map from my test created using RoboGEO, if you are overwhelmed with signing up for a Google Maps API key etc., you can simply create a Google Earth KMZ file embedded with the photographs using RoboGEO and put it online (example). Then just enter the URL of this file in Google Maps like this and voila!



Map

Related Reading

Related Posts

28 Comments.

  1. Zack: thanx for the informations

  2. Too long a writeup for me. I am an old man can’t walk that much to trace the lines. Hehehehehe

    But is this device not for old men because they suffer from amnesia?

  3. omgosh. I thought i was cool for having a gps. Wait, i had a gps before you did. Did i create a monster?

  4. Shuaib: You are welcome.

    Dad: It is indeed very useful as I do forget after some time which photograph was taken where. This was especially true in the old days when I had a film camera.

    wayfarer: I am cool like that ;-). But unfortunately due to lack of spousal interest I am not doing much geocaching at all. We need to do something about that.

  5. You have studied engineering for far too long; you are growing procedures like an untended garden grows weeds!

  6. Nice writeup! Just wondering, what type of handheld GPS are you using?

  7. Great write-up, very helpful. I’m considering the WWMX and GPS Visualizer combo. Could you please share your Perl script that pulls the EXIF info from the images, and writes it to a GPSVisualier supported CSV file? I should probably sit down and play with the ExifTool until I can re-create the script myself, but if you posted you script, it would likely save me a lot of playing aorund!

    Thanks much.

  8. Just another quick point, if you have an time offset between your GPSr and your digital cameras, you can adjust the time-stamps in the exif headers of the JPEGs. To do this, load the pictures into WMMX as normal, select all of the thumbnails, right click on the selected thumb-nails, and select [Adjust Timestamps]. You can then add or subtract to the JPEGs timestamps based on the time difference from your GPSr.

  9. GaryC: Thanks.

    Here is the Perl script exif2csv.pl. There are no comments but it should be simple to follow.

  10. کمال کا آئیڈیا ہے۔ زبردست۔

  11. آصف: شکریہ۔

  12. What a great posting – just exactly what I was looking for

  13. Hi,
    I’d be interested to hear what you thought of http://www.cleantag.com – with just a few clicks save geotags to flickr.com or faces.com

    Cleantag allows you to add mapping geotag GPS coordinates easily to photos with just one click and it is free.

    please drop me a line if you want some more info – there is a demo video up at http://www.cleantag.com too.

  14. Speaking about “geotagging”: do you know locr?

    locr offers the ideal solution and makes geotagging exceptionally easy. locr uses GoogleMaps with detailed maps and high-resolution satellite images. To geotag your photos just enter address, let locr search, fine-tune the marker, accept position, and done! If you don’t know the exact address simply use drag&drop to set the position.

    For automatic geotagging you need a datalog GPS receiver in additon to your digital camera. The GPS receiver data and the digital camera data is then automatically linked together by the locr software. All information will be written into the EXIF header.

    Use the “Show in Google Earth” button to view your photos in Google Earth.

    With locr you can upload photos with GPS information in them without any further settings. In the standard view, locr shows the photo itself, plus the place it was taken. If you want to know more about the place where the photo was taken, just have at look at the Wikipedia articles which are also automatically assigned to the picture.

    Have a look at http://www.locr.com.

  15. Jonathan: Thanks for letting me know about CleanTag. How does it get the location info from my GPX file?

    Tom: Thanks, locr looks interesting and useful.

  16. Hi,
    GPSed Photo Take’n’Pin is a simple and free Windows-based software that adds
    location coordinates (geotags) to your photos. Try it out: http://photo.gpsed.com.
    Software is really easy to use:
    Just choose the folder with your photos, import GPS track from the GPS receiver and Take’n’Pin will add latitude and longitude into each photo. You can open geotagged photos in Google Earth in one click just from the application.

  17. GPSed isn’t easy to use… it required online account registration, uploading of files, and it doesn’t support NMEA GPS log formats.

  18. I made a cool little tool to easily get those track files into Google Maps (Free of Course) Check it out.

    http://debriyn.com/track.php

  19. Hey Jonathan I’m using different site. it has all the things you talked about and some more little things you should check. http://www.trekinu.com

  20. http://wiki.openstreetmap.org/wiki/Photo_mapping

    For geotagging photos on the run, and while you’re at it, map the world :-)

  21. Thanks, guys, for the links.

  22. Now geotagging is more easy. I use a Easytag GPS (www.e-geotag.com) which can geotag into the photos when pressing the shuttle and it can also log the trails of every my movement. I use Jetphotosoftware as an uploading tools which can upload my photos to Google Earth, Google Map, Flickr and etc. It is quite easy to use.

  23. You are incorrect about Topofusion/Photofusion. You have the option to generate a static imagemap if you want (but you don’t have to), but the software does geotag the photos by putting coordinates in the exif data and by creating waypoints in your gps file for use elsewhere. You can export that gps file into many different formats, and you have the ability to use some of those formats in Google Maps or Google Earth or elsewhere.

  24. @mtbikernate
    I wrote this review more than 3 years ago and as my topofusion test shows, that was the only available option in Topofusion then. Things might have changed now.

  25. good post

  26. Hi friends, I just finish of develop http://www.whereisthepicture.com and i think that maybe can be interesting for you.

    You can upload a picture with gps information, like photos from iphone, smartphones, etc and then the system show you de position where was maked the picture.

    At the moment is only a version beta, but I hope you enjoy it!

    Regards,
    Paco Fernandez