
Digital Photography - Geocoding your images
Geotagging a photo is the practice of embedding GPS coordinates in the EXIF data of a digital photograph. This information can be used in online applications, like Panoramio, Google Earth, Picassa etc to indicate where the image was taken.
Automatic geocoding
Some digital cameras and camera phones support GPS. The GPS receiver can be built into the camera, as in Nikon Coolpix P6000 or Ricoh Caplio 500SE or can be a separate device connected by cable or inserted into the memory card slot or flash shoe. If the device provides full geocoding support, a photo's relevant GPS data is automatically stored in the photo's EXIF information when the photo is taken. This is the easiest and most precise method of geocoding an image, if a good signal is achieved at the time of taking the photo.
GPS-ready cameras communicating with connectible geotaggers are:
- Nikon D5000
- Nikon D90
- Nikon D200
- Nikon D300
- Nikon D300s
- Nikon D700
- Nikon D2x
- Nikon D2H
- Nikon D3
- Nikon D3x
Nikon uses the remote control socket as the GPS interface. In 2006 manufacturers like Dawntech and Solmeta started to develop Geotagger for Nikon adding unique features like track loggers, electronic compass and indoor-functions. Since 2009 Nikon sells its own Geotagger GP-1.
- Canon 40D
- Canon 50D
- Canon 1D Mark III
- Canon 1D Mark IV
- Canon 1Ds Mark III
- Canon 5D Mark II
Canon uses the USB socket on the wireless file transmitter unit (WTF-E2 and the newer model WTF-E2 Mark II) as the GPS interface. Dawntech is the sole manufacturer to produce GPS receivers made especially for Canon DSLR. The wireless file transmitter unit is ludicrously expensive (800 USD/Euro). If the sole reason for you to buy this wireless file transmitter unit is geocoding your images then read on as I'll describe a much cheaper manual way of geocoding your images.
Manual geocoding
Geocoding information can also be added to photos even if no GPS device was present when the photo was taken, for example via the Exif specification which has fields for longitude/latitude. You can fill these fields manually using an application that can edit Exif information but this would mean that you'd have to know the exact longitude and latitude where the image was made. Another way is to use a slightly more sophisticated application which enables you to select at a point on a (Google) map. For both these methods a lot of free tools are available on the Internet, but as both these methods are time consuming and not very accurate I won't discuss them further.
My method of geocoding
My method of geocoding is based on using a GPS unit that can record tracks. The GPS unit which I use is a Garmin 60CSx, but any GPS unit that can record tracks will basically do. The basic steps that I ta
- Synchronise the time on your camera and GPS unit
- Setup your GPS unit in such a way that it records tracks
- Keep the GPS unit turned on all the time during a trip so that all the tracks are recorded
- At the end of the trip download all the tracks to the PC
- Combine all the separate tracks into one track file
- Use a geocoding application to geocode your images
All these steps are described in detail in the next paragraphs.
Synchronising the time on your camera and GPS unit
The first thing to do is to make sure that the time of your camera(s) and your GPS unit are synchronised. To accomplish this set the cameras(s) to the GPS unit time minus 15 seconds (GPS time was zero at 0h 6-Jan-1980 and since it is not perturbed by leap seconds GPS is now ahead of UTC by 15 seconds).
Setting up the GPS unit to record tracks
When I travel through Africa I use a Garmin 60CSx GPS unit with a 2GB micro-SD installed. I use this GPS for navigation using the Tracks4Africa maps and I use the unit to record all my tracks.A track is like a trail of breadcrumbs; it records where you have been. The Garmin GPSMap 60CSx keeps three kinds of tracks: active, saved, and stored.
- Active tracks have elevation and timestamps. They are the most 10,000 most recently recorded position points. Active tracks will either overwrite the oldest points if set to wrap or will stop recording and display a message if you set it to fill.
- Saved tracks are created manually by the user from the keypad. Saved tracks are 'compressed' by the unit to have under 500 trackpoints and have neither elevation nor timestamps and have fewer stored trackpoints.
- Optionally, and this is the way my unit is set up, the unit can write tracks to the removable SD memory card as GPX files. These files are immune from the limit of 10,000 points, the settings mentioned above and the compression of saved tracks so they always have timestamps and alttudes. These files can be read by your computer, but the GPS itself will never display them.
Because I have my unit set up to write tracks to the removable SD memory card as GPX files all the tracks are recorded while the unit is turned on. My 2GB removable SD memory card can hold an almost infinite amount of tracks as if you have the unit set to record trackpoints at the maximum rate of 1 per second and are logging around the clock, it will record about 10MB of track data per day. I'd advise to set the unit to record a trackpoint every second as most GPS units will otherwise not record data if you're standing still. In wildlife photography it's pretty common to stay in the same location for a long time as you might for instance be staking out a waterhole. Most GPS units will only record data if you're moving to preserve track memory, and although this is a good thing memorywise it's counter productive for geocoding. All geocoding applications will check the date and time in the EXIF information of an image and will search track files for a trackpoint that corresponds to this date and time. All geocoding applications will use a user-defined tolerance value for the time but if you've been standing still for too long, and if no trackpoints have been recorded during that time, even the user-defined tolerance value will not help you to get a reliable GPS location for the image. This is why it is my recommendation to set the GPS unit to record a trackpoint every second (provided that you have sufficient memory in your GPS unit).
Download the tracks to the PC
At the end of each trip I download the GPX files from my GPS unit to my PC. For all different GPS unit brands and models the procedure of copying the tracks to the PC will be different. The method I descibe here is valid for the Garmin 60CSx. Consult your manual if you're using a different brand or model.
For the Garmin 60CSx there are two ways to download tracks to the PC. The first way is to use the MapSource application which comes with all the Garmin GPS units and the second way is to copy the track files from the SD card using the GPS unit's USB mass storage mode. I use the latter method as it is the fastest way to copy the tracks. To set teh GPS unit to USB Mass Storage use the GPS setup page. After enabling the USB mode the data card in the microSD slot appears as a drive letter on your computer and you can use this to transfer track logs that have been saved on the data card to your PC.
Combine all the separate tracks into one track file
For each day that tracks have been recorded a separate GPX file has been created. I use the MapSource application which comes with all the Garmin GPS units to combine all the separate GPX files into one GPX file that holds all of my tracks from the trip. MapSource unfortunately doesn't offer an easy method to combine GPX files so the way I do this is the following:
- Open an instance of MapSource and open the first GPX file
- Select the tracks tab
- Open another instance of MapSource and open the next GPX file
- Select all the tracks in the second MapSource instance and copy them using CTRL-C
- Select the first MapSource instance and press CTRL-V to paste the tracks
- Repeat the process of copying and pasting the tracks for all GPX files
- Save the combined tracks in the first MapSource instance to a new GPX file
If anybody knows a quicker way to combine the separate GPX files into one new GPX file please let me know.
Geocode your images
The combined tracks in the new GPX file serve as input for the geocoding application. The application which I use for geocoding my JPEG and TIFF images is a freeware application called GPicSync.
GPicSync takes one or more GPX format or NMEA format files and reads all the waypoints from these specified files. It then scans the folder you specified for image files and uses the timestamp contained in the EXIF information of each image to search for a corresponding trackpoint in the list of all trackpoint from the GPX or NMEA file. The best match, accounting for timezone shifts and a user-defined tolerance value, is then written to the EXIF header of the image. The EXIF location information which GPicSync inserts can then be used with any 'geocode aware' application like Picasa, Google Earth, Flickr, loc.alize.us, etc.
GPicSync supports JPEG files and a number of RAW file formats. RAW formats which should work for geocoding are:
- Canon CR2 and CRW
- Nikon NEF
- Pentax PEF
- Digital Negative DNG
- Samsung and Fuji RAWs
- From version 1.22 of GPicSync:
- Panasonic RAW
- Olympus ORF
- Minolta MRW
- Mamiya Electronic Format MEF
If the RAW format of your particular camera is not supported then you can use a selection of freeware tools to convert your RAW file to an Adobe Digital Negative (DNG) file and then geocode the DNG files. The conversion from RAW to DNG is lossless and DNG is supported by all major tools used to convert RAW to TIFF/JPEG format files.
Features of GPicSync include:
- automatically geocode your photos (in the EXIF header)
- use a GPS tracklog in the GPX format or NMEA format (multiple selection possible)
- Support elevation data if present in the tracklog
- create a Google Earth KML file to directly visualize the geocoded photos and track in Google Earth
- create a Google Maps file to publish your pictures and track on the web (more)
- Automatically associate audio or video files in Google Earth and Google Maps
- create a Google Earth KMZ file (containing your geolocalized pictures and tracklog).
- add additional geonames and 'geotagged' metadata (for automatic tagging in Flickr for example) and create an automatic IPTC caption
- manually write latitude/longitude in a picture EXIF or a selection of photos
- handy tools integrated (Time correction tool, EXIF reader, GPX inspector, rename pictures with date/location)
- supports Jpeg pictures and main RAW files format (more)
GPicSync 1.28 screenshot

Last Updated (Monday, 29 March 2010 20:20)

