DE:Ajoessen/myTopo

From OpenStreetMap Wiki
Jump to navigation Jump to search

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:

MyTopo-etrex.png

und so in Basecamp:

MyTopo-BaseCamp.png

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.