DE:Ajoessen/myTopo
Vorbemerkungen
Hier stelle ich meine Stildateien für Garminkarten vor. Grundlage war die openfietsmap von user ligfietser. Es kann aber auch der default Stil aus dem Unterverzeichnis mkgmap\examples\styles\default oder jede beliebige andere Garminkarte verwendet werden.
Der Kartenstil besteht aus einem Ordner myTopostil, in dem die Textdateien info, lines, options, overlays, points, polygons, relations und version (jeweils ohne Erweiterung!) enthalten sind. Zur Bearbeitung dient notepad++. Kommentarzeilen sind mit # versehen. Zusätzlich gibt es eine binäre Datei myTopo.TYP. Diese enthält Angaben zu Symbolen, Farben und Linienbreiten, und muß eine groß geschriebene Erweiterung .TYP haben!
Wenn man Stile von anderen Nutzern ausprobieren will, müssen Stilordner und Typfile zusammenpassen. Es ist auch möglich, Karten ohne Typfile zu bauen, dann wird der Standardstil von Garmin übernommen.
Mein Topostil hebt lokale Wanderrouten als breite grüne Linien hervor, und überörtliche Wanderwege als breite rote Linien. Die Wanderwegsbezeichnung aus dem ref-tag der Relation wird in Basecamp und Garmin als Schild dargestellt. Bushaltestellen sind mit ihrem Namen und -in Klammern- den dort verkehrenden Linien (aus dem ref der Routenrelation) beschriftet. Ausserdem werden Hochspannungsleitungen dargestellt. Die Karte ist routingfähig (aber nicht quer durch Deutschland!). Wanderwegsrelationen werden dabei priorisiert, Autobahnen gemieden und Bundes- und Landstraßen herabgestuft. Fürs Routen mit Auto und LKW ist der Kartenstil daher nicht geeignet.
Alle verwendeten Dateien sind hier als Archiv myTopo.zip zu finden. Eine Gewährleistung wird hierfür ausdrücklich nicht übernommen.
Die fertige Karte sieht auf einem etrex Legend HCX so aus:
und so in Basecamp:
info
enthält keine wesentlichen Informationen:
# # This file contains information about the style. # It is completely optional. # # A short one line description of the style # summary: The default style # Version of the style itself # version=1.0 # A longer description of the style. description { The default style. This is a heavyweight style that is designed for use when mapping and especially in lightly covered areas. }
lines
Hier werden sämtliche Linien aus OSM in Garmin-Polylinien umgesetzt. In einem ersten Schritt werden die Rohdaten analysiert und einige zusätzliche Tags vergeben oder tags zusammengefasst:
osmkey=osmvalue { set Variable=Wert }
Die eigentliche Zuordnung erfolgt in der Form
osmkey=osmvalue [Garmintyp Auflösung]
Welche Auflösungen effektiv genutzt werden, ist in der Datei options festgelegt. Garmintyp ist ein hexadezimaler Wert der Form 0x00 bis 0x1ff, gegebenenfalls mit zweistelligen Subtypen. Bei zweistelligen Werten wird die führende Null weggelassn: 0x00 bis 0xff.
Neben der direkten Zuweisung können auch Bedingungen mit und bzw oder verwendet werden. Für letzteres sind Klammern notwendig:
(k1=v1 | k2=v2) & k3=v3 [...]
Routingfähig sind nur die Garmin-Typen 0x01 bis 0x13 sowie 0x1a und 0x1b. Hierzu werden zusätzlich road_class=4 bis 0 und road_speed =3 bis 0 in der eckigen Klammer angegeben. Da eine Topokarte nicht über Autobahnen routen soll, werden Autobahnen auf nicht-routingfähige Typen verlegt, und Bundesstraßen bis Feldwege von 1 bis 3 eingestuft.
Straßen sollten in mittleren Zoomstufen dünner gezeichnet werden als in der höchsten Stufe (resolution 24). Deshalb werden diese Wegtypen mit mehreren Garmintypen abgebildet. Routinginformationen sind dabei nur einmal notwendig.
options
Hier wird festgelegt, für welche Zoomstufen Karten erzeugt werden. Maximal sind 9 möglich:
levels = 0:24, 1:23, 2:22, 3:21, 4:20, 5:19, 6:18, 7:16
Die Auflösungen (resolution) entsprechen bei mittlerer Detailstufe folgenden Maßstabsbalken:
16: 200km 17: 30km 18: 15km 19: 7km 20: 3km 21: 1,5km 22: 700m 23: 300m 24: 200m
Bei zwischenliegenden Zoomstufen wird die nächstkleinere resolution verwendet.
overlays
Hier kann festgelegt werden, dass ein Garmintyp aus zwei anderen Garmintypen zusammengesetzt werden soll. Damit werden sauberere Übergänge an Straßeneinmündungen erzeugt. Die so definierten Garmintypen dürfen nicht im Typfile vorkommen.
#bicycle=no 0x0301: 0x01, 0x03 0x0401: 0x01, 0x04 0x0501: 0x01, 0x05 0x0601: 0x01, 0x06 0x0701: 0x01, 0x07 #cycleway with track 0x1602: 0x0f, 0x10005 #path, track with hikingroute=yes 0x0d02: 0x0d, 0x10118 0x0e02: 0x0d, 0x10119 0x1502: 0x15, 0x10118 #overlay for older gps 0x030: 0x03, 0x10103 0x040: 0x04, 0x10104 0x050: 0x05, 0x10105 0x060: 0x06, 0x10106
points
Hier werden alle punktförmigen OSM-Daten in Garmintypen umgesetzt
polygons
Gleiches für Polygone
relations
Neben Multipolygonen und Grenzen werden hier auch Routenrelationen verarbeitet. Dabei werden die tags der Relation an die Mitglieder gesetzt.
(type=boundary | type=multipolygon) & boundary=administrative & name=* { apply { set mkgmap:boundary_name='$(mkgmap:boundary_name)/${name}' | '${name}'; } } type=multipolygon & landuse=forest { apply { set forest_from_relation=yes; set fname='${name}'; } } (type=boundary | type=multipolygon) & boundary=administrative & admin_level=2 { apply { set boundary2=yes; set mkgmap:boundary2_name='$(mkgmap:boundary2_name)/${name}' | '${name}'; } } (type=boundary | type=multipolygon) & boundary=administrative & admin_level=4 { apply { set boundary4=yes; set mkgmap:boundary4_name='$(mkgmap:boundary4_name)/${name}' | '${name}'; } } (type=boundary | type=multipolygon) & boundary=administrative & admin_level=8 { apply { set mkgmap:boundary8_name='$(mkgmap:boundary8_name)/${name}' | '${name}'; set boundary8=yes; } } # map the hiking routes to the lwn, rwn and nwn tags type=route & network=iwn { apply { set iwn_from_relation=yes; set iname='${name}'; set iref='$(nref)/${ref}' | '${ref}'; } } type=route & network=nwn { apply { set nwn_from_relation=yes; set nname='${name}'; set nref='$(nref)/${ref}' | '${ref}'; } } type=route & network=rwn { apply { set rwn_from_relation=yes; set rname='${name}'; set rref='$(rref)/${ref}' | '${ref}'; } } type=route & network=lwn { apply { set lwn_from_relation=yes; set lname='${name}'; set lref='$(lref)/${ref}' | '${ref}'; } } type=route & (route=tram | route=bus ) { apply { set route_ref='$(route_ref),${ref}' | '${ref}'; } }
version
enthält nur die Zahl 0
TYPfile
Diese Binärdatei enthält Angaben zu Symbolen, Farben und Linienbreiten. Wenn sie fehlt oder fehlerhaft ist, wird der defaulttyp von Garmin verwendet, was ggf zu Irritationen führen kann. Zur Bearbeitung bietet sich der TYPViewer an. Einen Online Editor gibt es leider nicht mehr. Um die einzutragenden Werte zu verstehen, schaut man sich am besten ein Typfile einer existierenden Garminkarte an. Die meisten Installationen für MapSource/BaseCamp enthalten ein Typfile.
Wichtig ist, dass die FID=Family ID den gleichen Wert hat, wie in der tdb der erzeugten Karte. Will man mehrere Karten installieren, muss jede eine andere FID haben. Der Product Code kann auf 1 gesetzt werden.
Im linken Teil des TYPViewers sind untereinander alle definierten Polygone, Linien und Punkte aufgelistet. Zusätzlich gibt es eine Tabelle DrawOrder, die die Zeichenreihenfolge für Polygone festlegt. Die Garmintypen werden hier immer dreistellig, mit zusätzlichem Subtyp aufgeführt. Doppelklick auf eine Eintrag öffnet das jeweilige Editorfenster. Änderungen werden erst gespeichert, wenn die Schaltfläche "Save in TYP Format" angeklickt wird. Hier muß man aufpassen, dass man das richtige Typfile als Speicherort wählt, und die Erweiterung auf jeden Fall in Großbuchstaben .TYP lautet. Dabei kann das Betriebssystem einen Streich spielen, und auf .typ ändern.