Archive for the ‘tools’ Category

GPS Tracking for Geo Tagging

Tuesday, January 8th, 2008

In my previous posts I defined a number of use cases I want to process with. Especially, I was interested in GPS Tracking using a mobile phone and already posted about it. I tried to reuse my experiences with GPS Track for another GPS related subject: geo-tagging / geo-coding. The idea behind a geo-coded image is to embed the geographical coordinates in the image data. Mostly the information is stored using EXIF metadata. There are three approaches how to create geo-oded images:

  • Use a camera supporting GPS directly or some GPS add-on and put geo location in the time of image capture.
  • Assign the location to the images afterwards using e.G. Flickr and locating the image on the map manually.
  • Record the GPS track ( Usecase 1.2) during the photo session and use time correlation information to assign location to images.

Surprising, but I want to tell about the third approach. For that you need a GPS track and some programs that read the timestamp from image metadata and search for the nearest (timely) track point in your track and write GPS coordinates (latitude, longitude, altitude) back to EXIF metadata of the image. Sounds like a simple batch process, doesn’t it?

Recording GPS data

The first setback I suffered was that my tracks recorded with GPS Track does not contain any time information. GPS Track program remove all timestamps, which makes the usage of the program impossible for the geo-tagging. I searched for an alternative and found GPS Log. It is available on a German page but the program supports English, German, Dutch and Polish.

After the installation on the J2ME enabled mobile phone supporting Bluetooth stack (JSR-83) you have to set up the program. The settings are started automatically, but can be changed later in the main menu. The basic part of the configuration is a search of the GPS receiver and setup of the log file. Go to device URL, devicelist, inquiry and select your GPS receiver. Then enable the logging and select an appropriate place, where the tracks can be saved.

gpslog001 gpslog002 gpslog003

The main menu of the program is structured as follows:

  • start/stop start/stop tracking
  • settings
    • device url the url of the GPS device, in form btspp://DEVICE-ID:com-port
      • devicelist list of available BT devices
        • inquiry start search for devices
    • filesystem a place where to write the track files
    • fileprefix name prefix of the track file
    • enable log write a track file?
    • enable vibration enable phone vibration
    • enable backlight switch backlight on?
    • enable sexagesian coordinates format the coordinates in grade, minute, second instead of fractional of grade
    • update interval time between two track points
    • manual interval if update interval set to manual - number of seconds between two track points
    • loglevel level of logging (for debugging purposes)
  • console java console
    • clear clears the console
    • save saves the console to a file
  • about version information (1.29 is the last currently available)
  • exit

After the simple configuration you are done and can (hopefully) see something similar on your display:

gpslog005

The resulting file is stored in NMEA 0183 format and contain the movement track. It can be transmitted to the workstation together with the images from you camera. Now you are ready for the offline part of the data processing.

Post processing

In the following I present three approaches for the same goal: read the time information of images and track points, find the correlation and write the results back.

Manual (GPSBabel, gps2photo)

I tried it manually first, following some instructions of a German computer magazine c’t. For using GPSBabel to convert from NMEA 0183 to GPX, the command for this is gpsbabel.exe -t -w -i nmea -f track.txt -o gpx -F track.gpxx where track.txt is NMEA file name and track.gpxx is the target file name. GPSBabel is very helpful, because additionally to the standards like NMEA it also supports vendor specific standards like Garmin, Magelan, Tom Tom and others. A useful front end can be found at GPSVisualizer. Then I used gps2photo Perl script, that writes the coordinates from GPX file to the corresponding images. The problem with that is, that you require a Perl installation (Active Perl in case of Windows) and Image::ExifTool and XML::Parser modules. The Active Perl 5.10 I installed only contain the latter, but not the first one, so I had to download and install it manually. After the installation you need to run perl gpsPhoto.pl –dir c:\photos –gpsfile c:\photos\track.gpxx for processing the directory of images c:\photos with a trackfile located in c:\photos\track.gpxx. I really got the result after hours of installation and configuration, I and swore never to repeat this. The resulting GPS tags are finally:

GPSVersionID: 2, 2, 0, 0
GPSLatitudeRef: ‘N’
GPSLatitude: 53, 38, 18527/1537
GPSLongitudeRef: ‘E’
GPSLongitude: 9, 56, 40876/1671
GPSAltitudeRef: 1
GPSAltitude: 53
GPSTimeStamp: 15, 28, 41
GPSImgDirectionRef: ‘T’
GPSImgDirection: 0
GPSMapDatum: ‘WGS-84′
GPSDateStamp: ‘2008:01:06′

During the writing of this article I looked on the Internet for some resources and found a list of software that can be useful for geo-tagging/geo-coding on the homepage of GPSlog. Because I only have a Windows workstation, I could try out GPicSync and PhotoMapper. For the Mac users the GPS Photo Linker seems to be a standard software.

GPicSync

GPicSync is a small free available program written in python that executes the steps above automatically. At the time of writing it is available in version 1.23 beta. In addition to simple geo-coding it supports export of the track as Google Earth KLM or Google Map, read directly NMEA or GPX, supports additional geo-tags and geo-names and supports camera RAW formats. Because I’m using a Canon Rebel XTi (EOS 400D) it is of utmost importance for me to geo-code the raw files directly. This feature makes this program to my favorite.

Copiks Photomapper

Photomapper allows to load GPS information file and images and write the GPS location back to the images. The export to Google Earth is also possible. The UI looks more advanced as in the case of GPicSync, but the program only supports JPEG images, so GPicSync remains my favorite.

For own development

In the time between my headache with manual tagging and finding of GPicSync I searched over the web for resources of reading and writing of EXIF metadata and parsing NMEA in Java. NMEA 0183 seems to be trivial, There are several interesting developments according to the EXIF subject:

  • jrawi is a Java library for reading images coded in “camera raw” format;
  • metadata extractor is a generic framework to read EXIF metadata. Currently only JPEG format is supported, but the authors mention that support of additional media types should be simple.
  • The most promising development seems to be Sanselan that should become an Apache project soon. In contrast to the others, it support writing of images, which makes it a first class candidate self-made solution. Unfortunately, Sanselan does not support RAW formats. I played around with the framework - it seems to be pretty convenient.

Technorati tags: , , , , , , , , , , , , ,

Using Eclipse for publishing

Monday, January 7th, 2008

As most Java developers using Eclipse IDE, I prefer to use it for everything. All right, I’m not using Eclipse to control my media player, but I’m using it for publishing.

Since my project work, I’m a TeX user and not a MS Word user. Even if I’m pretty good in using old MS Office, I’m completely lost with MS Office 2007. Beside of this fact, I like the way how you create documents using LaTex because it is similar to coding - you write you source code and compile the output.

Publishing in LaTeX under Windows is possible using MikTeX. In addition you need an editor. Under Linux, one would use vi or emacs. For Windows several alternatives are possible: WinEDT that is good, but a commercial product or TexnicCenter which is a good freeware editor. The problem with both of them is: they only support editing and not other activities around the publishing. Especially, activity that is of utmost importance for me is versioning of the artifacts. Version control systems are excellent integrated in Eclipse, and with help of Texlipse you get the entire environment needed for LaTeX publishing.

One feature, I missed all the time using Texlipse was spell checking. It was supported by Texlipse since 2005, but I got it not configured. Today, after my professor told me once again to use a spellchecker, I promised to set up the Aspell inside of Texlipse. With some help from Gedankenstrom and reading the aspell help I got it. Here is a short description (I assume that Texlipse is successfully installed).

aspell

  1. Download Aspell.
  2. Install Aspell (to any! directory) and dictionaries.
  3. Open Preferences->Texlipse->Spell Checker
  4. Enter the Aspell command (a complete path to aspell.exe)
  5. Correct Aspell arguments to -a -t –lang=%language
  6. Open Preferences->Texlipse->Spell Checker->Environment
  7. Create a new environment variable with key: prefix and value:
    path-to-your-aspell-directory, using / insted of \.
  8. Press Ctrl + Shift + 6 for spell checking

Technorati tags: , , , ,

Eclipse Summit Europe 2007

Wednesday, October 17th, 2007

Eclipse Summit 2007

MDSD Session

I listened to a session on SOA platform and later got to a workshop on EMF and large models. I got there just by an accident, resulting from the discussion with guyes from Gentleware and SAP. We spoke in a lunch discussion about the problems of EMF. Then Axel Uhl just invited me to participate and I got probably to the most interesing part of the summit. It was very informative and I spent several hours with the MDSD gurus like Ed Merks, Marcus Voelter, Bernd Kolb, three gyes from SAP, formely Interactive Objects, three gyes from Gentleware and a couple of persons I don’t know. The subject of the workshop was the discussion of large models, and problems and issues on the management and infrastructure. After the long dialog on needs and nice-to-haves the group agreed on a need of creation of an open-source EMF-based repository, in order to identfy the opporunities of what is available today and pain-points of existing solutions. The open source nature should foster the consolidation of a spread knowlegde and experience on EMF in a single project. Later, I visited an excited demo of Ed Merks on new features of EMF.

Thanks to Ed, we all got a wonderful picture of all us…
lightbox[post]

Big Modelers

BIRT Session
Other intersting sessions visited were the BIRT-related session. It seems that this Eclipse project gets adult. I was really impressed on the variety of features and especially the number of solutions to real world problems I often tried to solve during my industrial activities. It seems that BIRT can be seen as a next level open source reporting tool, that offers a good foundation for further in-enterprise reporting.

GPS Tracking with a cell phone

Tuesday, April 24th, 2007

Usecase 1.2

As already mentioned in one of the previous posts I’m playing around with GPS technology, trying different use cases. One of them is tracking own position using a GPS Mouse and cell phone. The minimum requirement was to track position data (x,y,z) and store it on a flash card inserted in the cell phone, connected to GPS receiver via Bluetooth. After a short search on the Internet I found GPS Track (version 1.1) free software, packaged as Java Middlet for use on any J2ME compatible cell phone.

After the simple installation the basic setup on the cell phone have to be executed. The main menu of the software is structured as folows:

  • start: start the tracking / changed to stop, if tracking is running
  • tracks: manipulation of already recorded tracks (track menu)
    • details: name, records(number of points), memory usage
    • upload to web site: to upload to the http://qcontinuum.org/map and to be displayed as an overlay on the Google Maps
    • send via email: Send the track file by E-Mail (Google Earth .kml, GPS Exchange .gpx, Excel .csv)
    • transfer via bluetooth: Send the track file by Bluetooth (Object-Push) (Google Earth .kml, GPS Exchange .gpx, Excel .csv)
    • write to local file: Write the track file locally (Google Earth .kml, GPS Exchange .gpx, Excel .csv)
    • delete
  • options: basic options on units, tracks and backlight

After the basic setup and the established connection between the GPS Track and the Bluetooth device (the connection established is stored, so you need to setup only once) the tracking can be started. During the tracking several screens are available and can be switched using options->next.

Track Status

  • Name: Name of the track, created from the recording date and time
  • Records: number of records (measurements)
  • Speed: current speed
  • Distance: track length from the beginning of the measurement
  • No Fix: time during tracking, the receiver is not able to determine its position
  • Stationary: the receiver can determine its position and is not moving
  • Moving: the receiver can determine its position and is moving

GPS Status

  • GMT: current time (satellite time?)
  • Latitude, Longitude, Altitude: current coordinates
  • Heading: direction of moving
  • Satellites: number of satellites from that the signal is received

GPSTrack

An embedded compass (also available separately without GPS at http://qcontinuum.org/compass/)  showing the position of the Sun/Moon. In addition the position of the satellites is displayed on the compass.

Summary

I played around with GPS track and recorded several tracks. The tracks varied from short to pretty long (~70 km). Basically, I’m satisfied with the functions the software offers to me. Because of the source code is available, i’ll have a look on it and may be will refactor some UI or possible drill one or another additional feature in to it. Especially the UI is very primitive, so I think that the information can be presented much more compact, using one screen instead of three.

 

 

Technorati tags: , , , ,

Concept Maps

Tuesday, April 24th, 2007

For a certain amount of time a had a a look on the Web Service Architecture from W3C. They used a concept map - a simple technique to represent terms and relations between them. Cause I’m always excited about convenient information representation I searched for a tool, supporting me to create concept maps. IHMC is offering a free CmapTools and even non-free/”cost model unknown” server infrastructure for collaborative editing and sharing of the concept maps. Pretty expressive is the list of publications

tags:

GPS Experiences, the first try

Friday, April 13th, 2007

Today I gathered my first experiences with GPS technology. To be honest I ignored the entire GPS hype till last week, as a friend of mine offered me a GPS mouse. I have several usecases in mind, so I will create follow-posts. In general I look for free (or cheep) software only and execute tests with a cell phone and a laptop. Depending on the device, the usecase setup changes slightly…

Usecase 1: Mobile Location Tracking

The location tracking is based on a continuous storage of the location information and creation of the motion track. In addition to the coordinates (x,y,z) information about speed and timestamps can be saved. Later the trace can be converted to different data formats or displayed graphically. A popular representation is a overlay on one of the many GIS Service maps available on the Internet (Google Maps, Yahoo Maps, Microsoft Virtual Earth, etc..). I will also evaluate the software for conversion and representation of data.

Usecase 1.1: Using a Laptop

The easiest device to find software for, is a personal computer. So I  expect a free software to be available, to record the data. Due to the size of the laptop, the test can only be executed using a car. In addition, no additional Internet connection should be required by the software.

Usecase 1.2: Using a Cell Phone

Due to the inability to use laptop for recording during bicycle or sport-tours, I consider to use a cell phone for track recording (and storage of the information on a flash card).

Usecase 2: Navigation

After simple information storage additional task of computation of a route can be considered. Thus the navigation usecase will be tested. Here I expect a variety of functions, for different styles of maps, user interfaces, etc.

Usecase 3: Wardriving

Wardriving is the act of searching for Wi-Fi wireless networks by a person in a moving vehicle using a Wi-Fi-equipped computer, such as a laptop, to detect the networks. Theoretically, it is useful to use a PDA, but since I don’t have one, only the laptop will be used. Due to inability of Wi-Fi by my cell phone, I also skip this setup.

General Hardware Setup

GPS Device: Navibe GB621 Bluetooth GPS Mouse ( link)

 

Product Features:

  • High sensitivity, 12 parallel channels for fast acquisition and reacquisition
  • Full navigation accuracy provided by Standard Positioning Service(SPS)
  • Bluetooth version 1.1 compliant / Class 2 operation with up to 10m range
  • Support standard NMEA 0183 protocol(Version. 3.0 GGA, GSA, GSV, RMC, VTG
  • Support backup power to sustain internal clock
  • Internal RTC (Real Time Clock)
  • Easy to link with PDA and Notebook with Bluetooth 1.1 compliant
  • Built-in rechargeable Lithium-ion battery without external power supply
  • 3-color LED to show the status of Bluetooth, GPS and battery
  • Support active antenna connector (MMCX) to getting better satellites
  • ROHS compliant

Hardware Characteristics:

  • BT-Modulation: FHSS / GFSK
  • I/O Protocols: NMEA 0813
  • RF Channels: 79
  • Antenna: Bulit in patch antenna
  • Input Sensitivity: -80 dBm
  • Ext. Antenna
  • Output Level: 4 dBm
  • Connector: MMCX type*
  • Baud Rate: 4800(default)
  • Power Consumption: Under 200mA
  • Power supply: +4.5V~5.5V (DC)

Performance:

  • Receiver: 12 parallel channels
  • Frequency: L1, 1575.42 MHz C/A code
  • Acquisition Time (Open Sky and Stationary)
    • Update rate: Once per second, continous
    • Hot Start: Aprox. 2~6 seconds, typical 95%
    • Warm Start: Aprox. 35~40 seconds, typical 95%
    • Cold Start: Aprox. 50~60 seconds, typical 95%
  • GPS Accuracy: Position: 2D RMA: aprox. 5m
  • Sensitivity:
    • Acquistion: -139 dBm (average) or less in normal mode
    • Tracking: -152 dBm (average) or less
  • Dynamics:
    • Altitude: < 18000 meter maximum
    • Velocity: < 500 meter/second maximum
    • Acceleration: < 4g

Cell Phone: Nokia 6680

Nokia 6680 front Key Features:

  • Two integrated digital cameras: 1.3 megapixel and VGA
  • Experience two-way video calls and see face-to-face as you talk in real time
  • Video sharing capability
  • High-resolution, 262,144-colour display
  • Capture quality images and video
  • Nokia XpressPrint printing solution: PictBridge, Bluetooth wireless technology, MultiMediaCard (MMC)
  • Fast WCDMA and EDGE connections for broadband-speed browsing plus tri-band GSM phone with global roaming capability
  • Convenient email access with automatic download to send images and view documents
  • Calendar, contacts, and other personal information management features plus data printing
  • Music player with stereo audio

Operating Frequency:

  • Dual mode WCDMA/GSM operation and tri-band GSM coverage on up to five continents (GSM 900/1800/1900 and WCDMA 2100 networks)
  • Automatic switching between bands and modes

Connectivity:

  • Integrated Bluetooth wireless technology v.1.2
  • USB 2.0 full speed via Pop-Port™ interface
  • Nokia PC Suite connectivity with USB and Bluetooth wireless technology
  • Local synchronisation of contacts and calendar to a compatible PC using compatible connection
  • Remote over-the-air synchronization
  • Send and receive images, video clips, graphics, and business cards via Bluetooth wireless technology
  • Profiles with Bluetooth connectivity: Basic Printing Profile (BPP) using Image Print or Info Print applications, Human Interface Device Profile (HID) using Nokia Wireless Keyboard application

Java Applications:

  • Java™ MIDP 2.0, CLDC 1.1 (Connected Limited Device Configuration (J2ME))
  • Over-the-air download of Java™-based applications and games

Personal Computer: IBM/Lenovo T60p 2007VIF

Key Characteristics:

  • Processor:
    • Intel Core 2 Duo, T7200
  • Memory:
    • 2 GB
  • Graphic Card:
    • ATI Mobility FireGL V5250
  • Drives:
    • 100GB, S-ATA-100, 7200 rpm
    • Ultrabay DVD-RW
  • Connectivity:
    • Intel PRO/1000 PL NIC
    • Intel PRO/Wireless 3945ABG
    • Broadcom Bluetooth (WIDCOMM)
    • IBM IR
  • Operating System:
    • Microsoft Windows XP, SP2

My first Live Writer Experiences

Tuesday, August 29th, 2006

During the creating of the first “Live Writer”-Post, the following error occurred.

When using Windows Live Writer (Beta), I received the error:
System.NullReferenceException: Object reference not set to an instance of an object.
at System.Windows.Forms.ToolStripProgressBar.Increment(Int32 value)
at SmilingGoat.WindowsLiveWriter.Flickr.InsertFlickrImageForm.imageProcessor_ProgressChanged(Object sender, ProgressChangedEventArgs e)
at System.ComponentModel.BackgroundWorker.OnProgressChanged(ProgressChangedEventArgs e)
at System.ComponentModel.BackgroundWorker.ProgressReporter(Object arg)

The error pops up on flickr image insertio with size changed to small.

Nevertheless I’ll let the product installed on my machine and will test it further. The reason for that is the support of tags and Flickr-images…

tags: , ,

Unstructured Information Management Architecture SDK

Friday, February 17th, 2006

A Java SDK that supports the implementation, composition, and deployment of applications working with unstructured information.
http://www.alphaworks.ibm.com/tech/uima

Synergy

Monday, April 18th, 2005

Do you know the problem of working on several computers at the same time and having three mice and three keyboards laying on the table. Sure, a KVM-Switch solves the problem of multiple hardware — now you are always tipping on the wrong console.

A very nice freeware tool solves that awkward situation. Check http://synergy2.sf.net

Internet telephony with skype

Sunday, February 6th, 2005

Today I discovered skype, a small, easy to use prorgam for internet telephony.

Further details on http://www.skype.com