Happy Camel

About Happy Camel

Happy Camel is intended to combine your digital camera with your GPS device. If you feed it a list of digital photos and a tracklog, it figures out where these images were taken. It can embed this position in the EXIF-data of your photos and create a .KMZ file for Google Earth or Google Maps displaying your photos at the right positions along the tracklog. See my search for the "Rust wat"-cache (view in Google Maps) or this hike on Mt. San Jacinto (view in Google Maps) as examples. Happy Camel is distributed under the GNU General Public License.


17/04/2008, v1-beta3: That photo in the sky

Two words: Flickr support. That, and quite a lot of bugfixes, tweaks to make the camel run faster (dare we say: multicore support?), an easier mechanism for saving settings (the -s switch), and more fault tolerance.

08/12/2007, v1-beta2: The Camel rides again

It's been a very long time, but here's finally a new releases with some cool new features and a ton of bugfixes, both major an minor. Among the new features are a caching mechanism for the Geonames.org service which dramatically reduces the number of calls, the ability to read compressed tracklogs and the option to write waypoints in the KMZ file. Some important bug fixes are putting photo's on the proper side of the Earth (duh!), proper interpolation (duh!), and the ability to really use multiple tracklogs (duh!). Thanks for all the people who sent their comments and bugfixes!

11/04/2007, v1-beta1: Camels can run too

This first beta release is mainly focused on speedup improvements. KMZ-file writing is now much faster because the right resizing method in used. Image metadata can now natively be read and written (using the --faster switch), but might damage your photographs, so it's disabled by default.

26/02/2007, v1-alpha7: SOS (Save Our Settings)

In this release an option was added to query the online Geonames database for the name of the current location (thanks to Vladimir Nadvornik). Furthermore, Happy Camel can work with a config file, so you won't have to type all those tedious commands every time again (although Happy Camel doesn't create the config file yet and there still is no good documentation). The command line itself also got a big overhaul. And then there are some smaller feature enhancements.

26/12/2006, v1-alpha6: Do you remember the time?

This release is much more conscious about the times when the recordings were made. It can interpret the time zone and DST from the tracklog, and if needed, compensate for it based on the system time or input from the user. Also the time difference between the camera and the GPS can now automatically be determined using a calibration photo. Furthermore, the program is split across several files, uses distutils (has a real installation procedure), and no longer has a default action.

19/11/2006, v1-alpha5: Two humps are two humps and not one...

In this release Happy Camel stops positioning images between tracks when the distance is larger than a user-defined threshold (set via the -m switch), and stops drawing tracks between actual tracks. Furthermore, there are some bugfixes, including the one which prevented Happy Camel from working for mere mortals :S

04/09/2006, v1-alpha4: Welcome, rest of the world!

No new features in this version, but a fix for a bug which prevented three quarters of the world from using Happy Camel. The problem was that Exiftool needs a positive value and a reference for embedding the GPS data, while GPX-tracklogs use positive and negative numbers to specify the hemisphere. Happy Camel did set the reference correctly, but didn't convert the values to their absolute counterpart.

08/08/2006, v1-alpha3: It's your choice

The third alpha version of Happy Camel adds some features to specify the output of the .KMZ file, like the width and color of a track and the size of the photos. It also uses EXIF-comments now in the .KMZ file. It's command-line options have changed a bit though, so beware of that.

Happy Camel has lost its ability to read tracklogs in any other format than .GPX. This removes the dependency on GPSBabel. Internally there are also quite some changes. You can read it all (almost) in the Changelog if you're interested.

04/08/2006: Sony jumps in

Sony has announced that it brings a GPS-receiver to the market specifically designed to do what Happy Camel is about. Guess geotagging (or whatever you want to call it) is gaining critical mass.

04/08/2006, v1-alpha2: Added better logging

The second alpha version is out, with exciting new features like a better logging mechanism and the option to exclude the tracklog from the KMZ file! Ok, so it's not that exciting, but hey, what do you expect for an alpha version?

31/07/2006, v1-alpha1: Approved and Welcome!

SourceForge has kindly accepted to host my little pet project. Sorry for the ugly web page though, it should improve in the future.


Happy Camel is getting quite mature feature-wise and will probably do what you want. Several people contacted me with bugs they found, and with their help, the code is improving all the time (yes, this is a hint).

However, I can't guarantee that it doesn't chew up your precious holiday pictures, so it's wise to backup your photo's before you let the Camel loose. Of course, backing up your data is always a good idea. Anyway, don't tell me I didn't warn you! (But please do tell me if it runs amok. Or if it works just fine.)

Before version 1-beta1, Happy Camel relied on Exiftool to do the metadata reading and writing. This is a well-established program, and pretty safe to use. However, since the first beta release, Happy Camel can handle the image metadata itself. This is much faster, but there's a chance that it wreaks havoc on your pictures. Therefore you have to enable it with the --faster switch (in this case a backup of your image is automatically created).


The script is written in Python. You need at least version 2.4 to make your Happy Camel run. It's only tested on Linux, but as far as I know there isn't anything Linux-specific in the code. YMMV.

The relevant files can be downloaded from SourceForge.

Furthermore, you may need Exiftool by Phil Harvey. For creating the .KMZ file you need the Python Imaging Library. And of course you need Google Earth to view them. To manipulate tracklogs, GPSBabel would come in handy.


Happy Camel is a command-line tool, in which you should basically provide a directory with images and the position on your disk of a tracklog file. Running happycamel --help should provide you with all the necessary information.


I would really like to hear how Happy Camel works for you. Unfortunately, I have only one GPS device and one digital camera, and I can't really test it thoroughly. So please don't hesitate to contact me to report your success- or failure stories. My email address is p _dot_ edelman _at_ gmx _dot_ net.

Of course you can also contact me if you have any questions, remarks, etc.

Now what?

So, your pictures have their GPS-coordinates embedded. Now what? Good question.

Of course you can have Happy Camel make a nice Google Earth file which shows a smaller version of your images in there proper place. There are also several other resources which could display your images on a map, like Yuan.cc and Flickrmap, which require to have your photo's on Flickr.

There's currently a lot going on around GPS and photo's. More options will probably present themselves.