
Wenn man an einem Samstag Abend alleine zu Hause ist und einen RSS-Feed über deutschlandweite Staumeldungen entdeckt, kann so etwas durchaus eine interessante Entwicklung nach sich ziehen...
Der RSS-Feed http://www.showgps.de/rds/staunews.xml bietet für alle deutschen Autobahnen die aktuellen Verkehrsmeldungen. RSS-Feed heißt, es ist ein XML-Dialekt, heißt, diese Datei ist von hinten nach vorne mit Java-Bordmitteln gut zu verarbeiten.
Die weitere Überlegung war, eine Handy-Applikation zu entwickeln, die nach Eingabe von Autobahnnummern die entsprechenden Verkehrsmeldungen aus dem Feed auf das Handy bringt. Die Bereitstellung der Information sollte durch ein Servlet geschehen, das die Autobahnnummern entgegen nimmt, den Feed parst, die entsprechenden Informationen deriviert und diese in den Response packt.
Gesagt, getan. Das Servlet wurde entsprechend erstellt und kurz überlegt, ob man sich wirklich an den Java-Bordmittel (sprich Sax-Parser) zum parsen des Feeds bedient oder doch nach einer Lösung sucht, die speziell auf RSS-Feeds ausgerichtet ist. Das kurze Überlegen mit Hilfe von Google brachte den Artikel "RSS Utilities: A Tutorial" hervor. Dieser Artikel verweist auf eine minimale Bibliothek, die den Ansprüchen vollstens genügt und wurde in die Webapplikation integriert.
Das Servlet war fertiggestellt, getestet und für die weltweite Öffentlichkeit freigegeben. Es ging nun an die Entwicklung der mobilen Applikation. Diese wurde in der J2ME entwickelt. Folgende Anforderungen wurden gestellt bzw. folgender Ablaufzyklus sollte realisiert werden:
- Eingabe der Autobahnnummer/n (Getrennt durch Leerzeichen)
- Abfrage des Servlets, Autobahnnummmern als Übergabeparameter
- Ausgabe der Meldungen
Da die Anforderungen minimal waren, sollte das Layout der Applikation entsprechend sein:
- Eingabefeld für die Autbahnnummern
- Ausgabefeld für die evtl. Verkehrsmeldungen
- Definition von zwei Kommandos:
- Abfragen -> Anfrage an das Servlet senden
- Beenden -> Beenden der Applikation
Die Implementierung gelang ohne Probleme und es konnte auf rechter breiter Basis entwickelt werden. Die Applikation benötigt die Konfiguration CLDC 1.1 und das Profil MIDP 2.0. Zusatzpakete der J2ME sind nicht nötig. Erfolgreich getestet wurde die Applikation bisher mit einem Sony Ericsson K750i und einem Palm Treo.
Wer die Applikation selber testen möchte (ich bitte um Testergebnisse):
Das war der erste Streich...
Ein weiterer Feed mit Verkehrsinformationen tauchte auf: ANTENNE BAYERN Staumeldungen deutschlandweit. Der Quelltext des Feeds enthielt für jeden Eintrag/Item ein äußerst interessantes Tag:
<georss:line>8.984 53.0415 9.01935 53.05215 9.03065 53.0525 9.1586 53.0809</georss:line>
Weiterhin einen interessanten Namespace:
<rss version="2.0" xmlns:blogChannel="http://www.antenne.de" xmlns:georss="http://www.georss.org/georss">
Der Feed war ein so genannter
GeoRSS-Feed. Auf den ersten Blick eine ideale Ergänzung für den
Naxos TrailPlayer um ihn mit einem Traffic Overlay zu versehen. Das Tag
georss:line enthielt augenscheinlich die Koordinaten, die den Stauverlauf beschreiben und der Inhalt sollte sich eigentlich problemlos als
GPolyline auf der Map des TrailPlayer darstellen lassen. Dies war auch soweit richtig, bloß befanden sich die Polylines alle am
Horn von Afrika! Entgegen der sonst üblichen Vorgehensweise eine Koordinate als Längengrad/Breitengrad zu definieren, war es hier genau anders rum. Dies ließ sich soweit programmiertechnisch ohne weiteres lösen. Ein anderes Problem an diesem Feed ist, dass teilweise Koordinaten definiert sind, die mit dem eigentlichen Stau überhaupt nichts zu tun haben. Beispielsweise wird ein Stau zwischen Frankfurt und Offenbach vom ersten bis zum vorletzten Punkt korrekt definiert. Der letzte Punkt liegt dann aber in Bremen?! Eine weitere Seltsamheit trat in der Form auf, dass die Grenzen eines Bundeslandes bei einer Staumeldung hinterlegt waren. Wieso, weshalb, warum? Leider keine Ahnung... Nachvollziehen kann man dieses Verhalten, wenn man die Feed-URL "http://www.antenne.de/cf/verkehr/deutschland_rss.xml" bei
maps.google.de eingibt.
Zur Aufbereitung des Feeds wurde diesmal der SaxParser der J2SE herangezogen. Evaluiert wurde das GeoRSS Module der RSS-Bibliothek Rome. Laut Release History, sollte die Bibliothek Unterstützung für <georss:line> bieten. Die Vorgehensweise blieb aber im Dunkeln.
Die Freude über den "gefundenen" Feed ist geteilt. Er besitzt ein paar Unzulänglichkeiten aber trotzdem einiges mehr als andere. Weitere frei verfügbare Feeds oder Services die ähnliches bieten konnten leider noch nicht gefunden werden. Wer in der Richtung etwas entdecken sollte, MELDEN. Interessant sind durchaus auch solche Services, die z.B. POI's (Points of Interest) bereitstellen o.ä.
Weitere Links zum Thema "Rome":
When in Rome…
ROME in a Day: Parse and Publish Feeds in Java
Weitere Links zum Thema "GeoRSS":
http://highearthorbit.com/georss-multiple-locations/
GeoRSS Weblog
Mapping fun with GeoRSS and geo-discovery
Golem.de: Google Maps bietet Unterstützung für GeoRSS
Super, macht Lust auf mehr... Hier noch ein paar Links zum Thema:
Die Spezifikation zu GeoRSS liegt bei georss.org
Viele Specs im Geo/GIS-Umfeld liegen beim OGC
Auch das W3C hat natürlich ein RDF Vokabular dazu
Es muss auch nicht immer Google Maps sein. Wer es selbst machen will findet GeoServer vermutlich hilfreich
Hervorragend für die Umsetzung von Ortsnamen, Postleitzahlen, etc. in Koordinaten sind die WebServices bei geonames.org. Hier findet man teilweise auch POIs in der Umgebung
Falls es denn Routing sein soll: PGDijkstra ist ein Modul für die PostgreSQL