User:MotorKUH

From OpenStreetMap Wiki
Jump to navigation Jump to search

Willkommen

Vermutlich suchst Du die "Backmischung", um die "MotoRoute OpenStreetMap" für Garmin BaseCamp oder Dein Garmin Navi zu erzeugen.

Da sowohl MotoRoute.de nicht mehr existiert als auch ich mit meinem Hobby Programmieren aufgehört habe, sage ich "Tschüss".

Allerdings gibt es hier noch eine Beschreibung sowie die Befehlskette für die beiden Java-Programme Splitter und Mkgmap, mit denen sich auch ohne "Backmischung" die bekannte MotoRoute-OpenStreetMap erzeugen lässt.

Des Weiteren finden Mac-User hier ein Shell-Script für die Terminal-App, um sich die OSC-C-Tools (osmconvert, osmfilter, osmupdate) sowie den Downloader wget (wird von osmupdate benötigt) für macOS zu erzeugen.

MotoRoute-OpenStreetMap ohne Backmischung?

Ja, das ist möglich! Du darf jedoch keine Angst vor der Windows-Eingabeaufforderung oder dem Mac-Terminal haben. Die Ausführung jedes Befehls geschieht auf eigenes Risiko und sollte nur bei entsprechendem Computer-Verständnis angewendet werden. Jegliche Haftung ist ausgeschlossen. Nachfolgend eine Beschreibung, um sich eine Karte für Garmin BaseCamp und Garmin Navi Schritt für Schritt selbst zu erzeugen.

Voraussetzung

Auf dem Computer muss Java in der passenden Version installiert sein, da die OpenStreetMap-Programme Splitter und Mkgmap in Java geschrieben wurden: https://www.java.com/de/download/manual.jsp

Am Mac sollte man JDK (Java Development Kit) installieren: https://www.oracle.com/de/java/technologies/downloads/#jdk24-mac

Zutaten

Splitter

https://www.mkgmap.org.uk/download/splitter.html, https://www.mkgmap.org.uk/download/splitter-latest.zip

Mkgmap

https://www.mkgmap.org.uk/download/mkgmap.html, https://www.mkgmap.org.uk/download/mkgmap-latest.zip

Bounds (Ländergrenzen) NICHT entpacken!

https://www.thkukuk.de/osm/data, http://osm.thkukuk.de/data/bounds-latest.zip

Sea (Meeresgrenzen) NICHT entpacken!

https://www.thkukuk.de/osm/data, http://osm.thkukuk.de/data/sea-latest.zip

Geofabrik (osm.pbf)

Die Daten für die Karte müssen im Format osm.pbf geladen werden: https://download.geofabrik.de

Style

Solltest Du noch keinen MotoRoute-Style haben, die letzte Version mrosm-style-r024 habe ich mit den bekannten Suchmaschinen in einem Motorrad-Forum (https://www.gs-forum.eu/attachments/mrosm-win-0-11-115-zip.729568/) gefunden. Aus den extrahierten Dateien benötigen wir nur mrosm-style-r024.zip. Alles andere sollte gelöscht werden.

Tipps

Zur Übung empfiehlt es sich Liechtenstein oder Bremen zu verwenden, bevor man sich Germany, DACH oder Europe zuwendet.

In Mkgmap selbst ist zwar ein default-Style enthalten, dieser ist jedoch allgemein gehalten und nicht wie der bisherige MotoRoute-Style auf Motorradfahren optimiert. D.h. man kann auch eine Karte ohne den mrosm-style-r024.zip erzeugen oder sich auf dieser Basis einen eigenen Style erstellen. Mit dem Windows-Programm Typ-Viewer (https://sites.google.com/site/sherco40/) kann man das Typfile nach eigenen Vorstellungen gestalten.

Auch unter Windows kann man mit Schrägstrich ./ arbeiten! Es muss nicht zwingend Backslash \ sein.

Vorbereitung

  • Lege einen neuen Ordner als Projekt-Ordner an, z.B. mrosm.
  • Extrahiere splitter-latest.zip in diesen Projekt-Ordner z.B. als ./mrosm/splitter-r654
  • Extrahiere mkgmap-latest.zip ebenfalls in diesen Projekt-Ordner z.B. als ./mrosm/mkgmap-r4923
  • Extrahiere mrosm-style-r024 ebenfalls in diesen Projekt-Ordner z.B. als ./mrosm/style-r024

Verarbeitung Teil 1 - Splitter

In diesem Beispiel wollen wir auf einem Computer mit 8 GB RAM eine Garmin-Karte für die Region Deutschland - Österreich - Schweiz (DACH) erzeugen. Dazu laden wir https://download.geofabrik.de/europe/dach-latest.osm.pbf in unseren Projekt-Ordner. Unsere Karte soll die Family-ID 4711 bekommen. Die fett markierten Abschnitte im Code sind anzupassen.

  • Unter Windows starten wir die Eingabeaufforderung, am Mac und unter Linux starten wir das Terminal.
  • Wir wechseln in unseren Projekt-Ordner, z.B. nach ./mrosm

Jetzt schreiben wir unseren Befehl, um mit dem Java-Programm splitter.jar die zu große osm.pbf-Datei in kleinere Karten-Kacheln aufzuteilen. Dafür müssen wir wissen, wieviel RAM unser Computer hat. Außerdem geben wir bereits hier die Garmin-typische Family-ID an, mit der die Karten-Versionen unterschieden werden. Achte hier darauf, dass nicht mehrmals mit der selben Family-ID installiert wird! -Xms1G bedeutet, wir reservieren für Java min. 1 GB vom RAM. Bei verbauten 8 GB RAM habe ich gute Erfahrungen gemacht, den max. Wert auf -Xmx7G zu setzen. Ab verbauten 16 GB RAM sollte man jeweils 2 GB unterhalb bleiben, bei 16 GB also -Xmx14G usw. Als Map-ID geben wir die gewünschte 4-stellige Family-ID ergänzt um 0001 an. Unsere gesplitteten Karten-Kacheln sollen in den Ordner ./tiles. Meldungen werden in die Datei splitter1.log umgeleitet, Fehler in die Datei splitter2.log.

java -Xms1G -Xmx7G -ea -jar ./splitter-r654/splitter.jar --mapid=47110001 --output-dir=./tiles ./dach-latest.osm.pbf 1> ./splitter1.log 2> ./splitter2.log

Verarbeitung Teil 2 - Mkgmap

Nach erfolgreichem Splitten - die Karten-Kacheln befinden sich schreiben wir unseren Befehl für das Java-Programm mkgmap.jar, das aus den einzelnen Karten-Kacheln die Garmin-Karte macht (Make Garmin Map). Auch hier übernehmen wir die Min/Max-Werte für Java und die Family-ID. Bei den Textangaben für die Region ist man relativ frei, sofern der Text nicht zu lang wird.

Wer experimentieren will findet alles auf der Mkgmap-Homepage: https://www.mkgmap.org.uk/doc/index.html

Unter meinem virtuellen Windows 11 musste ich im Ordner ./tiles den Ordner gbasemap selbst anlegen, da mkgmap den Ordner zu spät anlegt hatte. Es schadet also nicht, die beiden Ordner ./tiles und ./tiles/gbasemap zuvor selbst anzulegen.

java -Xms1G -Xmx7G -ea -jar ./mkgmap-r4923/mkgmap.jar --bounds=./bounds-latest.zip --precomp-sea=./sea-latest.zip --output-dir=./tiles/gbasemap --max-jobs --style-file=./style-r024/mrosm_style --description="Meine MROSM Karte Region DACH" --country-name="DACH" --country-abbr="DACH" --family-id=4711 --product-id=1 --product-version=1 --mapname=47110001 --series-name="Meine MROSM Karte Region DACH" --family-name="MROSM-Karte-Region-DACH" --area-name="DACH" --latin1 --draw-priority=10 --tdbfile --add-pois-to-areas --poi-address --link-pois-to-ways --add-pois-to-lines --process-exits --housenumbers --levels=0:24,1:22,2:21,3:19,4:18,5:16 --location-autofill=is_in,nearest --merge-lines --index --x-split-name-index --net --route --remove-short-arcs --remove-ovm-work-files --gmapi --gmapsupp ./tiles/*.osm.pbf --keep-going ./style-r024/mrosm.txt 1> ./mkgmap1.log 2> ./mkgmap2.log

Fertige Karte

Im Ordner ./tiles/gbasemap ist jetzt die Datei fürs Navi gmapsupp.img, wobei hier auf die max. Größe von 4 GB aufgrund des Dateiformats FAT32 beim Transfer aufs Navi geachtet werden muss. Außerdem ist hier die Paket-Datei mit Endung gmap und dem Namen, der als Family-Name angegeben wurde, hier "MROSM-Karte-Region-DACH". Wenn die Garmin App "Map Manager" auf dem Mac installiert ist, kann der Mac-User das Paket öffnen und installieren. Es empfiehlt sich, beide zuvor genannte fertige Karten-Dateien zu verschieben. Meldungen werden in die Datei mkgmap2.log umgeleitet, Fehler in die Datei mkgmap1.log.

Aufräumen

Alle Dateien - außer beiden Karten-Dateien -, die sonst noch im Ordner ./tiles/gbasemap sind, können ohne Bedenken gelöscht werden. Ebenfalls kann dann der Ordner ./tiles komplett gelöscht werden. Abschließend können die 4 Log-Dateien der Verarbeitung von Splitter und Mkgmap gelöscht werden.

Das war's und gute Fahrt!

OSM-C-Tools für macOS?

Ja, osmconvert, osmfilter und osmupdate kann man am Mac selbst kompilieren!

Dazu benötigt man alle Quellcode sowie den GNU-C-Compiler gcc, der Bestandteil der Apple Command Line Developer Tools ist. Außerdem benötigt osmupdate den Downloader wget, den man auch selbst aus dem Quellcode kompilieren muss. Und wget selbst benötigt noch OpenSSL, was man ebenfalls aus dem Quellcode kompilieren muss. Zusätzliche Software wie z.B. Homebrew bzw. MacPorts ist somit nicht erforderlich.

#!/bin/sh
# 2025-07-24 10:45 Gernot Skottke
# Installing osmctools and wget incl. OpenSSL from source.sh

cd -- "$(dirname -- "$0")"

# macOS Command Line Tools
xcode-select --install

# OSM-C-Tools - Download and Compile

# http://wiki.openstreetmap.org/wiki/Osmconvert
curl -o osmconvert.c -S --url "http://m.m.i24.cc/osmconvert.c"
gcc osmconvert.c -lz -O3 -o osmconvert
rm osmconvert.c

# http://wiki.openstreetmap.org/wiki/Osmupdate
curl -o osmupdate.c -S --url "http://m.m.i24.cc/osmupdate.c"
gcc osmupdate.c -lz -O3 -o osmupdate
rm osmupdate.c

# http://wiki.openstreetmap.org/wiki/Osmfilter
curl -o osmfilter.c -S --url "http://m.m.i24.cc/osmfilter.c"
gcc osmfilter.c -lz -O3 -o osmfilter
rm osmfilter.c

# OpenSSL
cd -- "$(dirname -- "$0")"
git clone https://github.com/openssl/openssl.git
cd openssl
./configure
make
sudo make install # Password required
rm -rf openssl

# WGET
cd -- "$(dirname -- "$0")"
curl -o wget.tar.gz https://ftp.gnu.org/gnu/wget/wget-latest.tar.gz
tar -xzf wget.tar.gz
cd wget-*
./configure --with-ssl=openssl --with-libssl-prefix=/usr/local/ssl
make
sudo make install # Password required
rm -rf wget-*
rm wget.tar.gz

# The last command updates your WGET config to tell, where to find the trusted TLS certificates on Mac
echo 'ca-certificate=/etc/ssl/cert.pem' >> ~/.wgetrc

Wie sieht der MotoRoute-OpenStreetMap Style (Version r024) aus?

So sieht MotoRoute OpenStreetMap aus.

Was unterscheidet den MotoRoute-OpenStreetMap Style (Version r024) von anderen Karten?

Unsere Karte ist auf den Einsatz am Motorrad spezialisiert. Das fängt damit an, dass die Straßen nach Ihren Kategorien in unterschiedlichen Farben dargestellt werden.

Die kleinen Land- und Kreisstraßen werden in verschiedenen Grüntönen angezeigt, Bundesstraßen gelb, Kraftfahrstraßen unabhängig von Ihrer offiziellen Nummer zeigen wir orange an und Autobahnen blau/weiß.

Für Motorräder verbotene Straßen werden als rot-gelb-rote Linie dargestellt.

Sämtliche Strecken, die dauerhaft (7 Tage x 24 Stunden) für Motorräder gesperrt sind, werden generell vom Routing ausgenommen.

Wo kann ich Kartenfehler melden?

Auf der Web-Seite http://openstreetmap.org können Kartenfehler (ohne Anmeldung) gemeldet werden.

Die OpenStreetMap-Community wird sich dieser Meldungen annehmen. Beachte dabei die Informationen auf der Seite!

Mein Dank geht an

  • Die OpenStreetMap-Community
  • Die Leute im Forum "forum.openstreetmap.org" für meine vielen Anfänger-Fragen
  • Die Entwickler der genutzten Karten-Tools Splitter, Mkgmap, Typfile-Editor
Programmierer:
Gernot Skottke
https://www.facebook.com/groups/motorouteopenstreetmap

Sponsor:
MotoRoute
https://www.facebook.com/groups/motoroute