User:De muur

From OpenStreetMap Wiki
Jump to navigation Jump to search

Eigene OSM-Karten fuer Garmin Geräte erzeugen

Da jeder sicherlich seine eigenen Vorstellungen hat, wie eine gute Karte auszusehen hat, kann man das optimale Ergebniss nur erreichen, wenn man sich die Karten selber macht.

Aus diesem Grund beschreibe ich auf dieser Seite, wie ich mir aus den OSM-Daten (und den SRTM-Höhendaten) meine persönliche, nicht routingfähige Karte fuer Garmin Navigationsgeräte erstelle. Damit das jeder möglichst leicht nachvollziehen und nach seinen Vorstellungen abändern kann, gibt es die nötigen Konfigurations-Datein und Links zu den unterwegs verwendeten Programmen mit dazu. Natürlich muss man in den Skriptdateien noch die Verzeichnispfade anpassen, denn jeder wird die Dateien bei sich sicherlich anders sortieren.


Wer sich nicht selber die Arbeit machen moechte, der kann unten auch meine fertigen Kartendateien für Deutschland herunterladen, um sie in den Garmin-Programmen zu nutzen oder mit dem sendmap-Programm auf sein Garmin Navigationsgerät zu übertragen. Entsprechend meiner persönlichen Nutzung ist die Karte fuer Fahrrad- oder Wanderausflüge jenseits der Städte optimiert.


Von OSM zur Garmin-Karte

Wie man in der folgenden Grafik sehen kann, ist es durchaus ein relativ langer Weg, um seine eigenen Garmin-Karten aus den OSM-Daten zu bauen. Der Vorteil davon ist aber, dass man unterwegs alle Freiheiten hat, die in der Karte enthaltenen Elemente und die Art der Darstellung an seine Vorlieben anzupassen.

Garmin Maps Workflow DE.png

In den folgenen Absätzen werdern die einzelnen Zwischenstationen, sowie die dazwischenliegenden Bearbeitungsschritte erläutert. Basierend darauf kann dann jeder selbst entscheiden, welche Konvertierungen er selber machen will und welche Zwischenergebnisse er von anderen übernehmen möchte.

Die angegebenen Programme und Skripte sind bei mir auf einem Windows Vista64 Rechner im Einsatz, auf Linux lassen sich die Schritte leider nicht alle direkt übertragen.


A) OSM Worldfile

Ausgangsbasis für die Karten sollte der wöchentlich aktualisierte Planet.osm Abzug der kompletten OSM-Datenbank sein. Dank dieses Abzugs braucht nicht jeder selbst die grossen Datenmengen (im Dezember 2008 etwa 95 GByte) aus der Datenbank extrahieren und kann so die Datenbank-Server entlasten.

Diese doch sehr erhebliche Menge an Daten kann man so natuerlich nicht dem Navigationsgerät vorsetzen. Die Planet-Datei muss also erstmal in handlichere Portionen unterteilt werden.

Wenn man nur an der Karte einer sehr kleinen Region unteressiert ist, so kann man sich die OSM-Daten auch frisch über das OSM-API holen (z.B. mit JOSM). Dann kann man natürlich den nächsten Schritt auslassen und unten weiter lesen.


I. Unterteilen der OSM-Daten in Kacheln mit osmcut oder splitter

Das Zerschneiden mit osmcut kann man Computerteddy überlassen, der jeden Donnerstag basierend auf dem aktuellen Worldfile frische Kacheln bereit stellt. Wenn man sich die Kacheln selber passend zurecht schneiden will, dann sollte man am Besten das Programm splitter benutzen, da dieses extra für die spätere Bearbeitung mit mkgmap ausgelegt ist.

B) OSM Kacheln

Die zurechtgeschnittenen lade ich mir bei Computerteddy runter. In der folgenden Grafik kann man ablesen, welche Kachel welches Gebiet abdeckt.

Garmin Maps Maptiles Germany.png

Zum Laden der Daten benutze ich dieses Skript.

Anschließen müssen die einzelnen Dateien noch entpackt werden, wofür ich das kostenlose PeaZip benutze, da man dieses über die Kommandozeile aufrufen kann. Um alle Dateien auf einen Schlag zu entpacken, benutze ich dieses Skript. Die entpackten OSM-Daten von der Deutschlandkarte sind z.Z. gut 6GB gross, wobei die Datenmenge ständig zunimmt, weil ja laufend neue Elemente in OSM eingetragen werden.


C) SRTM Datenbank

Die NASA hat im Februar 2000 während einer Space-Shuttle Mission per Radar den größten Teil der Erdoberfläche (ausser den Polbereichen) vermessen. Die aus dieser Shuttle Radar Topography Mission (SRTM) stammenden Höhendaten sind nun frei im Internet verfügbar. Die Daten liegen als Bitmap vor, d.h. die Erdoberfläche ist in kleine Teile aufgeteilt worden, denen jeweils ein einheitliche Höhenwert zugeordnet ist. Außerhalb von Amerika haben diese Elemente in den verfügbaren Daten eine Kantenlänge von 3 Bogensenkunden. Leider kann man mit den Daten so direkt erstmal nicht viel anfangen.


II. Erzeugen der SRTM Kacheln mit srtm2osm

Um die SRTM-Daten für OSM-Karten nutzen zu können, gibt es das Srtm2OSM-Programm. Beim Aufruf des Programmes gibt man als Parameter an, für welchen Bereich man die Höhendaten haben will, und welchen horizontalen Abstand die Höhenlinien haben sollen. Das Srtm2OSM lädt daraufhin selbstständig die notwendigen Daten vom NASA-Server runter, generiert aus dem Bitmap die Höhenlinien und speichert diese im OSM-Format ab.

Zum Erzeugen der SRTM-Höhenlinien benutze ich diese Skripte. Die dadurch erzeugten Kacheln entsprechen vom Gebiet her den OSM-Kacheln, die ich wöchentlich von Computerteddy runterlade, so dass ich anschließend die OSM- und die SRTM-Daten kachelweise kombinieren kann.


D) SRTM Kacheln

Die SRTM-Daten selber ändern sich ja nicht mehr, so dass man sich eigentlich nur einmal einen passenden Datensatz erzeugen muss. Allerdings macht es durchaus Sinn, beim horizontalen Abstand zwischen den Höhenlienen ein wenig rumzuprobieren, um einen brauchbaren Konpromiss zwischen der Detaillierung und der anfallenden Datenmenge zu finden. Ich benutze Abstände von 5m, 20m oder 100m, jenachdem wie bergig die Landschaft in der entsprechenden Kachel ist. Damit kommen dann etwa 15GB an Daten zusammen.

III. Zusammenführen der OSM und der SRTM Kacheln

Nun liegen zwei getrennte osm-Dateien für jede Kachel vor: eine mit den OSM-Daten und eine mit den SRTM-Daten. Um diese Daten in einer Datei zu vereinen habe ich mir ein kleines Programm geschrieben, das einfach die einzelnen Zeilen der beiden Ursprungsdateien hintereinander in eine gemeinsame Zieldatei kopiert. Dabei wird ganz stumpf von der ersten Datei die letzte Zeile und von der zweiten Datei die ersten beiden Zeilen weggelassen. Bei den meisten Dateien funktioniert das so einfach, nur wenn gar keine OSM-Elemente in der datei enthalten sind, versagt diese Methode.

Um alle Kacheln auf einen Schlag zu kombinieren, benutze ich dieses Skript.


E) Fertig aufbereitete *.osm Dateien

Die Kacheln mit den kombinierten SRTM- und OSM-Daten sind zusammen fast 22GB gross und können nun in das Garmin-Format konvertiert werden.

Alternativ könnte man die OSM- und die SRTM-Daten auch getrennt ins Garminformat konvertieren. Das hätte den Vorteil, dass man sich das regelmäßige Kombinieren (Schritt III.) und das Konvertieren der SRTM-Daten (Schritt IV.) sparen könnte, da sich die Daten ja nicht mehr ändern. Anschließend müßte man dann die beiden Kacheln gemeinsam auf das Navigationsgerät laden, wobei die SRTM-Karte auf transparent gesetzt werden muss, damit unter ihr dann noch die OSM-Karte sichtbar ist. Im Ergebniss wäre der Prozess also am Ende fehleranfälliger. Außerdem könnte man die fertige Karte auch nicht im Mapsource-Programm von Garmin kontrollieren, da dort immer nur eine Karte zur Zeit angezeigt wird.


F) mapfeatures Datei

Die mapfeatures-Datei steuert die Konvertierung der OSM-Daten in das Garmin-Format.

Die von mir benutzte mapfeatures-Datei kann man hier bekommen.


IV. Erzeugen von Garmin *.img Dateien aus den *.osm Dateien mit mkgmap

Zum Erzeugen der Garmin-img-Dateien und der Garmin-tdb-Datei benutze ich das mkgmap-Programm in Version r659. In letzter Zeit hat sich mkgmap stark weiter entwickelt, was leider nicht immer sauber abwärtskompatibel ist. Deshalb bleibe ich lieber erstmal bei der doch recht alten, dafür aber bewährten Version.

Die Konvertierung der Dateien wird durch diese Skript gesteuert.


G) Binäre *.img und *.tdb Dateien

Als Ergebniss erhält man dann eine binäre tdb-Datei mit der Kartenbeschreibung, eine binäre img-Datei für die Übersichtskarte sowie für jede Kachel eine binäre img-Datei mit den Kartendaten.


H) Binäre *.typ Datei

Die binäre typ-Datei wird von den Garmin Navigationsgeräten und Programmen genutzt, um das optische Erscheinungsbild der Karten zu steuern. Sie muss immer zur verwendeten mapfeatures-Datei passen, d.h. sie muss für all die Karten-Elemente die Darstellung definieren, die bei der Konvertierung der OSM-Objekte generiert werden.

Die von mir benutzte typ-Datei kann man hier bekommen.

Man kann die Karten auch ohne typ-Datei nutzen, nur ist man dann auf die von Garmin vordefinierten Elemente beschränkt.


V. Erzeugen einer Garmin *.typ Datei mit maptk

Zum Erzeugen der Garmin-typ-Datei benutze ich das MapTk-Programm. Dieses Programm stellt einen einfachen Grafik-Editor bereit, mit dem man die Symbole, Linien und Flächenelemente zeichnen kann, die zur Darstellung der Karten-Elemente benutzt werden sollen.

Sehr nützlich ist auch die Funktion von MapTk, mit der man bestehende typ-Dateien analysieren kann. So muss man nicht ganz von vorne anfangen, sondern kann eine bestehende typ-Datei nehmen und diese nach seinen Vorstellungen abändern.


VI. Installieren der Kartendateien mit mapsettoolkit in Garmin Mapsource

Den fertigen Datensatz bestehend aus den img-Dateien, der tdb-Datei und der typ-Datei muss zur Verwendung im Garmin Mapsource-Programm in der Windows-Registry eingetragen werden. Das kann man natürlich händisch machen, besser geht es aber mit dem mapsettoolkit, dass man hier herunterladen kann.

Eine ausführliche Beschreibung der Installation der Karten mittels des mapsettoolkit Programms gibt es bei Holger_Issle.

Manchmal scheint es bei der Installation der Karten Schwierigkeiten zu geben. Bei mir selber funktionierte bislang es sowohl auf Windows XP als auch Vista64 Rechnern problemlos.


I) Die fertige Karte in Garmin Mapsource

VII. Installieren der Kartendateien mit sendmap auf ein Garmin Navigationsgerät

J) Die fertige Karte in einem Garmin Navigationsgerät

Meine Deutschlandkarte fuer Garmin Mapsource

Der folgenden Mapsource Screenshots zeigen beispielhaft, wie die Karte aussieht, wenn meine mapfeatures-Datei und meine typ-Datei wie oben beschrieben auf die OSM- und die SRTM-Daten angewandt werden.

In dieser Version ist die Karte für den praktischen Gebrauch zu stark mit Symbolen überladen. Als Ausgangsbasis fuer weitere Anpassungen ist das aber Ideal, es ist viel leichter Elemente wieder aus der Karte zu entfernen als neue hinzu zu fügen.

Beispielscreenshot ländlicher Raum:

Garmin Maps Example Cycling Map De Muur.png


Beispielscreenshot Innenstadt Dresden:

Garmin Maps Example Dresden De Muur.png


Beispiel-OSM-Datei als Hilfe fuer das Kartendesign

Um die einzelnen Anzeigeelemente der Garminkarte auszuprobieren, habe ich mir eine Beispieldatei gebaut, in der alle Elemente nebeneinander angeordnet sind. Ich habe die Elemente alle bei den Koordinaten lat 55.0 lon 09.0 plaziert. Um die Anzeige auf einem Navigationsgerät zu testen, ist es ratsam, dass die Beispielkarte möglichst dicht beim Standort liegt. Mit der Suchen-Ersetzen-Funktion von einem Texteditor lassen sich die Koordinaten problemlos anpassen.

Der folgende Mapsource Screenshot zeigt die Punkt-Symbole wenn meine mapfeatures-Datei und meine typ-Datei auf die Beispieldatei angewandt wird.

Garmin Maps Feature Example De Muur.png