Friday 2 January 2009

Mapping photos with GPS and Google Earth

Since I bought my first digital cameras four years ago, there has been widespread development in the availability of virtual globe software which lets us do many useful geographically orientated things, such as mapping points of interest and the locations of specific photographs of scenery. There are two specific services which are integrated with Google Earth for photolocation. These are Picasaweb and Panoramio. At this stage I have stuck with Picasaweb due to my dislike of having to duplicate effort in Panoramio, and its lack of sophisticated upload tools like the Picasa client software that Google produces. However, Panoramio pictures can be displayed as an integral layer in Google Earth. I hope that Google will introduce a similar level of integration of Picasaweb for those of us who prefer its capabilities so that we can submit photos directly from Picasaweb in our existing and new albums.
The main subject of this post is how to map photos using Google Earth and Picasa. In the beginning of 2008 I created my first mapped albums in Picasaweb, as the client software features the ability to geotag individual pictures. It does this by using Google Earth as a user interface to find the coordinates of a specific place which the user nominates as a photo location, and then using the EXIF standard it adds coordinate information to an existing JPEG photo. As my albums can incorporate up to several hundred pictures each, it takes a lot of time and effort to locate each individual picture. As well as that, you have to be able to work out where each picture was taken. On the train trips that I did last January, and some other trips that I have created other albums for, because my knowledge of the routes was very good, I could work this out without too much trouble. But on a recent trip I did on the Waipara river, I couldn’t work out where everything went because I didn’t know the area.
The easiest way to get around this problem is to batch synchronise data from a GPS unit with photos. A $200 handheld GPS from Garmin will automatically create a track of locations over a period of time while it is turned on. This track can be downloaded to a PC and then using appropriate software the timestamps of the GPS trackpoints can be synchronised to specific pictures using the timestamps that your digital camera embeds into each picture that it takes. The software can then save this information in a file that can be imported into Google Earth to display the photomap.
A recent trip to Quail Island was the first trial of this system for me. The only real issues encountered were technical limitations in Google Maps and Google Earth, and the GPS’s batteries going flat. My equipment was:
  • Garmin eTrex H handheld GPS. This is a high sensitivity, basic unit at the lower end of the price and spec range. It is a rugged water-resistant design, and the high sensitivity means it is better to use indoors (such as inside a moving vehicle) when environmental conditions make it more difficult to receive the faint signals from the GPS satellites.
  • Garmin serial PC data cable. This connects the GPS to the serial port of a PC. Your computer will need to have a 9 pin serial port (the old RS232 style). A lot of modern computers do not have these ports and you might also need to purchase a USB to serial adapter at extra cost if your PC is in this category. Garmin still provides only the RS232 interface on its most recent lower end units. This is a lot slower than USB, but it works satisfactorily and the cable can be connected and disconnected on the fly.
  • GPS download and geotagging software. You do not need to buy this from your GPS manufacturer, as typically like the data cables, such products are unnecessarily expensive. A lot of GPSs are supported by third party products. I used the free EasyGPS software to download the tracks and geotag, which it does by comparing timestamps.
  • A geotagging compatible web album or software system that can display your tracks and photos automatically in their correct locations on a virtual globe. I use Picasaweb, Google Earth and Google Maps as needed.
First thing is to get your GPS set up. The eTrex automatically records the track by default as long as it is switched on. Make sure the batteries have enough juice in them to last for the whole of your trip. Secondly, ensure that the clock(s) on your camera(s) are very accurately set. Get a time signal from the radio (or somewhere) and sync the clocks to that. The more accurate these are, the more accurate will be the locations of photos that can be determined by the geotagging software. Then, on the day of your trip, just turn on the GPS before your trip starts, and take your photos. Simple :)
Once you’ve returned, download photos to your PC and the track data from the GPS. Then, select the photos you want and carry out any additional processing needed. I use IrfanView to batch resize my photos and add a copyright caption which also shows the date and time the picture was taken. For public web display I resize to 960x720. The next step is to geotag. In EasyGPS you simply tell it to add photos to the correct track. This causes it to write the coordinates of each photo directly into its EXIF headers, by matching GPS and photo timestamps. I had no problems with this as I synched my cameras’ clocks within 10 seconds of GMT. The GPS gets its time automatically, of course. You just need to make sure it knows what your timezone is so it can adjust the timestamp automatically to your local time.
Once finished geotagging in EasyGPS, save the track as a GPX file for use with other software. GPX is the open GPS XML format for exchanging GPS data. My next step is to open the GPX file in Google Earth, which the current free edition has the ability to do. This lets me edit the tracks to remove parts that are irrelevant to my map. I discarded the picture information from the GPX as it is static to the hard drive locations of my PC and therefore not much use on the internet. Using Picasa client (version 2.7 is recommended), I then captioned each of the photos on my PC and then bulk uploaded them to a new Picasa Web Album of my choice. This causes Picasaweb to automatically create a map of the locations of all the photos of the album. I can then download this to my PC (using the “View in Google Earth” link) and open it in GE. I then combined the photo map from Picasaweb with the GPS tracks that I imported from my GPS to create the final map of my trip. That trip was then imported to Google Maps to allow it to be embedded for display in a blog posting. All of the thumbnails on this map will automatically link to Picasaweb to display the photo from my web album.