Hier die versprochene Anleitung zur Erstellung einer routingfähigen Karte mit dem OSM-Composer (aktuell in V 0.8).
1.) Erstellung eines styles für routingfähige Wege.
Kopieren des Files \data\mapstyle\lines nach lines_routing
Hier muß nun zu jedem relevanten Weg die Info der Road-Class und Road-Speed angegeben werden.
road_class=4 … motorway
road_class=3 … trunk, primary
road_class=2 … secondary, tertiary
road_class=1 … roundabout
road_class=0 … residential, trails, …
road_speed=7 … > 110 km/h
road_speed=6 … 90…110
road_speed=5 … 80…90
road_speed=4 … 60…80
road_speed=3 … 40…60
road_speed=2 … 20…40
road_speed=1 … 05…20
road_speed=0 … < 5 km/h
http://wiki.openstreetmap.org/wiki/Mkgmap/help/style_rules#road_class
Beispiel:
vorher: highway=motorway [0x01 resolution 14]
nachher: highway=motorway [0x01 road_class=4 road_speed=7 resolution 14]
Wer möchte, kann die road_speed nicht nur fix, sondern variabel vergeben, je nach getaggter maxspeed.
Im Composer werden solche Unterscheidungen mit Ersetzungen realisiert, im File lines_routing können wir es so angeben.
highway=residential & maxspeed>60 & maxspeed<81 [0x07 road_class=0 road_speed=4 resolution 22]
highway=residential & maxspeed>40 & maxspeed<61 [0x07 road_class=0 road_speed=3 resolution 23]
highway=residential & maxspeed>20 & maxspeed<41 [0x07 road_class=0 road_speed=2 resolution 23]
highway=residential & maxspeed<21 [0x07 road_class=0 road_speed=1 resolution 24]
highway=residential [0x07 road_class=0 road_speed=3 resolution 23]
Zu beachten ist, dass nicht alle Wege routingfähig sind.
Routingfähige Wege: 0x01 - 0x13, 0x16 und 0x1a für Fähren (bedingt auch 0x1b, angeblich mit Side-Effekten)
Die Composer-Vorlage verwendet 0x26 für Fußwege, 0x19 für Radwege, 0x1b für Treppen.
Diese IDs tauscht man daher am besten mit den Overlays wie z.B. Damm und Einschnitt.
Damit Autobahnen sicher nicht für Radfahrer- oder Fußgänger-Routing in Frage kommen, kann man zur Sicherheit Tags hinzufügen.
Das geht wieder per Composer-Ersetzung oder auch im Style-File “lines_routing”.
highway=motorway {add oneway = yes; add bicycle = no; add foot = no}
Wir haben jetzt zwei Style-Files, lines wird vom Composer erzeugt und lines_routing ist in unserer Verwaltung.
Jede neue Renderregel für Wege muss daher manuell im lines_routing nachgezogen werden.
Sobald eine neue Composer-Version die Angabe von road_class und road_speed in den Renderregeln erlaubt, fällt diese Doppelpflege natürlich weg.
2.) Erstellung eines Aufruf-Scripts.
Der Composer bietet die Möglichkeit, nach der Generierung noch ein Abschlußskript aufzurufen (siehe Job/Parameter http://wiki.openstreetmap.org/wiki/DE:OSM_Composer/Anleitung#Parameter)
Wir legen daher am besten ein Verzeichnis \skript an und erstellen dort ein Batch-File make_routing.bat
Zuerst tauschen wir die beiden Style-Files (wir befinden uns bei Aufruf des Scripts im Ordner \data)
cd \mapstyle
rename lines lines_non_routing
rename lines_routing lines
cd ..
Jetzt kommt der Aufruf von mkgmap. Am besten kopieren wir diesen Aufruf aus \data\commands.log und ergänzen unsere zusätzlichen Parameter (fett dargestellt).
java -Xmx1100M -jar \Tools\mkgmap.jar --tdbfile --preserve-element-order -c osmc_options –remove-short-arcs --route xxx_garmin.osm –gmapsupp xxx.TYP
java -Xmx1100M -jar \Tools\mkgmap.jar --tdbfile --preserve-element-order -c osmc_options --remove-short-arcs --route xxx_garmin.osm --gmapsupp xxx.TYP
–route aktiviert die Routing-Funktionen
–remove-short-arcs wird benötigt, sonst generiert mkgmap nur Fehler in Verbindung mit route
–gmapsupp bewirkt, dass mkgmap gleich das Garmin-File erstellt. Das Typ-File muss dazu angegeben werden.
(Im Gegensatz zu sendmap bleibt hier der Name des Plans erhalten und ist im Gerät dann besser auswählbar.)
Statt xxx muss natürlich der richtige Dateiname wie in commands.log angegeben werden!
Statt relativen Pfaden wie in diesem Beispiel sollten am besten absolute Pfade verwendet werden.
nicht vergessen, die beiden Style-Files wieder auszutauschen.
rename \mapstyle\lines lines_routing
rename \mapstyle\lines_non_routing lines
Fertig ist die routingfähige OSM-Karte, erstellt mit dem OSM-Composer und mkgmap.
Ich hoffe auf zahlreiche Rückmeldungen und darauf, dass uns Nop die beiden benötigten Parameter direkt im Composer implementiert.
Walter