OSM Minikarten selber erstellen

Wer für ein begrenztes Gebiet eine Karte auf seinem Garmin GPS benötigt, kann sich diese sehr einfach aus Openstreetmap Daten selber erstellen. Hierzu wird lediglich das Programm mkgmap benötigt. Dieses Programm ist ein in Java geschriebenes OpenSource Programm, welches auf der mkgmap Website herunter geladen werden kann. Da es sich um ein Java-Programm handelt muß eine Javalaufzeitumgebung in mindestens Version 1.6 installiert sein. mkgmap ist eine Kommandozeilenanwendung. Für Windows existiert auch eine grafische Oberfläche, auf die ich hier aber (auch mangels eines Windowssystems) nicht eingehen werde. Ist Java installiert und mkgmap ausgepackt kann es losgehen.

Auf der Openstreetmap Website existiert oben neben Karte, Bearbeiten und Chronik auch noch ein Link auf Export. Wählen Sie einen Kartenbereich, den Sie exportieren wollen und klicken Sie dann auf Export. Hier läßt sich unter anderem ein Format für den Export einstellen. Wählen Sie hier OpenStreetMap-XML-Daten. Klicken Sie dann auf Einen anderen Bereich manuell wählen. Dann können Sie mit der Maus einen Rahmen um den Bereich ziehen, den Sie exportieren wollen. Klicken Sie dann auf den Button Export. Daraufhin wird eine Datei namens map.osm herunter geladen. Diese Datei enthält alle OpenStreetMap Daten im XML-Format. OpenStreetMap begrenzt die Größe solcher Bereiche, so das nicht beliebig große Bereiche exportiert werden können.

Die herunter geladene Datei kann nun mit mkgmap umgewandelt werden:

java -jar mkgmap.jar --add-pois-to-areas --gmapsupp --description="Meine Karte" map.osm

Dies wird eine Datei gmapsupp.img erstellen, welche dann auf das GPS kopiert werden kann. Die Darstellung der Elemente erfolgt dann mit Defaulteinstellungen. Mit java -jar wird das entsprechende angegebene Java-Programm gestartet. Die Option --gmapsupp erzeugt die gmapsupp.img Datei. Die Option --add-pois-to-areas erzeugt einen POI für flächige Elemente, die sonst zwar als Fläche aber nicht als POI erstellt werden. Mit --description wird ein Name für die Karte vergeben, der so auch auf dem GPS angezeigt wird.

Welche Elemente auf der Karte dargestellt werden, wird durch ein Style-File bestimmt. mkgmap wird mit einem Default-Style-File ausgeliefert welches man für eigene Zwecke einfach abwandeln kann. Der Default-Style liegt im mkgmap Ordner unter examples/style/default. Diesen Ordner kann man kopieren und anschließend die darin befindlichen Dateien bearbeiten. Die Datei lines enthält Definitionen für Linienartige Objekte (hauptsächlich also Wege und Strassen), während points Punktobjekte definiert und polygons Flächenobjekte. Hat man seine Änderungen vorgenommen, benennt man den Ordner um und packt ihn als Zip-Datei. Diese Zip-Datei läßt sich anschließend als Style-File für mkgmap verwenden indem man beim Aufruf von mkgmap den zusätzlichen Parameter --style-file= angibt, zum Beispiel:

java -jar mkgmap.jar --add-pois-to-areas --gmapsupp --description="Meine Karte" --style-file=mystyle.zip map.osm

Möchte man die Karte auf einem eTrex 10 verwenden (wie hier beschrieben) kann folgendes Style-File verwendet werden: mystyle10.zip. Dieses Style-File ist optimiert auf die Darstellung auf dem Schwarz/Weiß-Display des eTrex 10 und stellt generell keine Flächenelemete (wie etwa Wälder und Wiesen) dar, sondern nur Strassen, Wege und einige wenige Punktobjekte (Berge, Stadtnamen).

Größere Karten erstellen

Wer Karten etwas größerer Gebiete erstellen möchte, benötigt zusätzlich zu mkgmap noch den Tile-Splitter. Auch dieser ist ein Java-Programm und läßt sich ebenfalls auf der mkgmap Website downloaden. Der Splitter hat die Aufgabe größere Karten in einzelne Teile zu teilen, damit das GPS die Karte handhaben kann.

Da der Export größerer Gebiete nicht direkt von der Openstreetmap Website möglich ist, müssen die Daten von einer anderen Website geladen werden. Die beste Website für solche Downloads ist hier der Downloadserver von Geofabrik. Laden Sie die entsprechende *.osm.pbf Datei des gewünschten Gebiets herunter.

Danach muß das Gebiet mit dem splitter in Teilbereiche aufgeteilt werden:

java -Xmx700M -jar splitter.jar nordrhein-westfalen.osm.pbf

Die Option java -jar startet wiederrum das entsprechende Java Programm. Mit der Option -Xmx wird für Java der Heap Speicher angegeben, bzw, vergrößert. In diesem Beispiel wird der Heapspeicher auf 700 MB gesetzt. Im Normallfall benutzt Java nur 256 MB Heapspeicher, was jedoch für die Erzeugung großer Karten nicht ausreichend ist, so daß diese Option benutzt werden muß. Die Angabe sollte entsprechend kleiner sein, als der gesamte verfügbare Arbeitsspeicher des Rechners. Hat der Rechner zum Beispiel 1 GB Arbeitsspeicher, ist die hier gezeigte Option mit 700 MB sinnvoll. Karten größerer Länder benötigen unter Umständen noch deutlich mehr Speicher. Am Ende werden die zu teilenden OSM-Daten angegeben.

Das Teilen wird etwas dauern. Ist der Splitter fertig, erhät man im aktuellen Arbeitsverzeichnis eine Reihe von *.osm.pbf Dateien mit Nummern als Namen. Im Standardfall werden die Nummern beginnend von 63240001 an hochgezählt. Die entstandenen *.osm.pbf Dateien müssen nun mit mkgmap weiter bearbeitet werden:

java -Xmx700M -jar mkgmap.jar --mapname=63240901 --description="OSM NRW" --gmapsupp --route --remove-short-arcs --add-pois-to-areas *.osm.pbf

Auch hierbei muß der Heapspeicher für Java vergrößert werden (-Xms700M). Die Optionen --description, --gmapsupp und --add-pois-to-areas wurden bereits weiter oben erklärt. Mit --mapname wird die vergebene Nummer für die enthaltenen Tiles geändert. Dies ist notwendig, da das GPS mehrere Karten nur anzeigt, wenn deren Tiles jeweils unterschiedliche Nummern haben. Daher sollte man für jede generierte Karte eine andere Nummer wählen. Außerdem besteht jede Karte aus möglicherweise vielen Tiles (größere Gebiete können über hundert Tiles haben) und jedes Tile braucht eine einmalige Nummer. Die angegebene Nummer ist die von der aus hoch gezählt wird. Mit --route wird die erzeugte Karte Routingfähig. Die Option --remove-short-arcs verhindert, daß Bögen von wenigen Metern dazu führen daß das Routing fehlschlägt. Dies kann bedingt durch die Ungenauigkeit von GPS-Koordinaten ansonsten passieren.

Auch in diesem Fall wird eine gmapsupp.img Datei erzeugt, die anschließend auf das GPS kopiert wird.