access bei highway=track und Garmin-Routing-Fehler

Mein Montänchen wollte mich heute autofahrend über einige Feldwege schicken. Eine Nachforschung ergab, daß die Feldwege, auf denen es das probiert hat, in der Datenbank sämtlichst mit motor_vehicle=agricultural;forestry getaggt sind. Beispiel: http://www.openstreetmap.org/way/46624852

  1. ist das zunächst mal ein kleiner Bug in der Garmin-Umsetzung. Die sollte davon ausgehen, daß Otto Normal weder agrikulturär noch forestrisch ist.

  2. ist das nicht komplett redundant? Die designation für agricultural und forestry ist doch gerade das Wesentliche am highway=track, das steckt in diesem Value damit schon drin. Wenn man diesen access-tag rausnimmt, kommt es wahrscheinlich auch nicht mehr zu Fehlroutungen der beschriebenen Art. Auch wenn das vom Inhalt her den Fehler nicht auslösen sollte, scheint es das doch zu tun :slight_smile:

–ks

Wenn man sich anguckt, was alles mit track gemappt wird, dann ist klar, dass die access-Tags nicht redundant sind. :wink:

Bzgl. Garmin: Es ist recht wahrscheinlich dass der Wert “agricultural;forestry” nicht ausgewertet wird.
Workaround: Option “unbefestigte Wege meiden” aktivieren.

Das liegt daran, dass (per Semilkolon getrennte) “Multi-Beschränkungen” nicht erkannt werden. “agricultural;private” entspricht weder “agricultural” noch “private” und wird daher ignoriert. Ich helfe mir ab, indem ich das Vorkommen im Gesamtstring für jeden gewünschten Fahrzeugtyp extra auswerte:
z.B. motorcar ~ ‘.(private|agricultural|forestry).’ {set motorcar=no}

Zu 2)
Zumindest in Deutschland legt highway=track nicht fest, ob du mit einem PKW langfahren darfst. Soweit ich weiß, dürfen wir mit PKWs auf Feldwegen fahren und auf Waldwegen nicht. Desweiteren entscheidet die Beschilderung, was erlaubt ist und diese Erlaubnis wird in den Accesstags festgehalten, d.h. die access-Tags sind nicht überflüssig, sondern wichtig.

Grüße
Andreas

Zu 1)
Es macht meiner Meinung nach Sinn die Style-Regeln von mkgmap wie bei der Freizeitkarte (http://www.freizeitkarte-osm.de/garmin/de/) zu verwenden (Vereinfachte Darstellung):

  • Zuerst werden Tracks generell für Autos verboten
  • Dann werden die Access-Tags nach erlauben Werten geprüft und ggf. die Autos wieder erlaubt highway = * & (motorcar = designated | motorcar = permissive | …) {set motorcar = yes}

Der Vorteil dieser Methode: Unbekannte Access-Werte führen nicht zu einer Erlaubnis, sondern sperren den Weg weiterhin

Grüße
Andreas

Tracks (Feldwege) sind per se nicht für Autos verboten, zumindest in DE. Da braucht man kein überflüssiges Tagging.
BTW, weshalb eigentlich nur motor_car, was ist mit motor_cycle? I.d.R. wäre motor_vehicle besser.

motor_car und motor_cycle gibt es nicht. “motorcar” im obigen Kontext (mkgmap-Style) betrifft ein Garmin-internes Access-Flag, welches keine Unterscheidung zwischen Auto und Motorrad vorsieht (Umgehung durch spezielles Motorrad-Navi wie Zumo, wodurch “motorcycle” auf das gleiche Flag abgebildet werden kann). motor_vehicle dagegen ist ein OSM-Tag, welches oft vorhandene Mehrfach-Beschränkungen durch die STVO beschreibt (wie auch motorcar und motorcycle im Einzelnen).

Gruß
Mario

So schrieb ich es auch in meinem ersten Post http://forum.openstreetmap.org/viewtopic.php?pid=558773#p558773

Im zweiten Post geht es um die technisch Umsetzung für Garmin-Karten

Ich habe die technische Umsetzung bewußt vereinfacht beschrieben. Die Freizeitkarte beschäftigt sich auf mehreren huntert Zeilen in den Style-Files mit den Access-Tags und da dann auch mit motor_vehicle, vehicle, foot, bicycle, motorcycle, motorcar…

Grüße
Andreas

Hier eine leicht reduzierte Variante der verwendeten Freizeitkarte-Logik bei Autos


foot = official & vehicle != *       {set vehicle = no}
foot = official & motor_vehicle != * {set motor_vehicle = no}
foot = official & motorcar != *      {set motorcar = no}
foot = official & access != *        {set access = no}

bicycle = official & vehicle != *       {set vehicle = no}
bicycle = official & motor_vehicle != * {set motor_vehicle = no}
bicycle = official & motorcar != *      {set motorcar = no}
bicycle = official & access != *        {set access = no}

vehicle = official & motor_vehicle != * {set motor_vehicle = yes}
vehicle = official & motorcar != *      {set motorcar = yes}
vehicle = official & access != *        {set access = no}

motor_vehicle = official & vehicle != *  {set vehicle = no}
motor_vehicle = official & motorcar != * {set motorcar = yes}
motor_vehicle = official & access != *   {set access = no}

motorcar = official & vehicle != *       {set vehicle = no}
motorcar = official & motor_vehicle != * {set motor_vehicle = no}
motorcar = official & access != *        {set access = no}

access = official {add vehicle = yes; add motor_vehicle = yes; set access = yes}

highway = proposed | highway = raceway | highway = no | highway = crossing | highway =  traffic_signals | highway = platform | highway = streetlamp | highway = emergency_access_point | highway = stop | highway = passing_place| highway = incline_steep | highway = incline | highway = milestone | highway = access_ramp {set access = no; set motorcar = no }
highway = construction  {set access = no; set motorcar = no }
 
highway = path | highway = cycleway | highway = track {add motorcar = no}

highway = bridleway {add motorcar = no }

highway = footway | highway = elevator | highway = steps | highway = pedestrian {add motorcar = no }

highway = * & (access = designated | access = permissive | access = destination | access = customers | access = official | access = public  | access = residents  | access = customer  | access = residential) {set access = yes}
highway = * & (access = military | access = private | access = agricultural | access = forestry | access = delivery  | access = restricted  | access = psv  | access = bus | access = psv | access = unknown) {set access = no}

highway = * & (motorcar = designated | motorcar = permissive | motorcar = destination | motorcar = customers | motorcar = official | motorcar = public  | motorcar = residents  | motorcar = customer  | motorcar = residential) {set motorcar = yes}
highway = * & (motorcar = military | motorcar = private | motorcar = agricultural | motorcar = forestry | motorcar = delivery  | motorcar = restricted  | motorcar = psv  | motorcar = bus | motorcar = psv | motorcar = unknown) {set motorcar = no}

highway = * & (motor_vehicle = designated | motor_vehicle = permissive | motor_vehicle = destination | motor_vehicle = customers | motor_vehicle = official | motor_vehicle = public  | motor_vehicle = residents  | motor_vehicle = customer  | motor_vehicle = residential) {set motor_vehicle = yes}
highway = * & (motor_vehicle = military | motor_vehicle = private | motor_vehicle = agricultural | motor_vehicle = forestry | motor_vehicle = delivery  | motor_vehicle = restricted  | motor_vehicle = psv  | motor_vehicle = bus | motor_vehicle = psv | motor_vehicle = unknown) {set motor_vehicle = no}

highway = * & (vehicle = designated | vehicle = permissive | vehicle = destination | vehicle = customers | vehicle = official | vehicle = public  | vehicle = residents  | vehicle = customer  | vehicle = residential) {set vehicle = yes}
highway = * & (vehicle = military | vehicle = private | vehicle = agricultural | vehicle = forestry | vehicle = delivery  | vehicle = restricted  | vehicle = psv  | vehicle = bus | vehicle = psv | vehicle = unknown) {set vehicle = no}

highway = * & access != * & motorcar != * & motor_vehicle != * & vehicle != * {add CarAllowed = yes}
highway = * & motorcar = no                                                   {add CarAllowed = no}
highway = * & motorcar = yes                                                  {add CarAllowed = yes}

CarAllowed != * & highway = * & motor_vehicle = no  {set CarAllowed = no}
CarAllowed != * & highway = * & motor_vehicle = yes {set CarAllowed = yes}
CarAllowed != * & highway = * & vehicle = no        {set CarAllowed = no}
CarAllowed != * & highway = * & vehicle = yes       {set CarAllowed = yes}
CarAllowed != * & highway = * & access = no         {set CarAllowed = no}
CarAllowed != * & highway = * & access = yes        {set CarAllowed = yes}

# falls irgend ein nicht ausgewertetes tag verwendet wird: access verbieten
CarAllowed != * & highway = * {set CarAllowed = no}

# Garmin "Access restrictions" setzen
CarAllowed = yes 		{set mkgmap:car = yes }
CarAllowed = no 		{set mkgmap:car = no}