If you’ve browsed through any of my recent galleries you will probably have noticed a little globe icon appear – when you click on this icon you’ll be able to see all of the photographs in the gallery that you’re browsing as markers on a Google map. If you click on one of these markers a little bubble will appear with a thumbnail, and if you click on the thumbnail, you’ll be taken to a full-sized version of the image. Clever stuff indeed! Well, it took a fair bit of work to set that up, and currently requires a certain amount of painstaking “geo-tagging” each time I upload a new gallery. I’m going to talk a little bit about how I did it, and why I think it’s important.
Let’s start with how it’s done, and we’ll start right from the beginning. If you’re familiar with navigation, mapping or GPS you’ll be aware that your position on the earth can be accurately described with 3 numbers – a latitude, longitude and altitude. For those that don’t know; latitude and longitude are basically just grid references. Latitude measures how far North or South of the equator you are, with positive values being North of the equator and negative values being South. Longitude measures how far East or West of the “Prime Meridian” you are – the Prime Meridian is the line of longitude which runs through Grenwich, London with positive values for East and negative values for West. Altitude is a simple measurement of meters above sealevel.
The process of geo-tagging is simply a case of attaching latitude, longitude and altitude values to each of the images you take. Many modern camera-phones include GPS receivers and will actually automatically geo-tag every image that you take – this would be a great time-saver, except for the fact that camera-phones are worthless for serious photography. It is only very recently that Digital SLRs have started to get the capability to do this geo-tagging automatically. Indeed, this is an option with my Canon EOS 40D. The catch? You need to buy the ‘Wifi grip’ (WFT-E3) – this is essentially a bulky attachment to the camera which allows you to download photos (and use remote shooting) via Wifi instead of a USB cable. I’m sure that’s very useful for some people, but it’s completely pointless for me. Furthermore, normally when you attach a grip like this to the camera it has a couple of additional battery compartments in it so that you can extend your camera’s battery life – This grip does have an additional battery compartment, but it doesn’t extend the camera’s life because that additional battery is used solely for powering the grip!

EOS 40D with Wifi grip
In other words, I have absolutely no need for this grip at all – except for one killer feature; It has a USB host socket on it. This is different to the normal USB socket on the camera – a USB host socket allows the camera to function as a computer and have another USB device attached to it. This allows you to connect the camera directly to a removable hard disk and avoid the limitations of a CompactFlash card. Not only this, but it allows you to attach a USB GPS device and have the camera automatically geo-tag each photo as you take it. The downside is that you have to carry around a camera that’s significantly bigger and heavier, you have to charge two camera batteries and potentially the batteries in a USB GPS device as well, and you have a USB GPS device dangling on the end of a cable from your camera as you walk around. Hardly ideal! Not cheap either!
Anyway, that’s not how I’ve achieved the geo-tagging of my images; I can’t afford the wifi grip. So how do I do it? Well, it’s a combination of two approaches. I’ve written a little utility using the Google Maps API which allows me to drag a marker around on a map – it’s very much like having a physical map in front of you and sticking a pin in it. The API will allow you to read the latitude and longitude values of this marker, and I save them to my database. Imagine having a map in front of you and 100 photos and 100 pins and having to place a pin in the map for each photo. As you can probably imagine this is a very time-consuming process. It’s made a bit easier if you do the photos in the order that they were taken, and you know the area you’re photographing very well and have a good idea of the route you walked when you took the photos. Even so, it takes literally hours. I went through this process for many of my older galleries when I set up the geo-location feature and I’m now thoroughly sick of doing it.
But there is a better way. Remember I mentioned that modern phones have a GPS device built-in to them and will automatically tag any photos you take on them. Well, that’s useless in itself, but you can leverage that built-in GPS device to make the geo-tagging process a lot quicker. I have a Windows Mobile-based smartphone that includes a GPS receiver, and I use a piece of software for Windows Mobile called GPSToday to produce a log of my GPS co-ordinates every few seconds. This produces a CSV file which you can open in Excel (or OpenOffice in my case) and it looks something like this:
| time |
latitude |
longitude |
altitude (meters) |
speed (mph) |
heading |
| 07-15-2009 20:42:49 |
50.761811 |
0.134216 |
119 |
0 |
17 |
| 07-15-2009 20:43:03 |
50.761818 |
0.134151 |
119 |
3 |
292 |
| 07-15-2009 20:43:17 |
50.761938 |
0.133826 |
112 |
4 |
293 |
| 07-15-2009 20:43:31 |
50.762053 |
0.133505 |
108 |
3 |
307 |
| 07-15-2009 20:43:45 |
50.762170 |
0.133196 |
108 |
4 |
303 |
It helps if you ensure the clock on your phone and the clock on your camera are in close sync – but if they are, it’s fairly straight-forward to look at the time you took the photograph, find the nearest log entry in the GPS log and then read the latitude and longitude from there. It’s still a fairly time-consuming process, but it requires a lot less thinking and is much more accurate than the pin-the-tail-on-the-donkey technique I was using. However, there are times when I forget to start GPSToday on my phone, and GPSToday itself can be a little temperamental and is prone to stopping recording for no apparent reason. That might be because I’m not using it right – its user-interface seems to have been designed by someone who has never used either a phone or a computer before. This does mean you have to keep looking at your phone to check it’s still recording. There have been a number of occasions when I’ve had to revert to manually picking out the locations.
Incidentally, I did notice that the altitude figures given by the GPS device in my phone are not very accurate at all – in fact they’re so inaccurate they’re virtually meaningless and so as to avoid confusion I’ve deliberately left them out of my geo-tags. It’s not necessary to have altitude data in order to place a marker on a map anyway because maps are 2-dimensional so it’s not really an issue, although it would have been nice to plot the changes in the shape of the land at Cuckmere Haven in full 3d, this isn’t really feasible with the current accuracy of my GPS device. Perhaps with the new European Galileo sat-nav network we will get better accuracy, if it ever makes it off the ground.
Once I’ve entered the latitudes and longitudes, either by copying them from the GPS log, or by picking them manually on a Google map, my program saves them into a MySQL database; I store the data in a database to allow me to quickly generate the Google maps that you see on the website, but it’s also important to store this data in the EXIF tags. What are EXIF tags you might ask? Well, each time you take an image with a digital camera, inside that image file is stored all sorts of additional data – things like the time the picture was taken and the settings that were used to take the picture (aperture, shutter speed, ISO rating etc.). This data is stored in a special part of the JPEG file called the EXIF data, and the EXIF specification has fields for latitude and longitude. Without the wifi grip and a USB GPS device my camera doesn’t fill these fields, so my geo-tagging program has to add them to each image. This allows me to upload the photos to location-aware services such as Panoramio without having to repeat the geo-tagging process a second time – Panoramio simply reads the location data directly from the JPEG files that I upload.
So that covers how I do the geo-tagging, but why do I think it’s so important? Well, with every click of the shutter you are creating a documentary record of what you see. The documentary photographer’s task is to remain true to reality – to capture reality and then create a permanent record of it for all to see. That’s what my website is about – I would consider myself a documentary photographer and my website is a part of that documentation. I consider it my duty to record the changing world I see around me and make sure that historical record is available for future generations. If you like; I’m trying to create history. As historical data, my photographs are a hell of a lot more useful if they can be tied to a specific location at a specific point in time. For me, geo-tagging is about increasing the value of my photographs as a historical record. This is particularly true for my project on Cuckmere Haven, where in 100 years time a lot of the landscape that I’m photographing may not exist anymore.