Seitdem ich Geo Activity Playground entdeckt habe, nutze ich die exportierten Missing Tiles für die Planung von Radtouren. Ein Anwendungsfall besteht darin, die Missing Tiles als Overlay im Garmin-IMG-Format anzuzeigen, z.B. auf dem Garmin-Navi oder in QMapShack. In QMapShack ist das insbesondere dann nützlich, wenn die aus Geo Activity Playground exportierten Tile-Dateien nachträglich verändert werden, z.B. wie hier beschrieben auf eine bestimmtes Gebiet reduziert werden. Letzteres ist notwendig, weil QMapShack leider keine GeoJSON-Daten anzeigen kann, dafür aber Garmin-IMG-Karten.
Verwendete Tools:
- mkgmap: Erstellt aus einer OSM-XML-Datei eine Garmin-Karte.
- TypViewer oder ein anderer TYP-Editor: Erstellen/Modifizieren der Garmin-TYP-Datei
- ogr2osm.py: Wandelt eine Datei Datei in einem OGR-Format in das OSM-Format um
- jq oder xmlstarlet
mkgmap benötigt
- eine Datei im OSM-Format mit den Geodaten der Tiles
- Stil-Dateien, welche festlegen, wie die Objekten in der OSM-Datei den Objekttypen in der Garmin-Karte zugeordnet sind
- eine TYP-Datei, welche festlegt, wie die Garmin-Objekttypen im Gerät angezeigt werden
Ausgangspunkt ist eine aus Geo Activity Playground exportierte Datei der Missing Tiles im GeoJSON-Format. Für die Verarbeitung mit mkgmap muß sie in das OSM-XML-Format konvertiert werden. Dies geschieht mit ogr2osm:
ogr2osm.py -f -o missing.osm missing.geojson
Dies erzeugt eine OSM-Datei, welche die Tiles als geschlossenen Wege enthält. Damit diese Wege in die Garmin-Karte übernommen werden, benötigen sie mindestens ein OSM-Attribut. Ich habe dafür type=file
verwendet. Dieses Attribut kann man entweder mit jq vor der Konvertierung zu der GeoJSON-Datei hinzufügen oder danach mit xmlstarlet zu der erzeugten OSM-Datei, also:
cat missing.geojson | jq '.features[].properties += {"type":"tile"}'> missing1.geojson
bzw.:
xmlstarlet ed -s "//way" -t elem -n "tag" -v ""\
-i "//way/tag" -t attr -n "k" -v "type"\
-i "//way/tag" -t attr -n "v" -v "tile"\
missing.osm > missing1.osm
Für die Umsetzung der OSM-Objekttypen in Garmin-Typen habe ich eine vorhandene TYP-Datei M0001311.TYP
mit TypViewer modifiziert:
- Linientyp
0x10f13
für die Umrandung des Tiles - Polygontyp
0x10f0e
für die Füllung des Tiles
Die Stil-Defintion für mkgmap ist damit recht simpel:
Datei lines
:
type=tile [0x10f13 level 6 continue]
Datei polygons
:
type=tile [0x10f0e level 4]
Datei options
:
levels = 0:24,1:23,2:22,3:21,4:19,5:18,6:16,7:14
Damit sieht der Aufruf von mkgmap so aus:
mkgmap --description=DE_Sued_Tiles\
--country-name=Germany
--country-abbr=DE\
--series-name=Tiles\
--family-name=Tiles\
--area-name=DE_Sued\
--style-file=mkgmap-style-explorer-tiles/\
--family-id=1311
--product-id=1\
--gmapsupp\
--draw-priority=26\
--transparent\
--output-dir=out\
M0001311.TYP missing.osm
Die Karte wird als gmapsupp.img
gespeichert. Je nach Garmin-Gerät und verwendeten Karten müssen die Parameter ggf. angepasst werden. In meinem Fall hat die Karte auf dem Garmin Etrex 30x erst funktioniert, nachdem ich sie mit GMapTool modifiziert habe:
gmt -w -e 63250002 gmapsupp.img

Explored Tiles in GeoActivityPlayground

Garmin-Karte der Missing Tiles auf dem Garmin Etrex 30x

Garmin-Karte der Missing Tiles in QMapShack