User:Ajoessen/Garminkarten selber bauen

From OpenStreetMap Wiki
Jump to: navigation, search

Nachfolgend wird beschrieben, wie man sich aus OSM-Daten selber Karten für Garmin-Geräte bauen kann. Der dabei verwendete Kartenstil myTopo ist auf einer Sonderseite beschrieben. Alle Anweisungen gelten für Windows XP mit mittelmäßiger Ausstattung (2GB RAM). Damit sind Karten bis zur Größe von Deutschland (1,5GB) möglich. Alle verwendeten Dateien sind hier als Archiv myTopo.zip zu finden. Eine Gewährleistung wird hierfür ausdrücklich nicht übernommen.


Grundsätzliche Überlegungen

Der Datenbestand von OSM wächst ständig, die hardwareseitigen Begrenzungen leider nicht. So sind microSD-Karten auf 2GB begrenzt, die HC-Version funktioniert nicht unbedingt mit allen Geräten. Nach Angaben von Garmin könne auch microSD-HC-Karten mit mehr als 4GB Kapazität verwendet werden, allerdings darf die einzelne Garminkarte gmapsupp.img nicht mehr als 4GB groß sein. Diese Grenze ist bei eine Europakarte aus OSM-Daten heute schon erreicht. Aber auch bei einer heute 1,5GB großen Deutschlandkarte wird der GPS-Empfämnger schon schwerfällig in der Bedienung.

Deshalb ist es sinnvoller, sich auf sein Bundesland zu beschränken und zusätzlich für jede Tour eine aktuelle Karte zu bauen, und nur diese auf das Gerät zu schieben. Der beschriebene Arbeitsablauf ist daher unabhängig vom Datenvolumen funktionsfähig.

Für jede Kartenproduktion sollte ein eigenes Verzeichnis angelegt werden, um die bereits erzeugte Karte eines größeren Gebiets nicht zu überschreiben. Ausserdem muss jeweils eine andere Family ID verwendet werden, wenn beide Karten gleichzeitig verwendet werden sollen.


notwendige Software

osmosis http://bretth.dev.openstreetmap.org/osmosis-build/osmosis-latest.zip

osmconvert DE:osmconvert

srtm2osm http://topo.openstreetmap.de/Srtm2Osm-1.8.14.10_ext.zip

mkgmap http://www.mkgmap.org.uk/snapshots/

splitter http://www.mkgmap.org.uk/splitter/

BaseCamp http://www.garminonline.de/karten/outdoor/basecamp/

QLandkarteGT http://sourceforge.net/projects/qlandkartegt/

Notepad++ http://notepad-plus-plus.org/download/

TypViewer http://opheliat.free.fr/michel40/TYPViewer3.5/ Original Link ist down. neue Adresse:? http://typviewer.software.informer.com/3.5/download/

MapsetToolkit http://sites.google.com/site/cypherman1/

Ausserdem benötigt man noch ein paar Dateien, die auch in der Freizeitkarte-Entwicklungsumgebung enthalten sind:

Städteliste http://download.geonames.org/export/dump/cities15000.zip

Grenzen http://www.navmaps.eu/index.php/developers/bound

Küstenlinien http://fabianowski.eu/osm/coastlines/

Ausschneiden der Rohdaten

Grundlage sind die Extrakte der Geofabrik. Wenn weniger als ein Bundesland verwendet werden soll, bietet sich das Ausschneiden mit osmosis an. Damit es an den Kartenrändern keine weißen Flecke wegen unvollständiger Multipolygone gibt, werden diese komplett geladen:

bbox-mp.bat

D:\Karten\OpenStreetMap\osmosis\bin\osmosis.bat --read-pbf D:\Karten\osm\Geofabrik\nordrhein-westfalen.osm.pbf  --bb left=8.0 right=8.31 bottom=51.1 top=51.22 completeRelations=yes --tf accept-relations type=boundary,multipolygon --used-way --used-node outPipe.0=MP --read-pbf D:\Karten\osm\Geofabrik\nordrhein-westfalen.osm.pbf  --bb left=8.0 right=8.31 bottom=51.1 top=51.22 --tf reject-relations type=boundary,multipolygon outPipe.0=bbox  --merge inPipe.0=MP inPipe.1=bbox --wx bbox.osm

Im ersten Durchgang werden nur Grenzen und Multipolygone komplett geladen, im zweiten Schritt alles andere scharf abgeschnitten, anschliessend beides zusammengefügt zur bbox.osm.

Alternativ kann auch das Programm osmconvert benutzt werden:

bbox.bat

osmconvert.exe D:\Karten\osm\Geofabrik\nordrhein-westfalen.osm.pbf -b=8.0,51.1,8.31,51.22 -o=bbox.osm --complex-ways

Hier sorgt die option --complex-ways für komplette Multipolygone.

Für kleinere Bereiche kann man auch mit JOSM heruntergeladene Daten als Quelle verwenden. Dabei sollte man gegebenenfalls Multipolygone komplett nachladen.


Höhendaten

Um Höhenlinien auf der Karte zu erzeugen, werden die SRTM-Daten der NASA verwendet. Diese werden mit dem Programm SRTM2OSM in OSM-Dateien konvertiert. Im Kartenstil wird zwischen Haupt- und Nebenhöhenlinien unterschieden, z.B. alle 400m, 100m und 20m. Dementsprechend werden die Daten in SRTM2OSM kategorisiert:

srtm-nrw.bat

Srtm2osm.exe -bounds1 50.324 5.878 52.528 9.444 -cat 400 100 -o srtm-nrw.osm

Wenn das Programm schon früher zur Erzeugung von Höhenlinien benutzt wurde, stehen die Rohdaten der NASA im Unterverzeichnis srtm\SrtmCache, brauchen also nicht neu heruntergeladen werden.

Dieser Vorgang braucht nur einmalig je Kartenbereich durchgeführt zu werden, da sich die SRTM-Daten nicht ändern.


Splitten der Daten

Garminkarten sind in den meisten Fällen in rechteckige Teilkacheln (*.img) aufgeteilt, da der Arbeitsspeicher der Geräte begrenzt ist. Um ein Routing über die Kachelgrenzen zu ermöglichen, sind gewisse Randbedingungen einzuhalten. Das Java-Programm splitter.jar teilt die OSM-Rohdaten hierfür optimiert auf. Maßgebendes Kriterium ist die Anzahl der Knoten der OSM-Datei. Mit einem Maximalwert von 1000000 Knoten ist ein fehlerfreier Arbeitsablauf gewährleistet. Die Datei splitter.zip wird in ein Unterverzeichnis des anschliessend benötigten Programms mkgmap installiert. Da das Programm Schwerstarbeit leisten muß, wird Java mit dem maximal möglichen Arbeitsspeicher gestartet. Das ist etwa 400MB weniger als im Rechner vorhanden. Sollte das nicht ausreichen, hilft nur Aufrüsten, oder sich mit weniger Eingangsdaten zu begnügen.

myTopo-splitter.bat:

java -Xmx1500M -jar D:\Karten\OpenStreetMap\mkgmap\splitter\splitter.jar --geonames-file=E:\Freizeitkarte\cities\cities15000.zip  --mixed --mapid=60150001 --max-nodes=1000000  --output=xml --output-dir=E:\mkgmap\myTopo-NRW\myTopo-osm D:\Karten\osm\Geofabrik\nordrhein-westfalen.osm.pbf 2>error1.txt

Das Programm legt im gewählten Ausgabeordner myTopo-osm Dateien 60150001.osm.gz folgende an, sowie zwei Dateien areas.list und template.args mit Angaben über die erzeugten Dateien, die anschliessend an mkgmap übergeben werden. Für die Benennung der Teildaten wird die Datei cities15000.zip aus der Freizeitkarte-Entwicklungsumgebung von User toc-rox benutzt.

Die Höhendaten müssen ebenfalls gesplittet werden. Um die bereits erzeugten Dateien mit den Splitergebnissen nicht zu überschreiben, geschieht dies in einem separaten Ordner, und mit einer anderen Anfangs-mapid:

srtm-splitter.bat:

java -Xmx1500M -jar D:\Karten\OpenStreetMap\mkgmap\splitter\splitter.jar --geonames-file=E:\Freizeitkarte\cities\cities15000.zip  --mixed --mapid=70150001 --max-nodes=1000000  --output=xml --output-dir=E:\mkgmap\myTopo-NRW\srtm-osm D:\Karten\OpenStreetMap\Srtm2Osm\srtm-nrw.osm 2>error2.txt

Bei fehlerfreier Verarbeitung sind die Dateien error1.txt und error2.txt 0 Bytes groß.


Verarbeitung mit mkgmap

In diesem Schritt wird aus jeder OSM-Datei des Splitters eine .img-Datei erzeugt. Die img aus OSM und SRTM werden in einem gemeinsamen Verzeichnis img erstellt.

myTopo-mkgmap.bat

cd img
java -Xmx1500M -jar D:\Karten\OpenStreetMap\mkgmap\mkgmap.jar -c ..\myTopo.cfg -c ..\myTopo-osm\template.args ..\myTopo.TYP

splitter-mkgmap.bat

cd img
java -Xmx1500M -jar D:\Karten\OpenStreetMap\mkgmap\mkgmap.jar -c ..\srtm.cfg -c ..\srtm-osm\template.args ..\myTopo.TYP

Dazu werden neben den vom Splitter erzeugten Dateien template.args folgende Konfiguratiosndateien verwendet:

myTopo.cfg:

style-file=E:\mkgmap\myTopo-NRW\myTopostil
product-id=1
latin1
route
preserve-element-order
remove-short-arcs
adjust-turn-headings
link-pois-to-ways
drive-on-right
bounds=E:/Freizeitkarte/bounds
location-autofill=bounds,nearest
add-pois-to-areas
coastlinefile: E:/Freizeitkarte/coasts/coastlines_europe.osm.pbf
generate-sea:multipolygon,extend-sea-sectors
family-id=5001
family-name=myTopo
product-version=1
series-name=myTopo

Hierbei wird auf die Dateien bounds und coastlines_europe.osm.pbf der bereits erwähnten Freizeitkarte-Entwicklungsumgebung zurückgegriffen. Die Stildateien befinden sich im Unterordner myTopostil, das verwendete Typfile ist myTopo.TYP (Großschreibung ist wichtig!). Die familiy-id muß mit derjenigen in myTopo.TYP übereinstimmen. MapsetToolkit ist aber später in der Lage, diese auf den richtigen Wert zu ändern.

Analog für die SRTM-Daten:

srtm.cfg:

style-file=E:\mkgmap\myTopo-NRW\myTopostil
latin1
preserve-element-order
remove-short-arcs
location-autofill=bounds,nearest
add-pois-to-areas


Zusammenbau der Karte

Für die verwendung in BaseCamp und QLandarteGT wird ein Mapset erzeugt, und für das Garmin-Gerät eine gmapsupp.img:

myTopo-tdb.bat

copy myTopo.TYP img
cd img
java -Xmx1500M -jar D:\Karten\OpenStreetMap\mkgmap\mkgmap.jar --show-profiles=1 -c ..\tdb.cfg 6*.img 7*.img myTopo.TYP

tdb.cfg

style-file=E:\mkgmap\myTopo-NRW\myTopostil
product-id=1
country-name=Deutschland
country-abbr=DE
region-name=Nordrhein-Westfalen
region-abbr=NRW
tdbfile
gmapsupp
latin1
route
preserve-element-order
index
family-id=5001
family-name=myTopo
product-version=1
series-name=myTopo
overview-mapname=myTopo
overview-mapnumber=50010000

Hat man Änderungen am Typfile vorgenommen, braucht nur dieser Schritt wiederholt zu werden. Bei Änderungen am Kartenstil die myTopo-mkgmap.bat und myTopo-tdb.bat; und nach Aktualisierung der Rohdaten alle myTopo-Batchdateien, nicht aber die SRTM-Batchdateien.


Einbindung in BaseCamp

Hierzu ist es notwendig, die Karte in der Registry anzumelden. Dies übernimmt das Programm MapsetToolkit. Nach dem Start links die Schaltfläche "Install" anklicken (auf keine Fall Start!)

Registry name: myTopo_NRW
TDB file: Schaltfläche ... myTopo.tdb im Unterverzeichnis img suchen und Öffnen
Overview map: myTopo.img (Das Verzeichnis wird automatisch übernommen)
TYP file: myTopo.TYP

Schaltfläche APPLY

Wenn Family ID von tdb und TYP nicht zusammenpassen, kann MapsetToolkit dies anpassen. Die Familiy ID darf noch nicht von anderen installierten Karten verwendet sein. Die Werte können nachträglich mit der Schaltfläche Edit geändert werden.

Beim Ausprobieren von eigenen Stilen sollte man vorzugsweise kleine Gebiete verarbeiten. Ausserdem sollte man dann den TileCache von Basecamp selber leeren, um Änderungen gegenüber der letzen Version zu sehen. Der Tilecache liegt bei Windows XP unter C:\Dokumente und Einstellungen\<Benutzername>\Lokale Einstellungen\Anwendungsdaten\Garmin\BaseCamp\TileCache Um diesen Ordner im Explorer zu sehen, müssen im Explorer unter Extras/Ordneroptionen/Ansicht folgende Haken gesetzt sein:

[ ] Erweiterungen bei bekannten Dateitypen ausblenden
[x] Geschützte Systemdateien ausblenden
[x] Inhalte von Systemordneren anzeigen
...
Versteckte Dateien und Ordner
[x] Alle Dateien und Ordner anzeigen

Alternativ kann man folgende Batchdatei verwenden: Cacheclaer.bat

@echo off
echo j | del "C:\Dokumente und Einstellungen\<Benutzername>\Lokale Einstellungen\Anwendungsdaten\Garmin\BaseCamp\TileCache\*.*"

Der Benutzername ist entsprechend der Anmeldung bei Windows einzutragen.


Einbindung in Qlandkarte GT

Datei/Karte laden

Dateiname: myTopo.tdb im oben erzeugten Unterverzeichnis img wählen

Basiskarte: myTopo.img

Wenn man dann nur Rechtecke sieht, mit der +-Taste einzoomen, bis Wälder und Straßen erscheinen.

In Qlandkarte könne auch mehrere Garminkarten gleichzeitig geladen werden und/oder die online-OSM-Tiles oder Geotiff-Rasterkarten hinzugeladen werden.


Verwendung im Garmin-Gerät

Die erzeugte gmapsupp.img kann im Prinzip direkt in das Gerät in den Ordner Garmin geschoben werden. Allerdings funktioniert dann die Adressuche nicht. Stattdessen wird empfohlen, die Karte in BaseCamp zu laden, und dann bei angeschlossenem Gerät die Karte mit Extras/Karten installieren auf das Gerät zu schieben. Dann baut sich das Gerät beim Neustart seinen Suchindex neu, und kann zur Straßensuche verwendet werden. Sofern der Kartenspeicher ausreicht, kann man mehrere Karten abspeichern, die im Massenspeichermodus jeweils auf gmapsupp.img umbenannt werden können.