Aus Linux-Magazin 06/2010

Openstreetmap-Daten auf GPS-Geräten von Garmin

Abbildung 1: Mit Daten von Openstreetmap und ein paar Linux-Tools kommt der Garmin-Besitzer kostenlos zu Karten.

Besitzer von Garmin-GPS-Geräten müssen nicht unbedingt teure Karten kaufen: Die Daten von Openstreetmap werden zunehmend detaillierter und sind kommerziellen Kartendaten schon vielerorts überlegen. Dieser Artikel zeigt, wie die Open-Source-Karten dank freier Software aufs Gerät kommen .

Abbildung 1: Mit Daten von Openstreetmap und ein paar Linux-Tools kommt der Garmin-Besitzer kostenlos zu Karten.

Abbildung 1: Mit Daten von Openstreetmap und ein paar Linux-Tools kommt der Garmin-Besitzer kostenlos zu Karten.

Besitzer von Garmin-GPS-Geräten haben meist gut lachen: Die Geräte sind robust, besitzen eine lange Akkulaufzeit und eignen sich gut für die Outdoor-Navigation. Doch wer auf neueren Geräten auch digitale Karten zur Orientierung einsetzen will, dem treibt oft der Preis Tränen in die Augen. Glücklicherweise bietet das Projekt Openstreetmap freie Daten sowie Werkzeuge [1], um die freien Open-Source-Karten legal und kostenlos auf den eigenen Garmin zu bringen.

Wem die angebotenen vorkonvertierten Garmin-Karten [2] für seine Zwecke reichen, der lädt nur die gewünschte Karte herunter und kopiert das fertige Garmin-Kartenimage »gmapsupp.img« in ein Verzeichnis namens »Garmin« auf die SD-Karte seines Geräts. Die angebotenen Karten unterscheiden sich in Abdeckung, Darstellung und weiteren Details.

Falls für einen gewünschten Bereich keine fertigen Garmin-Karten zur Verfügung stehen, kann der Anwender selbst Hand anlegen und die Openstreetmap-Daten nach eigenen Vorstellungen konvertieren. Er benötigt dafür zunächst einen Ausschnitt der XML-Rohdaten von Openstreetmap. Der lässt sich über den »Export«-Tab auf [http://openstreetmap.org] exportieren oder als Auszug aus dem Planetfile bei der Geofabrik GmbH [3] herunterladen. Empfehlenswert ist zunächst das Testen von nur kleineren Bereichen.

Zum Konvertieren der Daten aus Openstreetmap auf eine Garmin-Karte dient das Java-Programm Mkgmap [4]. Es ist unter der GPL lizenziert, setzt Java 6 voraus und bietet viele Möglichkeiten, das Ergebnis zu beeinflussen. Grundsätzlich organisieren Stylefiles, die Regeln für Punkte, Linien, Flächen und Relationen enthalten, die Zuordnung von Openstreetmap-Objekten zu Garmin-Objektcodes. Für erste gute Ergebnisse reicht der Default-Style, der bereits in das Programm einkompiliert ist.

Karten maßgeschneidert

Außerdem lässt sich der Kartenbau durch viele Kommandozeilenoptionen von Mkgmap beeinflussen. Einen schnellen Überblick über die Möglichkeiten verschafft ein einfacher Aufruf des Programms mit »java -jar mkgmap.jar«. Kleinere Datenausschnitte lassen sich so konvertieren:

java -ea -jar mkgmap.jar --route --gmapsupp map.osm

Die Option »–route« sorgt dafür, dass das Programm die Karte mit Routinginformationen wie Einbahnstraßen, Zugangs- und Abbiegebeschränkungen, Höchstgeschwindigkeiten, Oberflächenbeschaffenheit und natürlich mit dem notwendigen topologischen Routingnetz anreichert. Obwohl sich die Routingfunktionalität in letzter Zeit dank Reverse Engineering stark verbessert hat, ist immer noch nicht das komplette Garmin-Kartenformat bekannt, Fehler bei der Routenberechnung können daher auftreten.

Wer an der Küste wohnt, kann mit der Option »–generate-sea« versuchen Polygone zur Darstellung des Ozeans zu erzeugen. Eine weitere nützliche Option ist »–add-pois-to-areas«, die flächig erfasste Objekte in Openstreetmap wie Geschäfte, Tankstellen und Ähnliches zusätzlich in ein Punktobjekt konvertiert, das sich über das »Find«-Menü von Garmin suchen lässt (Abbildungen 1 und 2).

Abbildung 2: Points of Interest lassen sich im »Find«-Menü suchen.

Abbildung 2: Points of Interest lassen sich im »Find«-Menü suchen.

Abbildung 3: So sieht der nächste Blumenladen auf Garmin-Geräten aus.

Abbildung 3: So sieht der nächste Blumenladen auf Garmin-Geräten aus.

Stückchenweise

Wer größere Datenmengen in eine Garmin-Karte verwandeln möchte, lernt schnell die Grenzen des GPS-Geräts kennen: Es passen nicht beliebig viele Daten in eine Garmin-Kachel. Die Openstreetmap-Daten müssen also vorher in mehrere rechteckige Kacheln aufgeteilt werden. Die ebenfalls in Java geschriebene freie Software Tilesplitter [5] übernimmt diese Aufgabe und kann dabei je nach der Datendichte in Openstreetmap die Kachelgröße anpassen.

Die entstandenen komprimierten Kacheln lassen sich anschließend mit Mkgmap in Garmin-Kacheln übersetzen und zu einer fertigen Garmin-Karte zusammenfassen. Es ist viel Hauptspeicher erforderlich, um große Datenmengen wie beispielsweise die Europakarte zu verarbeiten.

Abbildung 4: Europa in Kacheln aufgeteilt. Die gewählte Kachelgröße ist von der Datendichte im jeweiligen Ausschnitt abhängig.

Abbildung 4: Europa in Kacheln aufgeteilt. Die gewählte Kachelgröße ist von der Datendichte im jeweiligen Ausschnitt abhängig.

Da der Splitter die Eingabedaten oft in mehreren Durchläufen liest, ist es lohnenswert, mit der »–cache«-Option einen Cache auf der Festplatte anzulegen. Die Option »–max-nodes« bestimmt, wie viele Nodes in einer Kachel maximal vorkommen dürfen:

java -Xmx6000M -jar splitter.jar --max-nodes=1500000 --cache=./cache europe.osm.bz2

Die genaue Grenze ist nicht bekannt, ein zu hoher Wert lässt sich leider erst bei einem Mkgmap-Durchlauf feststellen. Da auf einigen Geräten und Firmware-Versionen die Gesamtzahl der Kacheln beschränkt ist und außerdem an Kachelübergängen häufig Routingprobleme auftreten können, sollte man trotzdem einen möglichst hohen Wert für »–max-nodes« einstellen und so die Anzahl der Kacheln klein halten.

Nach einem Splitter-Durchlauf befinden sich in der Datei »areas.list« die Koordinaten der Kacheln. Es ist möglich, diese Datei per Hand zu optimieren und sie dem Splitter das nächste Mal mit »–split-file« als Splitmuster vorzugeben. Die Kacheln müssen dann nicht mehr automatisch berechnet werden, was Rechenzeit spart. Weitere interessante Funktionen von Splitter sind im Internet gut (in Englisch) dokumentiert [6].

Um den beschränkten Garmin-Standardlook optisch aufzuwerten, lassen sich so genannte Typfiles einsetzen. Diese definieren die Darstellung von Garmin-Objekten auf den Geräten. Somit ist es möglich, mit einem eigenen Mkgmap-Stylefile Openstreetmap-Objekte auf ungenutzte Garmin-Codes abzubilden und diesen mit Hilfe eines Typfile ein sinnvolles Symbol zuzuordnen. Zum Editieren von Typfiles gibt es einen Open-Source-Online-Editor [7], der relativ selbsterklärend ist.

Coole Typen

Wichtig bei der Nutzung von Typfiles ist, dass »family-id« und »product-id«, die jede Garmin-Karte beim Erstellen zugewiesen bekommt, mit den im Typfile festgelegten übereinstimmen. Die IDs sind frei wählbar, sollten aber möglichst nicht mit denen gleichzeitig genutzter anderer Karten übereinstimmen. Weitere Informationen zu Typfiles gibt es unter [8]. Mkgmap bekommt das Typfile einfach als Eingabeparameter übergeben und setzt die IDs der zu generierenden Karte passend zu den im Typfile eingestellten. In dem Verzeichnis »mystyle« befinden sich die eigenen Style-Dateien:

java -ea -jar mkgmap.jar --style-file=mystyle --family-id=23 --product-id=42 map.osm typfile.TYP

Trotz aller bereits geleisteten Arbeit gibt es noch viel zu tun. Manches, beispielsweise die Adressensuche oder korrektes Routing über Kachelgrenzen hinweg, lässt sich in Zukunft höchstwahrscheinlich durch genaueres Untersuchen des Garmin-Kartenformats verbessern. Auf Unterstützung von Garmin hoffen die Entwickler aber bislang vergebens. Eine Hardware ähnlicher Qualität mit komplett freier Software wäre langfristig die schönere Lösung. Möglicherweise lassen sich viele Ideen aus dem bisherigen Datenaufbereitungsprozess durch Mkgmap auch für andere Karten nutzen.

Bis es so weit ist, werden Garmin-Karten auf Basis von Openstreetmap wohl weiter als Schritt in Richtung Freiheit eine Rolle spielen. Wer Interesse hat, daran teilzunehmen und Style- sowie Typfiles für die frei herunterladbare All-in-one-Karte [9] zu entwickeln, ist herzlich eingeladen sich im Openstreetmap-Wiki [10] zu registrieren und mit dem Autor Kontakt aufzunehmen. (mhu)

Infos

[1] Garmin-Tools: [http://wiki.openstreetmap.org/wiki/DE:OSM_Map_On_Garmin]

[2] Fertige Garmin-Karten: [http://wiki.openstreetmap.org/wiki/DE:OSM_Map_On_Garmin/Download]

[3] Auszüge aus dem Planetfile: [http://download.geofabrik.de/osm/]

[4] Mkgmap: [http://www.mkgmap.org.uk]

[5] Tilesplitter: [http://www.mkgmap.org.uk/page/tile-splitter]

[6] Anleitungen zu Mkgmap und Splitter: [http://www.cferrero.net/maps/maps_index.html]

[7] Typfile-Editor: [http://ati.land.cz/gps/typdecomp/]

[8] Mehr über Typfiles: [http://www.cferrero.net/maps/guide_to_TYPs.html]

[9] All-in-one-Karte: [http://wiki.openstreetmap.org/wiki/DE:All_in_one_Garmin_Map]

[10] Kontakt zu Christoph Wagner: [http://wiki.openstreetmap.org/wiki/Special:EmailUser/Master]

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 2 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben