Using Geonames.org webservice from .Net

Tags: , , ,
1 Comment »

Lately I was looking for a way to translate geo coordinates (latitude and longitude form my gps device) to some sort of text or names. As you know I’m trying to geotag my photos using a gps logger and PhotoTagStudio. This data can be used to visualize the place a photo was taken on a map (e.g. Google Maps or flickr!). The next step can be to use this data to describe the photo as well.

I think one should be able to translate a geo coordinate into at least the name of the county, the state and the city; maybe to the district or a street name, too. To achieve this I found the geonames.org webpage. This page collects exactly the data I need and allows searching via the website and a webservice.

The webservice itself consists of approximate 30 REST methods one can call by querying an URL. Most of these calls return a XML document (or optional a JSON document). Unfortunately  there is no SOAP / WSDL version of this webservice. For a .net and C# developer a SOAP webservice is very easy to consume but for such a REST / XML webservice you have to create the URLs yourself and parse the resulting XML document.

I started to create a library to query the webservice. This library provides a few static methods mapped to the most useable webservice-methods and returns good shaped .Net objects. These objects carry all the data coming from the webservice. At the moment this library is in an early beta status but you can use it in your own projects. It can be found on Codeplex: GeonamesDotOrgDotNet, there you will find a small example and a demo application. When using this library you should take a look at the documentation of the geonames.org webservices since the interfaces are nearly the same.

I hope this is useful for someone. I will extend the library in the next weeks. Feature requests are welcome, so is help on the coding side.

Currently the following webservice calls are supported:

  • findNearby
  • findNearbyPlaceName
  • findNearByWeather
  • findNearbyWikipedia
  • get
  • hierarchy
  • children
  • gtopo30
  • srtm3

At the end a few random screenshots and a code snippet. For more information please take a look at the Codeplex project page.

// finding some place in Berlin, Germany
// (using prefix m for decimal literals)
Geoname Place =
GeoNamesOrgWebservice.FindNearbyPlaceName(52.51m, 13.4m);

// getting all parents
IEnumerable ParentPlaces = Place.Hierarchy();

// display the partents
// (will print out something like:
//  “Globe > Europe > Germany > Land Berlin > Berlin >”)
foreach (Geoname x in ParentPlaces)
Console.Write(x.Name + ” > “);

The Classes of the Library:

classes

A screenshot of the demo application to test the library:

testapp

Using a mobile phone as GPS logger

Tags: , ,
No Comments »

With the Java software GPSLog you can use an ordinary Bluetooth GPS receiver with a Bluetooth enabled mobile Phone as a GPS Data logger. Only connect the two devices and start logging with the GPSLog software. It is very easy and you can simply create nmea log files and use it with other GPS software like PhotoTagStudio or translate these log files using GPS Babel.

I use GPSLog only to display the current position and the current time of my GPS Logger to take a photo of the display with the current time displayed. In PhotoTagStudio you can use such a picture to synchronize the GPS log time and the camera time.

I wrote more about my GPS logger and GPS Babel in this article and more about GPS earlier in this blog.

GPS Logger Wintec G-Rays 2 and GPS Babel

Tags: , ,
1 Comment »

Previously I wrote about geotagging and my photo tagging software PhotoTagStudio has build in support to tag photos with GPS coordinates from nmea files. I used to generate these nmea log files with a Windows CE PDA and imported the log files into my photos with PhotoTagStudio.

Now I bought a small GPS receiver with a build in datalogger. It’s named Wintec G-Rays 2 or WBT-201. And by the way: it is a great idea giving one product one or more name nobody can remember. For some reason Apple products always have only one name everybody can always remember. Back to my new WBT-201: it is very small, cost about 100 €, has a build in rechargeable battery and can be used as an ordinary Bluetooth GPS receiver. But besides this it can act as a GPS logger and store up to 130000 GPS positions.
I bought this device only for logging and combining these data with photos using PhotoTagStudio.

The software for configuring and getting the logged data is called Time Machine X and looks and acts like crap. It looks like written by an amateur programmer using Visual Basic 3 on Windows 3.11. But you need this software to configure the logger. I set it to capture every 2 seconds the position. That’s it. To use the logger you need only turn the power on and it’s working. With the track button you can record some waypoints at the given position but I didn’t use this feature.

To read the logs you can use Time Machine X, but I don’t like it and you cannot script this application. An alternative is the open source software GPS Babel. GPS Babel can read and write nearly every GPS related file format. So you can read the data directly from a serial COM port (this can be the USB or a Bluetooth connection to the WBT) and write it as a nmea file.

The following command reads from COM10 (this is a Bluetooth serial port an my computer) and writes a nmea file named out.nmea:
gpsbabel.exe -t -w -i wbt -f com10 -o nmea -F out.nmea

To delete the logged date from the WBT device you can use the following command:
gpsbabel.exe -t -w -i wbt,erase -f com10 -o nmea -F out.nmea

The -t parameter reads the whole logged track and the -w parameter reads the recorded waypoints.
The output file can be read by PhotoTagStudio v.6.2 and above and other software that is capable of reading nmea files. Or you can use GPS Babel to create files with other formats. For example kml files for Google Earth and Google Maps.

Now is only one thing missing: a display device for the GPS date and status when I am not caring my PDA or notebook with me. In will write another article where I will show how to use a mobile phone to display the data of a Bluetooth GPS receiver.

GPS-Daten: Der Weg von PDA zum Photo

Tags: , ,
No Comments »

Mit einem PDA mit GPS-Empfänger kann man ein GPS-Log erzeugen. Dieses Log enthält dann sämtliche Daten die der GPS-Empfänger empfangen hat und man kann daraus später die Wegstrecke rekonstruieren bzw. diese Daten verwenden um Photos zu lokalisieren. Ich werde hier die von mir eingesetzt Software beschreiben. Mit Sicherheit gibt es auch viele andere Verfahren.

Also Hardware kommt ein Asus MyPal 636N zum Einsatz. Er hat einen integrierten GPS-Empfänger mit Antenne. Als Betriebssystem ist Windows Mobile Version 5.0 installiert. Auch wenn ich es nicht getestet habe, vermute ich, dass das hier beschriebene auch mit den Vorgängerversionen funktioniert.

Zum mitschneiden des GPS-Logs verwende ich die Freeware VisualGPSce. Dieses Tool zeigt sehr viele GPS-Informationen an (Anzahl der Satelliten, Signalstärke, Koordinaten, leider nicht die Uhrzeit) und enthält die Möglichkeit ein Log-File zu schreiben. Pro Stunde fallen hier zwischen 1 und 2 MB Daten im NEMA-Logfile an. Die Ausgabe ist nicht sehr sprechend und muss noch weiterverarbeitet werden, aber dazu später.

Wenn VisualGPSce läuft, dann ist die COM-Schnittstelle des GPS-Empfängers durch VisualGPSce belegt und kein anderes Programm kann darauf zugreifen. Also ist es nicht möglich gleichzeitig die Navigationssoftware zu benutzen. Abhilfe schafft hier ein Portsplitter. Dieser verbindet sich mit dem GPS-Empfänger und installiert einen virtuellen COM-Port auf den die Software (also Navigationssoftware und Logger) zugreifen können. Das funktioniert dann auch sehr gut und stabil. Den kostenlosen Portsplitter VirtCom findet man hier. Man muss sich (kostenlos) dort im Forum anmelden um das Paket das VirtCom enthält runterladen zu dürfen. Auf dem PDA muss dann eine Datei in das Windows-Verzeichnis kopiert werden und über eine einfache Oberfläche lässt sich VirtCom konfigurieren und starten. (Es gibt auch eine Version die zusätzlich TMC unterstütz. Alles in dem Paket enthalten).

Für den PC gibt es dann ein weiteres kostenloses Tool: TrackCon. Dieses kann die NEMA-Daten einlesen und in verschiedenen Dateiformaten exportieren. Unter anderem CSV, so dass man die Koordinaten usw. sehr einfach weiterverarbeiten kann.

Mit dem GPS Log to Google Earth kml Converter kann man online diese NEMA-Dateien in kmz-Dateien für Google-Earth umwandeln. Dadurch kann dann die Wegstrecke auf der Landkarte / dem Satellitenbild angezeigt werden.

Mit der neuen Version meines PhotoTagStudios kann man dann auch endlich die GPS-Daten in die Photos übernehmen. Allerdings setze ich dafür noch vorverarbeitete CSV-Dateien aus TrackCon ein.

Für Mac OS gibt es den GPS Photo Linker der eine ähnliche Funktion anbietet.

Geotagging mit Sony und flickr

Tags: , ,
No Comments »

Ich bin ja schon seit einiger Zeit vom Geotagging bzw. vom Geolokalisieren von Photos begeistert. Meine Idee / mein Wunsch ist es, meine Photos mit Koordinaten (Längen- und Breitengrad) zu versehen und so möglichst genau festzuhalten, wo das Photo aufgenommen wurde. Diese Information kann man dann mit einer Karte (z.B. Google Maps / Google Earth) verbinden und hat eine tolle neue Dimension gewonnen um seine Bilder zu betrachten.

Unter den Nutzern hat sich ein (für mich ziemlich fragwürdiges) Verfahren durchgesetzt um diese Daten an die Bilder hängen zu können: Es wurden einfach “geotagged/geo:lat/geo:long” Tags den Keywords hinzugefügt. Das funktioniert natürlich, macht aber die Tagclouds kaputt wird aber schon von sehr vielen externen Tools unterstützt.

Natürlich gibt es auch einen „echten“ Standard: Im EXIF-Teil der JPEG-Dateien sind Felder für die GPS-Koordinaten (und noch ein paar weiteren GPS-Daten) vorhanden. Leider waren diese Felder in der freien Wildbahn nur sehr selten anzutreffen (es gibt kaum Kameras die diese Daten auswertet).

Aber wir kommen nun die Koordinaten in die EXIF-Daten der Bilder? Da gibt es natürlich mehrere Möglichkeiten. Zum einen gibt es zwei oder drei Kameramodelle die einen GPS-Empfänger eingebaut haben oder die per Bluetooth oder einer anderen Technik Verbindung zu einem GPS-Empfänger aufnehmen können. Aber das hat in der Praxis wenig Bedeutung, da es diese Kameras kaum gibt. Eine andere, derzeit eher für Bastler gedachte, Möglichkeit ist die Kombination mit einem Stand-Alone-GPS-Empfänger oder einem PDA mit GPS-Empfänger und ein wenig Software. Der GPS-Empfänger speichert kontinuierlich die empfangenen Daten und damit die Koordinate und die Uhrzeit. Nach der Phototour verbindet man die Photos mit diesen Daten. Aufgrund der Zeitstempel ist es kein Problem zu jedem Photos eine möglichst genaue Koordinate zu ermitteln. Ich werde in einem anderen Eintrag hier mal festhalten, wie ich dies mit einem Windows Mobile PDA mache. Natürlich ist ein PDA nicht sehr praktisch, weil er groß ist, meist viel Strom braucht usw. der große Vorteil ist, dass es durch TomTom und andern Navigationssysteme immer mehr PDAs im Umlauf sind und man diese Funktion praktisch umsonst dazu bekommt. Stand-Alone-GPS-Empfänger wie sie von Bergseigern, Segelfliegern usw. benutzt werden trifft man (=ich) eher selten an. Hier müsste man, soweit ich weiß, dann aber keine Software installieren, der Akku hält länger und sind einfacher zu bedienen. Aber egal wie. Am Ende landen die GPS-Koordinaten im EXIF-Teil der Bilder.

Soviel zu Theorie, denn jetzt kommt gerade Schwung in die ganze Sache:

Sony hat einen GPS-Empfänger samt Software für genau diese Zwecke angekündigt. Der Sony GPS-CS1 eignet sich nicht zur Navigation und hat kein Display aber speichert alle 15 Sekunden die Koordinate. Mit der beigelegten Software fügt Sony diese Daten dann nachträglich in die Bilder ein. Das Gerät kostet 130 Euro und ist relativ klein. Es soll zwar nur mit Sony-Kameras funktionieren, aber da es gar nicht mit der Kamera zusammenarbeitet müsste es auch mit anderen gehen. Ich habe sogar schon irgendwo gelesen das dem so ist.

flickr Unterstützt nun direkt geotagging

Man kann sich (wenn Geodaten vorliegen) die Bilder auf einer Karte anzeigen und man kann sie im organizr von per drag-and-drop auf die entsprechenden Stellen der Karte legen und so mit Geodaten versorgen. Die bisherigen “geotagged/geo:lat/geo:long” Tags werden endlich überflüssig und flickr bietet Funktionen an diese Daten in das neue System zu übertragen.

Vorgestellt wird es von flickr hier. Die beiden kurzen Videos beschreiben die neuen Möglichkeiten sehr gut, also ruhig mal ansehen.

Aber auch von mir ein Beispiel: http://flickr.com/photos/irgendwienet/228655222/

Wenn man hier auf „more Properties“ klickt, zeigt flickr nun folgende Daten aus dem EXIF-Header an:

Latitude: N 51° 32′ 13.603″
Longitude: E 7° 41′ 26.862″
GPS Time (atomic clock): 11/1, 16/1, 38/1

GPS Date: 2006:08:07

Die Uhrzeit ist zwar etwas komisch formatiert (in der Tat wird es genau so im EXIF-Tag gespeichert und bedeutet 11:16:38 UTC), aber sonst ist alles korrekt.

Auf der vorherigen Photoseite steht auch noch folgender Hinweis „Taken in Unna, Nordrhein-Westfalen“. Das hat flickr selbständig anhand der Koordinaten hinzugefügt. Dahinter ist ein Link zur map wo man sich das dann auch im Satellitenbild anschauen kann. Außerdem kann man eine große Karte laden, auf der alle Fotos der Umgebung angezeigt werden usw. Sehr schön!

Komisch ist es, das flickr per Default die EXIF-GPS-Daten zwar unter „more Properties“ anzeigt, aber nicht zur Lokalisierung auf der Karte verwendet. Will man dann aber das Bild manuell Lokalisieren bekommt man die Warnung, es enthalte bereits Geodaten. Abhilfe schafft es ein Setting umzuschalten. Gefunden habe ich dieses Setting nur über dieses Blog. Innerhalb von flickr konnte ich dieses Setting noch nicht finden. Aber man kommt über http://www.flickr.com/account/geo/exif/ direkt dorthin und kann es einschalten. Es ist wirklich unverständlich warum das nicht per default auf On steht.

Da flickr zu Yahoo gehört werden natürlich die Yahoo-Maps verwendet. Die sind (gerade außerhalb der USA) nicht besonders gut. Weder die Satellitenbilder noch die Straßenkarten sind annähernd so detailliert wie bei Google. Aber daran kann ja noch gearbeitet werden. Wichtig ist, dass es jetzt losgeht.

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in