ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

Mkgmap

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

mkgmap_logo.png Mkgmap {en} ist eine Anwendung, mit der Kartenmaterial für Navigationsgeräte der Firma Garmin {de} aus Daten des Projekts Open StreetMap (OSM) erstellt werden kann. Die Karten-Rohdaten können kostenfrei aus dem OSM Projekt {de} heruntergeladen werden.

Voraussetzungen

Mkgmap benötigt Java. Für diesen Artikel wurde OpenJDK verwendet. Java ist in den Paketquellen vorhanden. Hinweise dazu finden sich im dazugehörigen Artikel.

Installation

Mkgmap über die Paketverwaltung installieren. Hierzu ist ein Paket erforderlich [1]:

  • mkgmap (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install mkgmap 

sudo aptitude install mkgmap 

Karte.png

Manuell

Die manuelle Installation bietet immer die neuste Version von Mkgmap. Die Nutzung im weiteren Verlauf des Artikels bezieht sich auf eine manuelle Installation.

Die Datei mkgmap-rVERSIONSNUMMER.tar.gz {en} {dl} herunterladen und nach ~/Dokumente/mkgmap/ entpacken [5].

Benutzung

Um mit Mkgmap zu arbeiten, werden OSM Kartendaten benötigt. Diese werden von Mkgmap zur Datei gmapsupp.img verarbeitet, da Garmin-Geräte eine Datei mit diesem Namen benötigen. Während der Vorbereitung kann der Name der Datei geändert werden, z.B. in data.osm.

Hinweis:

Bei der Verwendung des Kartenmaterials über eine SD- bzw. MicroSD-Karte bleibt die interne Karte immer erhalten. Ältere Garmin Geräte können - je nach verwendeter Firmware - nur Karten von max. 2 GiB nutzen, neuere Geräte dagegen 4 GiB. Darauf ist beim Erstellen der Karten zu achten.

OSM Kartenmaterial

OSM Kartenmaterial kann auf verschiedene Arten beschafft werden. Einfach ist der Download über den Geofabrik Downloadbereich {de} . Das Verzeichnis osm/ öffnen und die entsprechende Datei suchen, z.B. osm/europe/germany/sachsen-anhalt.osm.bz2 für Sachsen-Anhalt. Nach dem Herunterladen und Entpacken [2] kann man die Datei umbenennen, was das Arbeiten mit Mkgmap vereinfacht, beispielsweise in ~/Dokumente/mkgmap/ data.osm. Die Dateigröße darf 500 MiB nicht übersteigen, da Mkgmap (noch) nicht mehr verarbeitet. Sollen größere Dateien verarbeitet werden, ist ein Splitter notwendig.

Für eine Deutschlandkarte benötigt Mkgmap ca. 7 GiB freien Speicherplatz zur Verarbeitung.

Mkgmap starten

Um Mkgmap zu starten [4], einfach in das Installationsverzeichnis wechseln. Das Verzeichnis richtet sich nach der Art der Installation. Im folgenden Beispiel liegt Mkgmap im Homeverzeichnis unter ~/Dokumente/mkgmap. Hierzu ein Terminal-Fenster [5] öffnen und in das Verzeichnis wechseln.

cd Dokumente/mkgmap 

Jetzt ist das Verzeichnis geöffnet. Hier können jetzt die Befehle für Mkgmap eingegeben werden.

java -jar mkgmap.jar --route --gmapsupp data.osm 

Erstellt wird eine Datei, mit dem Namen 63240001.img und eine fertige gmapsupp.img. Diese enthält die Daten für Ländererkennung, Postleitzahl, Städten und Straßen.

Die fertige Karte

Die fertige Datei gmapsupp.img kann in Garmin Geräten verwendet werden.

Achtung!

Nicht die interne Datei gmapsupp.img überschreiben! Immer die Datei gmapsupp.img auf einer SD-/MicroSD-Karte verwenden.

Befehle für Mkgmap

Viele verschiedene Optionen finden sich auch im WIKI Befehle für Mkgmap {de}.

Dieser Befehl ruft im Verzeichnis ~/Dokumente/mkgmap die Hilfe auf:

java -jar mkgmap.jar --help  

Der Splitter

Wenn mit Mkgmap größere Dateien größer als 500 MB verarbeitet werden sollen, ist ein Splitter nötig. Den Splitter splitter-rVersionsnummer.tar.gz in das Verzeichnis Downloads herunterladen. Die aktuelle Version ist in der Datei splitter-r200.tar.gz {en} {dl} enthalten. Diese im Verzeichnis Downloads entpacken [5]. Anschließend in den Ordner splitter-r200 wechseln und mit einem linke Maustaste Doppelklick die Datei splitter-rVersionsnummer öffnen. Im Register " Bearbeiten -> Alles auswählen" benutzen. Nun mit einem linke Maustaste Klick auf "Bearbeiten -> Kopieren" die Dateien in die Zwischenablage kopieren. Jetzt das Verzeichnis Dokumente/mkgmap öffnen und hier die Dateien mit einem linke Maustaste Klick auf "Bearbeiten -> Einfügen" einfügen.

Hinweis:

Es öffnet sich ein Fenster, in dem Ersetzen bzw. Zusammenfügen mit einem linke Maustaste Klick bestätigt wird.

Jetzt ist der Splitter im Verzeichnis Dokumente/mkgmap wie er benutzt werden kann. Anschließend kann man unter ~/Downloads den Ordner splitter-rVersionsnummer und das Archiv splitter-rVersionsnummer.tar.gz löschen.

Herunterladen einer Karte von der Geofabrik. Z.B. Germany osm/europe/germany.osm.pbf Geofabrik Downloadbereich {de} {dl} . Nach dem Download die Datei germany.osm.pbf in das Verzeichnis Dokumente/mkgmap ablegen und in dieses wechseln. Dort den Befehl zum Splitten eingeben, mit der Option -Xmx????m (Größe des zu verwendenden Arbeitsspeichers in MiB):

java -Xmx1024m -jar splitter.jar --output=xml germany.osm.pbf 

Die Ausgabe wird etwas länger dauern, was von der Kartengröße und dem vorhandenen RAM-Speicher abhängig ist:

Map is being split for resolution 13:
 - area boundaries are aligned to 0x800 map units
 - areas are multiples of 0x1000 map units wide and high
Processing germany.osm.pbf
Bounding box 5.864417 47.26543 15.050780000000001 55.14777
10.000.000 nodes processed... id=286376477
20.000.000 nodes processed... id=359867782
30.000.000 nodes processed... id=507089514
40.000.000 nodes processed... id=713665626
50.000.000 nodes processed... id=1019306236
60.000.000 nodes processed... id=1139567995
70.000.000 nodes processed... id=1283080364
...

Nach Beendigung des Splittens steht in der letzten Zeile die Dauer der Verarbeitung und die Daten.

Beispiel für die Datei germany.osm.pbf:

AP occupancy: 87462424
MAP occupancy: 21418673
MAP occupancy: 2515377
MAP occupancy: 271844
ways occupancy
MAP occupancy: 12875351
MAP occupancy: 3332938
MAP occupancy: 415469
MAP occupancy: 45812
MAP occupancy: 63
MAP occupancy: 4
MAP occupancy: 1
Thread worker-0 has finished
Elapsed time: 4h 22m 35s   Memory: Current 1933MB (1265MB used, 668MB 
free) Max 1933MB
Time finished: Mon Dec 05 12:50:55 CET 2011
Total time taken: 15813s
marko@marko-desktop:~/Dokumente/mkgmap$ 

Hinweis:

Solange der Splitter läuft, lässt sich das Terminal nicht schließen. Es zeigt die Meldung:

Prozess läuft noch.

Nach dem Splitten der germany.osm.pbf die Dateien mit folgendem Befehl, für die Verwendung mit 2 GB Arbeitsspeicher:

java -Xmx2000m -jar mkgmap.jar --remove-short-arcs --levels=0:24,1:22,2:21,3:19,4:18,5:16 --route --add-pois-to-areas --latin1 --lower-case --gmapsupp --net -c template.args 

zu einer Karte verarbeiten

Die kompletten Optionen von Mkgmap sind im OSM-Wiki - Optionen zu finden.

Mkgmap erstellt ein osmmap.tdb und eine osmmap.img. Mit diesen beiden Dateien kann die Karte mit QLandkarteGT geöffnet werden. Die geöffnete Karte (Kacheln) markieren und an das Garmin Gerät / Kartenleser übertragen.

Hinweis:

Zu empfehlen ist die Übertragung der Datei gmapsupp.img mittels eines Kartenlesers, da es wg. der Übertragungsrate von USB 1.1, zu erheblichen Wartezeiten kommen kann.

Mkgmap erstellt auch eine gmapsupp.img. Diese kann einfach auf eine SD/MicroSD Karte kopiert werden.

Der Adressindex

Um den Adressindex nutzen zu können, wird ein weiteres Verzeichnis bounds im Verzeichnis Dokumente/mkgmap benötigt. In dieses Verzeichnis bounds die Bounds Daten kopieren. Die Bounds Daten werden regelmäßig aktualisiert. Die Bounds Datei boundaries (by WanMil) hier herunterladen: Bounds {en}

Die European boundaries (by WanMil) in das Verzeichnis bounds entpacken[2]. Im Verzeichnis bounds dürfen sich dann nur .bnd Dateien befinden. Den Befehl für Mkgmap um "--bounds=bounds --index" erweitern, z.B. für die germany.osm.pbf:

java -Xmx2000m -jar mkgmap.jar --remove-short-arcs --index --location-autofill=bounds,is_in,nearest --levels=0:24,1:22,2:21,3:19,4:18,5:16 --route --add-pois-to-areas --latin1 --lower-case --gmapsupp --net -c template.args 

Die Suche erfolgt aktuell schon über die Adresseingabe.

Bounds erstellen

Um die Datei bounds selbst aktuell zu erstellen, sind weitere Schritte nötig. Ein bereits vorhandenes Verzeichnis bounds im Verzeichnis Dokumente/mkgmap löschen.

Schritt 1

Das Programm osmconvert (Programmdatei für linux 32 bit) von OSM herunterladen und Ausführrechte [9] für die Datei osmconvert32 vergeben. Anschließend die Datei in das Verzeichnis ~/Dokumente/mkgmap/ verschieben.

Schritt 2

Das Programm osmfilter32 herunterladen. Es wird ebenfalls die Programmdatei für linux 32bit von OSM heruntergeladen. Ebenfalls für osmfilter32 Ausführrechte [9] setzen und die Datei anschließend nach ~/Dokumente/mkgmap/ verschieben.

Schritt 3

Die Benutzung ist nach dem Herunterladen des Kartenmaterials sehr einfach. Als Beispiel dient wieder die Datei germany.osm.pbf.

Hinweis:

Alle Befehle werden nacheinander im Verzeichnis Dokumnete/mkgmap ausgeführt.

Hierzu die folgenden Befehle eingeben:

cd Dokumente/mkgmap                                                                                                                          # wechsel in das Verzeichnis Dokumnete/mkgmap
./osmconvert32 germany.osm.pbf --out-o5m >germany.o5m                                                                                        # germany.o5m wird erstellt
./osmfilter32 germany.o5m --keep-nodes= --keep-ways-relations="boundary=administrative =postal_code postal_code=">germany-boundaries.osm     # germany-boundaries.osm wird erstellt
java -cp mkgmap.jar uk.me.parabola.mkgmap.reader.osm.boundary.BoundaryPreprocessor germany-boundaries.osm bounds                                                        # Dieser erstellt das Verzeichnis bounds mit den darin enthaltenen Grenzdateien, Städten, Straßen und Hausnummern. 

Hinweis:

Der Inhalt, die .bnd-Dateien, können nicht geöffnet werden sie sind nur zur Weiterverarbeitung gedacht.

Der Style der Karte

Um einen anderen Style als den Mkgmapstyle zu bekommen, ein weiteres Verzeichnis z.B. name im Verzeichnis mkgmap anlegen. Ebenso benötigt man die Datei z.B. name.TYP dazu. Es gibt viele fertige Styles, hier als Beispiel der All-in-one (AIO) Style {en} . Die Datei name.TYP muss mit dem Verzeichnis name inhaltlich übereinstimmmen.

Im Verzeichnis z.B. name befinden sich 7 Dokumente mit den Namen info, lines, options, points, polygons, relations und version. Diese erstellten Dokumente mit einem Editor [6] bearbeiten.

Im Mkgmap Befehl ist Folgendes dazugekommen: --style-file=name /name.TYP

java -Xmx1024m -jar mkgmap.jar --remove-short-arcs --route --latin1 --style-file=name --gmapsupp --net -c template.args name.TYP 

Der Prozess ist abgeschlossen mit der Meldung:

Hinweis:

Time started: Thu Nov 01 19:08:00 CET 2012 Time finished: Thu Nov 01 20:30:56 CET 2012 Total time taken: 4975445ms marko@marko-desktop:~/Dokumente/mkgmaptest$

Fertige Datei nutzen

Achtung!

Achtung auf keinen Fall die interne gmapsupp.img überschreiben. Aus Sicherheitsgründen vorher ein Backup des Garmin Gerätes durchführen.

Eine z.B. 8 GB große SD bzw. Micro-SD Karte formatieren und auf dieser Karte ein Verzeichnis Garmin erstellen. Die fertige Datei gmapsupp.img in das Verzeichnis Garmin kopieren. Die Karte in das ausgeschaltete Garmin Gerät einstecken und das Gerät einschalten.

Nach der Anzeige "Karten laden" läuft kurz ein Balken voll und die Karte ist erkannt und wird verwendet. Es ist angeraten, zur Übertragung einen Kartenleser zu nutzen und nicht die USB Schnittstelle des Garmin Gerätes, da es sonst zu erheblichen Wartezeiten kommen kann.

Hinweis:

Ältere Garmin Geräte können nur Dateien bis 2 GB verarbeiten, neuere dagegen bis 4 GB.

Die Karte kann im Garmin Gerät unter "Einstellungen" aktiviert oder deaktiviert werden.

mapsource.png

Übertragen mit MapSource

Der Mkgmap Befehl für die Kartenerstellung ist dann wie folgt:

java -Xmx2000m -jar mkgmap.jar --remove-short-arcs --preserve-element-order --bounds=bounds --index --levels=0:24,1:22,2:21,3:19,4:18,5:16 --route  --code-page=1250 --latin1 --add-pois-to-lines --add-pois-to-areas --style-file=lkw --gmapsupp --location-autofill:bounds --family-id=4 --product-id=45 --tdbfile --family-name=Meine-Karte --net -c template.args 

Um die Karte mit MapSource zu übertragen, werden diverse Programme benötigt, die man mit Wine [7] ausführt.

Hinweis!

Fremdsoftware kann das System gefährden.

Um die Karte mit MapSource zu übertragen wird MapSource benötigt: MapSource.exe {dl}

Oder eine weitere Version: Mapsource_6137.exe {de} {dl}

Um die Karte in MapSource einzubinden, wird MapSetToolKit benötigt: MapSetToolKit.exe {dl} (32-Bit) oder MapSetToolKit_v1.75.zip {dl} (64-Bit)

MapSetToolKit läuft ebenfalls unter Wine.

Und das Paket unrar

  • unrar (multiverse)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install unrar 

sudo aptitude install unrar 

Es folgen dann noch weitere Schritt, die bei MapSource Version 6.13.7 ausgeführt werden müssen:

  • unzip MapSource_6137.exe

  • wine msiexec /i MAIN.msi

  • wine Setup.exe

Mapsource wird dann nur starten, wenn mit MapSetToolKit eine OSM Karte installiert wurde.

Um den Kartenleser für MapSource nutzen zu können, ist die Konfiguration von Wine erforderlich. Als erstes ein Terminal öffnen und folgenden Befehl eingeben und die Entertaste drücken:

Befehl zum erstellen eines symbolischen Links auf den Kartenleser:

ln -s /dev/ttyUSB0 .wine/dosdevices/com1 

Auf der Karte ist nun eine Datei .windows-serial, die Wine benötigt. Diese Datei nicht löschen!

Im 2. Schritt in der Dash-Startseite unter Suche Konfiguriere Wine eingeben. Das Konfigurationsfenster von Wine öffnet sich, im Register "Laufwerke" wählen.

Beispiel für ein Kartenleser:

I: /media/F47E-1901/

Unter 12.10 ist befindet sich die Verbindung hier:

I: /run/media/Rechnername/F47E-1901/

Nun den Laufwerksbuchstaben anklicken, um ihn zu markieren. In der Zeile Pfad ist der Pfad ersichtlich, nun darunter Erweitert wählen. In der Zeile Typ Diskette auswählen und abschließend unten mit Anwenden verlassen.

Um den Kartenleser auch nach einem Neustart des Computers zu nutzen, die Datei etc/rc.local mit Root-Rechten bearbeiten. Eine weitere Zeile nach exit 0 einfügen:

exit 0

ln -s /dev/ttyUSB0 .wine/dosdevices/com1

Um die Karte in MapSource einzubinden, diese Anleitung nutzen: Karte_einbinden.pdf {de} {dl}

Übertragen mit MapSource ab Ubuntu 12.10

mapsource2.png

Zum Übertragen mit MapSource wird folgende Version benötigt: MapSource_6163.exe {dl}

Zuerst mit MapSetToolKit die Karte einbinden, wie in der Anleitung beschrieben. Im zweiten Schritt MapSource starten, Hierbei ist keine Installation erforderlich, MapSource wird sofort geöffnet und die Karte kann übertragen werden.

Hinweis:

Im MapSource muss das Häkchen unten links bei "Include route calculation data" gesetzt werden!

Erstellte Karte löschen

Nachdem die erstellte Karte verwendet wird, sollten folgende Verzeichnisse/Dateien im Verzeichnis Dokumente/mkgmap gelöscht werden. Nach dem Löschen kann erneut eine aktuelle Karte erstellt werden.

Hinweis:

Löschen von: .args / .img / .osm.gz / .tdb / .list / .o5m / .osm.pbf / .osm / mdr.img / .mdx / bounds

Eine Mehrländerkarte erstellen

Um eine grenzüberschreitende, routable Mehrländerkarte zu erstellen, wird Osmosis benötigt. Osmosis als osmosis-latest.tgz herunterladen: Letzte stabile Version {dl}.

Entpacken nach ~/Dokumente. Nach dem Entpacken das Verzeichnis umbenennen in osmosis. Im Verzeichnis osmosis liegt das Unterverzeichnis bin. Die darin enthaltene Datei osmosis einmalig ausführbar machen.

OSM Kartenmaterial kann auf verschiedene Arten beschafft werden. Einfach ist der Download über den Geofabrik Downloadbereich {de} . Dort das Verzeichnis osm/ öffnen und die entsprechende Datei suchen. Die Datei europe.osm.pbf in das Verzeichnis osmosis speichern.

Nun die gewünschte Länderzusammenstellung erstellen, z.B. Deutschland, Dänemark, Beneluxländer. Es werden die Länderabkürzungen genutzt, z.B. für Deutschland de, für Dänemark dk, für Benelux benelux usw. Die Koordinaten {de} auslesen und in den Befehl einfügen. Hierzu in das Verzeichnis osmosis wechseln:

cd Dokumente/osmosis 

Karte als .osm.pbf erstellen mit folgendem Befehl:

bin/osmosis --read-pbf europe.osm.pbf  --bb left=2.5 right=15.0 bottom=47.3 top=57.8 --write-pbf dkdebenelux.osm.pbf 

Die erstellte Datei dkdebenelux.osm.pbf in das Verzeichnis ~/Dokumente/mkgmap legen und bearbeiten wie oben beschrieben: Der Splitter.

Beispiele für Länderzusammenstellungen

D / DK

Als Beispiel ein Befehl für eine routingfähige Mehrländerkarte von Dänemark und Deutschland zusammen. Dazu gehören auch die Grenzgebiete. Die Größe wird ca. 1,5 GB betragen.

bin/osmosis --read-pbf europe.osm.pbf --bb left=5.7 right=15.3 bottom=47.2 top=57.8 --write-pbf d-dk.osm.pbf 

Hinweis:

Warnungen im Terminal können ignoriert werden.

Es kann auch eine Mehrländerkarte mit einer selbst erstellten Datei, z.B. d-dk.poly, aus der Datei europe.osm.pbf ausgeschnitten werden, damit die Karte nicht zu groß wird. Eine .poly-Datei kann einfach über JOSM erstellt werden.

Der Befehl wird im Verzeichnis osmosis ausgeführt und lautet:

bin/osmosis --read-pbf europe.osm.pbf --bounding-polygon file="d-dk.poly" --write-pbf file="d-dk.osm.pbf" 

Dazu gehöriger Befehl für den Splitter:

java -Xmx2000m -jar splitter.jar --output=xml d-dk.osm.pbf 

Bereits fertige Karten nutzen

Auf der OSM Karte sind beim Heranzoomen viele Informationen verfügbar, wie z.B. Bäcker/Einkaufen/Bistros/Autowerkstätten/Supermärkte uvm. Dies hat viele Vorzüge, für die sich das Mithelfen lohnt.

Fertige Karten als gmapsupp.img, die man direkt auf die SD bzw. Micro-SD Karte kopieren kann:

Zusammenlegen von Karten

Bereits erstellte gmapsupp.img-Dateien können mit dem Kommandozeilenwerkzeug Gmaptool {pl} {en} für Linux zu einer Datei gmapsupp.img zusammengefasst werden.

Hinweis:

Zusammengelegte Karten sind nicht grenzüberschreitend routingfähig!

Graphische Oberfläche

Mit dem Map composer {de} kann man mit Mkgmap auch unter einer graphischen Benutzeroberfläche arbeiten.

ubuntuusers.local › WikiMkgmap