Wednesday, June 25, 2008

Adventures in GPS Mashups

My recent trip to China was the final push to purchase a GPS datalogger to create mashups maps of my photographs. I bought a QSTARZ Q1000P because it can log a 5Hz and broadcast via bluetooth to an eventual auto or laptop real-time mapping program. It comes with a reasonably capable program "Travel Recorder v4" which does most of what you would like with some glaring exceptions:

1. It is really slow. I'm convinced it reads every image into memory to make it's own thumbnails. It's lack of speed adversely impacted my workflow.

2. If you want to embed location information into multiple sets of images you can't deselect all images, you have to do it one-by-one. I found it was faster to quit the entire program and start over.

3. Travel Recorder can obtain GPS information from your datalogger but it can't import the same information from any of it's export formats, gpx, nmea, kml or plt. Seems like the same information to me.

4. Without an internet connection to Google Maps, it won't display any information about the tracks.

In my early testing, I would shoot less than dozen photos at a time. My workflow was to start "Travel Recorder", load in the GPS data, "Add a Folder" of photos, shift the time stamp on the photos to better align with the GPS data (found that my cameras do not have accurate clocks), and finally write the location information back into the JPEG EXIF metadata. The last two steps were slow. But once I started taking hundreds of photographs per set, this workflow became untenable.

In an attempt to speed things up, I tried JetPhoto and Robogeo. In China, I used an ASUS EEE PC900 which has a 1024x600 screen. JetPhoto is very finicky about it's screen and font setup and won't run at all on this travel laptop. The trial version of Robogeo puts random LARGE errors in the location information. Since after the first few days in China I didn't have Internet connectivity, I basically uninstalled both of them and resigned myself to "Travel Recorder."

Once back in the United States with a decent network connection I decided to look for a perl based solution and work on the Mashups. I picked perl because I'm familiar with the excellent ExifTool modules and I found gpsPhoto.pl which does almost everything I want and a little more. But first I'll describe my experiences with online Mashups.

Online Mashups Which Don't Work

Probably the origin of my interest in location mashups started with Flickr's implementation which I still think is very nice. Flickr produces a map based on 20 photos per strip and if you happen to be taking hundreds of photographs, the resulting area displayed in this map is pretty reasonable. Unfortunately, since Flickr is part of Yahoo, it used Yahoo Maps which are fine for the United States but just awful for China. The resolution of their China Maps are just terrible except for major cities like Beijing. My trip involved several temples in Shandong Province, such as the Confucius Temple and Cemetary in QuFu. The Yahoo Map for QuFu at highest resolution consists of the entire city of QuFu and the surrounding countryside.

I next tried gpsvisualizer which is pretty good for visualizing a track. Unfortunately, none of their automatic photo loading options from Flickr work and I just couldn't see uploading hundreds of MBs of photos to a site which probably wouldn't store them properly.

I tried the My Maps option in Google Maps which has some annoying features. If you upload a long track in kml format, for some reason Google breaks it up into short segments. So if you are trying to show your route from SFO to Beijing by air, you have to flip through 4-5 webpages. It also doesn't automatically put placemarks for your photos. You have to do this manually which is pretty tedious for hundreds of photos and the plugin which is supposed to pull photos from your Picasaweb album doesn't appear to be able to select just your photos, you get everyones.

Finally I tried SmugMaps since I use smugmug as my archival site. All photos displayed on SmugMaps need captions (OK with this), must be world accessible and searchable by Smugmug itself. But SmugMaps will only display the last 150 images uploaded and there are no other options. You can't define sets or create multiple maps. And finally, it updates very, very slowly. If you delete an image which used to be on the map, it loses all the later images until a few hours later when it happens to regenerate the index.

My next post will be about gpsphoto.pl and Google Earth.