Monday, September 22, 2008

Geotagging pictures using geotag

Adding GPS metadata can be an invaluable asset when you travel a lot to different places or you simple would like to know more or less precisely, where you took a certain picture. There are several applications out there to add this GPS metadata to your images most of them not available for Linux users. One nice exception is geotag, a JAVA application that using dcraw and exiftool is even capable of writing the GPS metadata to your raw files.


I have to admit that I am not a friend of JAVA applications. I fancy the fact, that you can run an application on different OS's but I found them to be slow in most cases and under Linux to be rather ugly in every case. But what can you do... if an application does what it is supposed to do and if it free, you do not complain!

geotag is a great application written by Andreas Schneider. It has an active user base and Andreas is rather friendly and helpful if you run into problems with the software. You can download the application and find information and more on the project site on sourceforge.

The easiest way to run the software is via its webstart link:

javaws http://geotag.sourceforge.net/geotag.jnlp


In order to geotag your images, you would load images by going

"File" > "Add images"



Once you have one or more images loaded, geotag will show you a preview for your images (for RAW files you will need dcraw installed) and will allow you to add GPS metadata.

If you do not own a GPS device

Having access to a gps device makes geotagging your images so much easier. But what if you don't?

Even without such a device can you add that GPS metadata to your images. In order to do so, right click on an image and choose

"Show on map" > "this image"

geotag will open a new window in your default we bbrowser showing you a map using the google maps API. The assumed location of the image is indicated using the following symbol



Drag the symbol to the position where you took the image. Use the zoom capabilities to get the position as accurate as possible. If you care to check, you can see, that the position of the symbol is reflected in the geotag window showing you the current position inside the google map window. If your image entry appears in a bold font, the GPS data has been added or updated and can be saved with the image data. You can select multiple images as well add one symbol will be added for each image to a new google maps window. Drawback here, you do not know which symbol belongs to which image unless you check in the geotag window, which image has its GPS coordinates changed when dragging a symbol around in the google maps window.


If you do own a GPS device

Adding GPS metadata inside geotag to your images can be done two different ways. In a two-step-process, you would download your GPS log and convert it (if necessary) to the gpx format. You would than load the gpx file and geotag extracts the GPS information from the file and syncs the GPS data via the timestamps in the GPS trackpoints and the exif data of each image.

1. Load one or more images
2. Adjust the time difference between the GPS data and the time stored in your images. This would be the difference between the GPS time and the Camera time. To do so, right click on an image and choose

"Time difference for image"

For me living in Berlin, Germany this is (during summer time) 2 hours. Agree to adjust the time difference for all images loaded if applicable.

3. Load the gpx file by choosing

"File" > "Load trackpoints from file"

The GPS coordinates will be extracted from the gpx file and added to the images.

4. Save the new meta data to the images by right clicking on an images and choose to save the new location data to either all, selected or this particular image.

You can choose whether geotag should write the GPS meta data to XMP side car files or to the images directly. You can also write the data to a new copy of the file keeping the original file intact. Due to space limitations I choose to write to images directly, so the information can not be lost by accidentally deleting side car files and I don't keep original copies, which would double my space requirements.

Geotag supports gpsbabel as an external tool which allows not only for the conversion of multiple GPS formats but also for the direct access to many GPS devices. To configure geotags access to your device, go to

"File">"Options">"External tools">"gpsbabel"

Make the needed chnages to reflect your setup (for an iBlue 747 that would be protocol "mtk" and device should be "/dev/ttyUSB0"). Make sure that gpsbabel is in your path or provide the full path to the executable otherwise.

To use the GPS data directly from your device, choose

"File" > "Load tracks from GPS"

Depending on the transfer speed of your device and amount of log data, this will take some time and getag will tell you in the end the number of trackpoints it was able to extract from the GPS data from the device. It will automatically add the coordinates to your images that you have been loaded before.

Saving the new data is done accordingly to the manual addition of GPS data, so right click and then choose to save the data to your images.

In addition of GPS coordinates only, you can if you like add location data based on the newly added coordinates using the right click menu. The location data is retrieved from www.geonames.org.


Cheers Juergen

Friday, September 19, 2008

BT747 Beta for Java Phones

With the I-Blue 747 having no display, certain information and functionality is only available to you when you have the device connected to your PC at home. Being out in the field it often would be nice to check on the memory status of the device, download the log file if the device's memory is full and erase the existing log file to make room for new data. For me using the I-Blue for geotagging my pictures, the current position and time would be a very valuable information to have. The latest software from the bt747 hackers comes to the rescue: bt747 for JAVA phones, turning your phone into the display the I-BLUE so very much lacks.

I have talked about the regular bt747 software which runs on various OS's thanks to the JAVA technology. It is available in two versions, new and old with the new one not having all the functionality of the old one. I was thrilled though, when I read today (check it out, the site has much nicer screen shots than I do...) about the latest branch of the software which would allow me to control my I-BLUE using my Java capable mobile phone (I own a Sony Ericson k800i).

The mobile phone application is in beta right now and is not complete yet. According to the website of the project, the following functionality is available:

- Download the GPS log over bluetooth
- Erase the GPS device memory
- Get the memory status:
° Memory used
° Records used
° Records free
- Change log condition settings:
° Time interval
° Speed trigger
° Distance interval
° GPS Fix Period
- Read the GPS position
- Conversion to GPX output format:
° but slow because all fields are written.

So these steps I took to make this work:

1. Download the application from here. The file as of right now to download is BT_J2ME_0_1_48.zip.

2. Unzip the archive:

unzip BT_J2ME_0_1_48.zip


3. Install the included jar file on your mobile phone. I use a special version of the windows application MyPhoneExplorer under wine to ger the application transfered. Read the howto here if you are interested in getting MyPhoneExplorer to work using wine under Linux. If you have it installed, connect to your phone, navigate to the files section of your phone and click the "install Java application" button. In the next windows, navigate to the jar file from the BT_J2ME_0_1_48.zip archive and click OK to upload the file to the phone. IF asked, save it in under the applications folder on your phone.

4. Turn on your phone and activate bluetooth. I did a search for devices before in order to see if my phone would be able to see my I-Blue as a bluetooth device and already had provided the password in order to connect to it. The default password is "0000", them being four zeros. I suppose the bt747 app will ask for the password if the device is not yet known to the phone. If you have problems, just do what I did and do a basic device search in the bluetooth section of the phone and try to connect to the I-BLUE there, before using it in bt747.

5. Turn on the I-BLUE and wait for the device to set up a satellite connection. I found, that without a proper satellite connection the I-BLUE is completely unresponsive to any connection requests from any software that I have used with it so far. So even if I just want to download a log file it has to connect to satellites first which, depending on the weather and your current location, can be quite annoying...

6. Fire up bt747 on your phone, and it will search for nearby bluetooth devices:


Hopefully it will then find your I-BLUE and present you with the option to connect to it on the next screen:


Choose the iBT-GPS device and press OK. This will then give you another screen asking for permission to connect this particular client to the phone.

Once you have successfully connected the GPS device device you will be presented with the application default screen, showing two main menus on the bottom:


The App Menu allows to exit the application and choose some logging options. I only used it to exit the app so far. The Logger Menu is the interesting one as you can actually download log files, erase them, set logging options and check for the status of the device. Very nice is the screen where you can check for you current position and the satellite time. A snapshot with your camera of this screen makes the syncing of image and device time for later geotagging of your images quite easy.

So far this app has some rough edges but the basic functionality is there.

- I downloaded a log file to the phone.
- I was able to see my current position and device time
- I was able to erase log data from the device's memory
- The phone becomes unresponsive when I choose to have the device's status displayed. This might be due to the fact though that I am rather impatient.

So far so good! I very much recommend this app to have on your hopefully java capable phone!

Cheers Juergen