Monday, October 02, 2006

Geotagging Photos

location based services

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:
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.
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.
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.
Reset the tracklog.
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.
Take photographs whenever I feel like it.
Go home and upload the waypoints and tracklog from the GPS to my computer.
Upload the photographs from my camera.
Run RoboGEO to geotag the images and create a Google map.
Use GPS Visualizer to create an elevation profile for a hike.
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
Tags: exif, geotagging, google earth, google maps, gps, hiking, photography, review, software
Posted by Zack at September 30, 2006 12:30 AM in Hikes , Internet , Photography
Related Entries
Geotagging Photos

1 comment:

Twoflower... said...

Hi,
After going through many a forum, I'm turning to you for support. I bought myself a Nokia n95GB and would like to locate a free GPD program that allows me to create waypoints, that would allow me to have tracklogs stored for later retrieval, etc.
I don't need to have maps on this, a simple tracklog, a simple route, and waypoints would do.
can you help me in this regard.
my email addy is waruna@ascot.lk. would you mind letting me know, on this addy?
Thanks
Waruna