Apart from letting you quickly edit and share photos (and always sitting, ready to go, in your pocket), the iPhone camera has one other great feature: It geotags every photo and video you shoot with the place you captured the imagery. You might not care about that now, but in the future when you wonder, “Where did I take that naked self-portrait?” or decide to take a look at your old vacation snaps, you’ll love geotagging.
Hell, half the time I use a map to find a photo — I can usually remember where I was better than when I was.
Lack of geotagging is perhaps the main reason I don’t take my regular camera out as often as I’d like, so I decided to do something about that. I’m using a combination of the iOS GeoTagr app on iPhone and iPad, plus a Fujifilm X100S camera and a Garmin EDGE 500 GPS bike computer.
Let’s take a look.
My goals were as follows:
- Easy geotagging of my X100S’s photos, without using a Mac. This is so I can take a vacation and leave the MacBook behind.
- Minimal battery draw. GPS sucks battery. I want a tracking app that doesn’t.
- Some way to use the FIT files generated by my EDGE 500 to tag pictures.
That’s pretty much it. After months of on-and-off research, I’ve settled on two apps. GeoTagr for iOS and GPSBabel on the Mac. This second one is necessary because there’s no way to transfer the EDGE 500 files to the iPad.
GeoTagr is a universal app that takes care of both track logging (recording the GPS data) and also applying it to your photos once imported into an iPad using the camera connection kit. Getting started is dead easy. You just buy the app ($5) and launch it on your iPhone.
Before anything else, sync your camera’s clock with your iPhone’s clock. GeoTagr has an on-screen clock to make this easy. Synced clocks are what enables geotagging – the app just checks where it was at the time the photo was taken and applies the location data.
Hit the start button and you’re off. If you’re taking a lot of pictures you can leave it set at the default settings. If you’ll only be snapping a few pics, you can decrease the frequency of the track recordings to increase your iPhone’s battery life, or you can switch away from GPS entirely and rely on the less accurate (and less power-hungry) Wi-Fi or cell-tower positioning.
Tip: To change the recording interval, long-tap on the GPS icon when recording to activate the pop-up setting list.
Each of these will give an estimate for battery life when using them. My iPhone battery is currently at 40 percent, and the estimates are as follows:
- 3 hours, 30 minutes on regular GPS
- 6 hours with GPS updating every 3 minutes
- 7 hours, 10 minutes with GPS updating every 5 minutes
- 14 hours, 20 minutes with GPS updating every 10 minutes
- 6 hours on Wi-Fi only
- 2 days, 9 hours on cell towers
The remaining battery estimate is also shown at the bottom of the screen.
That’s pretty much it for recording. There are more features packed into the app, but the in-app help is so good you can find everything you need to know pretty easily.
Tagging is the best part of GeoTagr. It takes its recorded GPS track and applies it to photos in your iOS photo library, or to pictures in a folder on your Mac, or on Dropbox, Flickr, SmugMug or Google+, and it does it better than any other app. In this example I’ll use photos imported with the camera connection kit, but the principle is the same with all services.
First, import those photos. Cull the crap if you like, or do that later. I like to view the photos in iPhoto for iPad as it’s easier to bulk-delete images, but it’s not necessary.
Next, open the GeoTagr app on both your iPad and your iPhone. Tracks that have been recorded on the iPhone show up on the iPad, as if by magic. You don’t even have to import the track – it just works.
Next, find your Last Import album in the Album Browser column on the right. This is where your camera connection kit-imported photos are sitting. Tap the album and GeoTagr will scan the photos, match them with the GPS log and show them to you on a map. This part is great. You can check that everything is correct, even before you apply the geolocation data, and you can also tap a photo do a quick-look-style zoom – useful if it’s unclear in the thumbnail view.
If everything looks good, go ahead and hit the big go button in the middle of the screen. This will copy the JPEGs to your camera roll (and optionally place them in another album to make finding them easier later) and add the location data. Copies are unavoidable as iOS won’t let any third-party apps modify photos in the Camera Roll in any way.
Once this is done, you can delete the originals and work with the newly tagged photos instead. All metadata from the originals is preserved, so as far as I can tell, you really don’t need the originals any more.
There’s one great side effect of working with imported files. iOS treats photos in the “Imported Photos” and “Last Import” folders as outside the Camera Roll. This means they are invisible to the auto-upload features of apps like Flickr. That sounds bad, but think about this: Your imported photos remain in cold storage until you do something with them, so you can take your time to review them, maybe deleting the rejects, and only when you process them with GeoTagr will they be saved to the general Camera Roll and made available for upload. I have Lightroom mobile set to auto-import photos from my iPad’s Camera Roll, so this is a great way to geotag them before they end up in Lightroom, and from there – via the cloud – in Lightroom on my Mac.
So far we’re working with JPEG files. GeoTagr can work with RAW photos too, but with a few changes. If you import RAW files into your iPad and use those, the GeoTagr will make JPEG versions of these pictures and tag and save those. In fact, if you’re shooting RAW you’re better off using Dropbox.
Dropbox tagging works just like iOS photo tagging. You browse to a Dropbox folder from within the GeoTagr app and from there you proceed as before. JPEGs will be downloaded and re-uploaded, but RAW files will just have XML sidecar files saved next to them, so that when you open the photos in an app like Lightroom or Aperture, that app will read the geodata and associate it with the relevant photo. This is typically much quicker, although if you’re working with RAW files you may as well just do the whole lot on your Mac anyway.
Tip: You can even use GeoTagr as a photo-viewing app. Just tap on any of your albums and view the photos on a map. It’s a lot easier to use than iOS’s Places view.
However you do this, I recommend tagging the photos as soon as possible after import, so that however you edit and share your pictures, they all have location data embedded from the start.
But what if you don’t want to run your iPhone’s battery down just to record a track? The first option is a big external battery. The second is to use your iPad instead. There’s no option to use Wi-Fi or cell tower-only data on the iPad, but the battery is way way bigger.
The third option is to use a GPS data logger and import the track data from there. GeoTagr lets you import GPX files and use them to tag photos.
External GPS trackers
When I take a trip or go on vacation, I take along my old Garmin EDGE 500 bike computer, and not just when I take my bike. It also works as a tough and reliable GPS track logger for walking in the city or the countryside. Better still, it lasts for a couple of days of almost constant use before you need to recharge it.
But there are two big problems: I can’t transfer the logs directly to my iPad, and the GPS files are in the FIT format, which is not as universal as the GPX format. The device has plenty of storage, so you could just let it track your entire trip and take care of things when you get back. Or you could buy a Bluetooth-enabled GPS device that can transfer files to iOS devices.
Or you could just suck it up and take a computer on your trip.
Whichever you choose, you’ll find something in the next section useful. We’re going to remove the FIT files from the EDGE, then we’re going to convert it to GPX and leave it in Dropbox, ready to be used by GeoTagr. And then we’re going to laugh at my pathetic attempts to automate the process.
Conversion with GPSBabel
Hook up the EDGE to a USB port and go make a coffee while it mounts. Yes, it takes forever. Then navigate to this folder.
In there you’ll find all your recorded activities, named by date. Now you’ll need to download GPSBabel, an app and command-line tool that converts between GPS file formats. First we’ll look at the GUI app. Go grab it.
Launch it and you’ll see the following bare-bones window:
Click “Format” popup and choose the FIT option — named Flexible and Interoperable Date Transfer (FIT) Activity file. Then use the “File Name(s)” button to launch the open dialog, and navigate to your file on the Garmin.
In the lower half of the window, choose GPX XML as the output format, click the “File Name” button to choose a destination, and then click OK. I chose GeoTagr’s Dropbox folder:
… as the destination because that’s where we’ll need the GPX file for the next step. Once the conversion is complete, you’ll see the terminal command that was used to do it right down there in the window.
Next, open up GeoTagr on your iPad and tap the little map icon at the top. Then tap “Import GPX” (next to the little Dropbox icon) and select the track you just saved in the last step.
Preview it. If you like it, tap to import. Now you can loop back to the first section of this article and tag your imported photos. Easy!
The only problem with this is that it requires a Mac. Then again, this works great at home too. I used to geotag my photos in Lightroom using the GPX file from within that app, but the workflow inside Lightroom is clunky as hell. Now I shoot almost exclusively in JPEG, I can tag my photos on my iPad (using the converted GPX file), and then add them to Lightroom mobile, whereupon they’ll be sucked over to my Mac.
Bonus: Automation failure
I have several ideas for automating the import and conversion of FIT files, but none of them worked out. The main gist is to have the FIT file auto-copied when I plug the EDGE 500 into my Mac, and then to use a shell script to convert that file to GPS.
My first thought was OS X Folder actions, but that imports the whole folder’s worth of FIT files every time.
My next attempt was with Hazel, the file-automation utility, and it almost works. I had it set to grab any new FIT files, then run a shell script to convert them. Amazingly, this works great, but for one thing: I can’t work out how to specify a filename for the saved GPX file.
That’s no problem if you only have one file to process, but if you have more, they’ll overwrite each other as they’re processed (BTW, the terminal command in there comes from the output from the GPSBabel app. Here it is if you want a copy):
gpsbabel -t -i garmin_fit -f $1 -o gpx -F /Users/charlie/Dropbox/GeoTagr GPX/gps.gpx
I tried to remedy this by adding another step to the Hazel workflow — to rename the file based on date — but this renamed all the original files on the EDGE 500 itself. If you have ever seen a cartoon scientist who panics when he realizes what he’s done and tries to yank out the plug to abort the operation, then you can easily picture me last night.
While googling around to find an answer, I came across references to a project called GeoTagging Automator Actions by an Austrian named Sigurd Buchberger. The project existed for a brief flash in 2007 before the site disappeared.
Sadly, not even archive.org has a copy of the 1.6MB action pack. This pack is a front end to GPSBAbel, and looks perfect. Here’s a screenshot grabbed back in those dark days:
Despite that, it’s still easy enough to convert a file once in a while by hand, and the advantages are worth the bother. First, every photo I ever take will appear on a map, and can be organized as such. Second, because I’m processing the pictures on my iPad before I send them to Lightroom, they all get sent off to Flickr mistercharlie automatically.
And third, my nerd itch gets scratched. There’s something neat about taking these nuts and bolts and screwing them together to make a smooth and easy system.
Then again, perhaps I’ll just add a battery pack to my iPhone and let GeoTagr run whenever I leave the house with a camera.