@Bitboy ich sehe es anders, es muss getagt werden was verboten ist. Denn mit einem Benziner oder E-Auto darf ich immernoch durch, ebenso mit Gas, Wasserstoff, Pferdekutsche und was es sonst noch so alles gibt. Nur Dieselmotoren bis einschließlich Euro 5 sind verboten. Ein Euro 4 Benziner ist hingegen erlaubt. Wir müssen also sowohl nach Motorenart, Fahrzeugklasse und Abgasnorm unterscheiden um zu sagen ob man da durch darf oder nicht.
Edit:
spontane Idee.
access:hgv:diesel:eu5=destination
Hier könnte mann überlegen ob bei eu5 auch eu4, eu3 etc impliziert ist, oder ob man jeden wert einzeln einträgt.
Wie wärs dann mit
Access:conditional = No @ (emission_standard:diesel < Euro 6)
Kein Zugang für Dieselfahrzeuge mit einer kleineren Abgasnorm als 6.
Dabei überläßt man es dann den Naviherstellern alle Normen zu Listen und in Reihenfolge zu bringen.
Ich sehe da noch eine Schwierigkeit die wir lösen müssen.
Euro 5 gibt es sowohl für Fahrzeuge mit Diesel, als auch für Fahrzeuge mit Benzin, aber nur die Diesel sind vom Verbot betroffen. Wir müssen das Euro x also irgendwie von Benzin und Diesel getrennt angeben.
Ist doch mit drin
Access:conditional = No @ (emission_standard:**diesel **< Euro 6)
Das Format läßt sich natürlich um beliebige Treibstoffe erweitern:
Access:conditional = No @ (emission_standard:**gasoline **< Euro 6)
Access:conditional = No @ (emission_standard:hydrogen< Euro 6)
Access:conditional = No @ (emission_standard:lpg< Euro 6)
Frage ist halt ob es bei diesen “allgemeinen” Verboten bleibt oder ob irgendwann in Zukunft auch Schilder auftauchen wie
Verbot für Busse mit Euro 3
Verbot für Kfz mit Euro 4
…
dann müsste man den Fahrzeugtyp auch noch mit rein bauen.
Wahrscheinlich ist es klar, aber ich wollte es nur noch mal erwähnen: Wenn nach verschiedenen Fahrzeugklassen unterschieden wird, dann ist das doch unser kleinstes Problem. Die kommen doch in den Key, vor’s conditional. Nix mit access:conditional, man nimmt einfach z. B. hgv:conditional.
Aber ist so ein kleiner als Zeichen überhaupt erlaubt? Wird das schon irgendwo benutzt? Und ich bin mir unsicher ob ein conditional da so elegant ist, immerhin gilt das Fahrverbot für die betroffenen Fahrzeuge immer.
Wenn ich den Thread richtig verstehe, läuft das Tagging für den ersten Teil des Zusatzes auf
access:conditional = no @ (emission_standard:diesel < euro_6)
hinaus.
Wie bringt man nun die Benziner unter? So wie bei opening_hours, durch Semikolon getrennte, weitere Angaben?
access:conditional = no @ (emission_standard:diesel < euro_6); no @ (emission_standard:gasoline < euro_2)
Oder sind mehrere Tags mit gleichem Key erlaubt?
access:conditional = no @ (emission_standard:diesel < euro_6)
access:conditional = no @ (emission_standard:gasoline < euro_2)
Bei letzterem hätte ich ja die Befürchtung (vor allem auch, weil es mir selbst nicht klar ist!), dass etliche Anwendungen einen willkürlichen Tag mit gleichem Key auswerten und den Rest verwerfen…
EDIT … und alle meine ‘<’ Zeichen sollten ‘<=’ sein…
der wäre eine “Oder” Bedingung… wird wie ich sehe mit “,” Komma getrennt. z.B motorcycle:conditional=no @ (Sa,Su,PH) … Also Samstag oder Sonntag oder Feiertag => Nicht hier Routen…
access:conditional = no @ (emission_standard:diesel < euro_6, mission_standard:gasoline < euro_2)
Boah seid ihr schnell :). Vielen Dank, miche101 und chris66!
Die fraglichen Teile der Schilder gibt es auch einzeln, komme da aber meist nicht im Hellen vorbei ;).
Zum Überprüfen meines Verständnisses: Der Abschnitt https://wiki.openstreetmap.org/wiki/Conditional_restrictions#Evaluation_of_conflicting_restrictions Punkt 6 liest sich so, als würde die Semikolon-Variante, die ich ins Spiel brachte, auch zum gleichen Ergebnis (bei höherer Komplexität) führen? Allerdings widerspricht das erste Beispiel (die Erklärung dazu) mEn dann direkt der Formulierung ‘the last matching…’ und würde die (meine) Semikolon-Variante ad absurdum führen.
p.s. Um das noch aufzulösen: Mehrfache Keys gehen (natürlich ;)) nicht (jedenfalls nicht in den Editoren, die ich ausprobiert habe).
ja… müsste zum gleichen Ergebnis führen… müsste alles mit ODER verarbeitet werden und es greift das was zutrifft… AND gibt es auch noch… damit zwei oder mehr Bedingungen erfüllt sein müssen. Mit dem “;” kann man zwischen verschieden Werten trennen, aber beide Bedingungen sind ja ** no @ ()** dann kann man diese auch in der Klammer zusammen eintragen.
Ich würde empfehlen, erst einmal die gleichen Bezeichnungen zu verwenden um die Daten konsistent zu halten.
Für die Details braucht es sicher irgendwann auch mal eine ausführliche Dokumentation / Proposal.
Verwendet wurde nun die in London und Stuttgart verwendeten Terminologien.
Also :conditional-Tags mit einer Kombination aus fuel=* und emissions <= *, wobei die Emissionsklasse als euro_* angegeben wurde.
Beispiel:
motor_vehicle:conditional = no @ (fuel=petrol AND emissions <= euro_2, fuel=diesel AND emissions <= euro_5)
Danke für die Hinweise, vor allem auch den Hinweis auf motorcar, was für das gezeigte Schild sicher das richtige ist. Ich werde vor Ort nochmal prüfen, welche Schilder an den anderen Stellen angebracht sind und habe vorerst motor_vehicle genutzt.
Was ist das Vorgehen um das über das Forum hinaus zu dokumentieren und zu “festigen”?
Zu Dokumentieren wäre mEn:
emissions als Keyword für Emissionsklassen
das Wording für die Euro-Schadstoffklassen,
Werte für fuel (ergeben sich zwar teils aus der Wiki-Seite zu fuel, wird da allerdings primär als Subtag für Tankstellen behandelt und daher als fuel:*=yes/no abgehandelt)
p.s. Warum zur Hölle gibt es kein inline-Code-Tagging in BBCode!?
wie User TS-R in seinem Kommentar zu Changeset 72681790 vorschlägt, wie folgt lauten?
motor_vehicle:conditional=no @ (fuel=diesel AND emissions <= euro_5); destination
Der erste Ausdruck vor dem Semikolon sollte korrekt sein, ist es auch der zweite danach? Ich habe Wiki zu conditional restrictions nochmal eingängig studiert, werde aber mangels passender Beispiele nicht vollends schlau daraus, ob das nun stimmt/ausreicht oder doch folgender richtig wäre:
motor_vehicle:conditional=no @ (fuel=diesel AND emissions <= euro_5); none @ destination