Routing compliance: Optimiertes Tagging von Umweltzonen/Fahrverboten

Hi,

ich bin Teil des OpenRouteService Teams und würde gerne alsbald in der Lage sein Umweltzonen und Dieselverbote optional zu respektieren im Routing. Kann gerade nur PTV und das ist mehr als schade.

Gerade befinde ich mich im Recherche Stadium und habe folgenden OSM Thread gelesen:

https://forum.openstreetmap.org/viewtopic.php?id=61490

Status quo

Soweit ich das sehe, passiert in OSM zur Zeit das Folgende:

  • Umweltzonen werden generell als boundary=low_emission_zone Relation deklariert mit zusätzlichen Attributen soweit zutreffend, e.g. motor_vehicle:conditional=no @ (engine=diesel) in Stuttgart (https://www.openstreetmap.org/relation/271888)

  • Beschränkungen auf einzelnen Straßen (wie etwa schon in Hamburg und in Berlin ab Mitte 2019) als Way natürlich, z.Bsp. motor_vehicle:conditional=no @ (engine=diesel) in Hamburg (https://www.openstreetmap.org/way/113941240)

  • Weitere Eingrenzungen von Emissionstypen sind entweder access=badge 4 (lediglich 1 Eintrag: 3996094 Relation) oder access=green_sticker_germany

Hamburg und Stuttgart sind z.Zt. die einzigen Städte, die solche emission tags verwenden.

Keine der bisherigen Implementierungen spezifischerer Dieselverbote ist wirklich exakt in OSM. Stuttgart z.Bsp. hat motor_vehicle:conditional=no @ (engine=diesel), was ja nicht stimmt. Euro-4 und älter sind nur nicht erlaubt in der Umweltzone. Auch access=green_sticker_germany hilft da nicht, da grüne Plaketten auch an Euro-4 Diesel vergeben werden (scheinbar). Tbh, Deutschland macht’s da auch wieder komplex. Aber ich glaube wir können das besser in OSM hinbekommen, v.a. angesichts der Tatsache, dass die Anzahl der betroffenen Elemente wirklich überschaubar ist.

Anforderungen aus Routing Sicht

Wir brauchen eine granulareres Tagging Schema als es bisher existiert. Um Fahrzeug, Motor und Emission mit reinzunehmen, müssten wir ein Tagging einführen wie in dem obigen Thread beschrieben:

hgv:conditional = destination|no @ (emission_standard:diesel<euro_6)

Und alle weiteren Fahrzeug spezifischen keys, bzw motor_vehicle:conditional.

emission_standard:key = diesel|petrol|electric|hybrid|hydro|other
emission_standard:fuel_type<|>|= =euro_[1-6]

Geplante Implementierung

Folgende API Parameter würden ausreichen:

  • fuel_type: corresponding to emission_standard:key
  • emission_type: corresponding to emission_standard:fuel_type=value

Falls andere Länder ähnlich wie D und UK Umweltzonen einführen wollen, werden sich diese sicherlich ähnlich klassifizieren lassen.


Wie sieht das die OSM community?

Wenn wir zusammen zu einem consensus finden, könnten wir uns am HeiGIT um die Tagging edits kümmern. Ich würde das nur gerne mit OSM abklären vorher.

Freue mich auf Input!
Nils Nolde

Wir müssten komplett wegkommen vom Flächentagging und Umweltzonen an den einzelnen Straßen taggen so wie Tempo-30-Zonen. Das Flächentagging funktioniert in der Praxis einfach nicht. Zum Beispiel eine Brücke führt über eine Autobahn, die Brücke liegt in der Umweltzone, die darunterführende Autobahn aber nicht. Für den Renderer sieht es nun aber so aus, als würde die Autobahn durch ein kurzes Stück Umweltzone führen.

Hallo Nils,

als alter Diesel-Fahrer (im doppelten Sinne :laughing:) sag ich mal: Eine nette Idee. Allerdings sind die Umweltzonen (zum größten Teil?) leider als Flächen in OSM erfasst, wobei z.B. in Pforzheim die Erfassung nicht so exakt ist: Mindestens die B463 von Dillweißenstein im Süden bis nördlich des Bahnhofes ist für alle “emission_type” freigegeben und durchschneidet die Umweltzone. Und das wird in vielen Zonen so sein (außer in Stuttgart :D). Ich denke, das wird ziemlich aufwendig, das Projekt. Viel Erfolg damit.

Auch ist es fraglich, ob die Community damit einverstanden ist, dass an alle Ways seitenlange emmisions-Tags geklebt werden.

+1 schön das sich dem Thema angenommen wird :slight_smile:

Vielleicht nicht direkt an die Ways finde ich auch nicht so gut :-\ Vielleicht als Relation(en) lösen… in der die Straßen die betroffen sind als Member aufgeführt sind…

Hi Nils,

erstmal herzlich willkommen im Forum ! (*)

Hab zwar nix mit Routing am Hut, sehe aber ein offenes Problem:

Umweltzonen werden ja als Fläche definiert und das “Betreten” diese Flächen ist - manchmal - nicht erlaubt.

Nur, welche Straßen sind betroffen? Es gibt Städte, wo die LEZ mMn sauber erfasst sind:


Hier ist das Befahren der Henkellstraße erlaubt, weil notwendig.

Hier dagegen werden die Straßenzüge als Member der Grenzrelation verwendet, was die Frage aufkommen lässt, wie deren Status ist.

Deutschlandweit gibt es beide Versionen (“sauber” und “gepfuscht”), was mMn bereinigt werden muß.

Gruss
walter

*) “Hier werden Sie geholfen - ob Sie wollen oder nicht” :wink:

Sammelrelationen - iiiigitt.

Gruss
walter

ÖPNV Relationen iiiigitt… :wink: immernoch besser alles alles einzeln zu taggen…

Wenn man es mit Flächen auch hingekommt… gerne…

Nö, das sind Routen

Ok, das mit den Haltestellen “stinkt” mir auch, besonders da diese sortiert sein müssen.

Gruss
walter

Macht es meiner Meinung nicht besser. Sind eher ein Klotz am Bein :frowning: … vor allem wenn man da mal was ändern muss…

In dem meisten Fällen würde man dass auch dynamisch verrouten können… über eine Punktliste. Was andere und ich auch mache :wink:

MfG Miche

Hallo Nils

… also auch den zugrundeliegenden Wiki-Eintrag gelesen und verstanden?

( https://wiki.openstreetmap.org/wiki/Conditional_restrictions )

ich bin zwar nicht OSM oder die Community, aber ich sehe das so, dass Du die Komplexität unterschätzt. Macht Ihr nicht am HeiGIT gerade auch was mit zeitabhängigen Beschränkungen? Ich freu’ mich drauf, dass im ORS zu testen, und “eins nach dem anderen” wäre hier ein guter Schutz vor Selbstüberschätzung.

Grosser Teil der Komplexität kommt hier daher, dass, wenn die “conditional” Logik überladen wird, die Kombination mehrerer Bedingungen von der Ausnahme zur Regel wird, und auch wenn das Wiki hier Regeln beschreibt für die logischen Priorotäten - das liest sich nicht wie jahrelang gewachsen sondern eher wie einfach mal so hingeschrieben. Also tagsüber bis 7,5 Tonnen unter euro-5, ausser bei smog-alarm, dann nur e-autos, und lieferverkehr. Aber unter der Eisenbahnbrücke nur bis 3,80 Höhe.

Übung macht den Meister.

Ausserdem glaube ich nicht unbedingt, dass ein per-way tagging von zonenhaften Verboten wirklich praktikabel ist.

Gruss, Arndt

(edit: link zum wiki-Artikel)

Hi alle,

danke für die gute Diskussion! Wir ihr alle an meinem Profil sehen könnt, bin ich kein OSM Guru, daher frage ich hier nach Ratschlägen und bin nicht enttäuscht worden:)

Jep, sehr guter Punkt! Aber wie andere bereits beschrieben haben, Straßen mit kilometerlangen tags aufzuladen, wird kaum eine akzeptierte Alternative sein… Hier sehe ich auch das größte Problem…

Gibt es die Möglichkeit die Relationen so zu gestalten wie das dritte Beispiel von @wambacher:

Mit der Konvention dass Grenzstraßen der Relation die Eigenschaften übernehmen (um nicht extra nodes zu generieren, auch nur wichtig für unser backend) und man einzelne Straßenzüge per key ausschließen kann, falls sie nicht Teil der low_emission_zone sind? Sowas wie ein exclude key? Hierfür wäre es erforderlich neue emission keys einzuführen, e.g. motor_vehicle:emission oder ähnlich. Aber hier bin ich mir nicht sicher wie sowas aufgenommen werden würde, da solche Restriktionen ja scheinbar über :conditional Erweiterungen gelöst werden sollen und es hier extrem komplex werden kann, wie @abrensch ausführt.

Wir sind natürlich offen für jegliche andere konstruktiven Ideen.Ich hoffe wir kriegen das hin:)

Ja, und nebenher arbeiten wir an einem C-ALT release, haben die komplette API überarbeitet (heute war Release von v5.0) und sind ständig mit bug fixes und feature implementations beschäftigt. Ich glaube wir haben unser Projekt Management ganz gut im Griff und brauchen sicherlich keinen Schutz vor Selbstüberschätzung.

Fangt doch testweise mit einer “sauberen” Ecke an (Wiesbaden, Frankfurt?). Wenn das einigermaßen funzt, sollten die Anpassungen relativ flott erledigt sein. Da finden sich sicher dann einige Freiwillige.

Ach ja: Für das Problem mit Brücken (z.B. drunter darf man fahren aber drüber nicht) fällt mir derzeit auch nix ein.

Gruss
walter

Was, wenn man an solchen Stellen das Umweltzonen-Polygon an der Stelle aufteilt (also nicht über die Brücke mit auf die andere Seite hinüberführt) und an die Ways der Brücke die ensprechenden Einschränkungen der Umweltzone nochmal explizit dazu tagt. Oder alternativ könnte man es auch anders herum machen: Das Polygon “über die Autobahn” drüber ragen lassen, und dann dem Way darunter entsprechende Ausnahmen taggen.

Die Anpassungen in OSM können wir schon vornehmen und schauen wie reagiert wird, hast recht.

Mit den Anpassungen in ORS würde ich gerne warten bis sich eine funktionale Lösung für OSM gefunden hat. Wir sind da sehr flexibel, aber eventuelle Änderungen im Tagging/Schema können einiges an Arbeit nach sich ziehen, daher lieber warten.

Jep, wäre auch mein Favorit. Kannst du auf andere Fälle verweisen wo ways/nodes per tags von Relation ausgeschlossen werden?

Momang, ich habe nicht gesagt, dass ihr derzeit was in OSM ändern sollt. Sondern dass ihr mal in Wiesbaden/Frankfurt nachschaut, ob ihr mit den vorhandene Daten klar kommt.

Schließlich muss zuerst ein Verfahren entwickelt werden, mit dem ihr die betroffenen Straßen findet. Halt Spatiale Abfragen in PostGIS (*)

Gruss
walter

*) Ich hoffe doch sehr, dass ihr PostGIS einsetzt.

Hmm, falsch verstanden dann.

Nein, das läuft idealerweise andersherum. Wir kommen generell mit allem klar, ist ja nur string parsing am Ende. Aber das konzeptionelle Schema in OSM sollte vorher klar sein. Es kann schon einiges an Aufwand bedeuten, wenn wir etwas entwickeln für den jetzigen Status Quo und dann wird das Schema doch komplett umgeschmissen. Muss nicht viel Arbeit sein, aber kann sein. Und genau das würde ich gerne vermeiden. Daher dieser Thread.

Wie gesagt, boundary=emission_zone ist zu wenig Information. Auf der Basis brauchen wir gar nicht erst anfangen. Wir bräuchten spezifische tags a la

hgv:conditional = destination|no @ (emission_standard:diesel<euro_6)

Wobei meist motor_vehicle:conditional ausreichen würde in D. Und die Frage ist, ob es hier Sinn machen würde einen neuen motor_vehicle:emission key oder ähnlich einzuführen?! Da, wie @abrensch richtig anmerkt, die conditional Logik schnell überladen wird, v.a. wenn man doch mal Vehikel spezifische tags benutzen muss. Aber ich bin eben nicht sicher über die Implikationen für alle anderen downstream OSM Services (rendering etc.) oder ob das generell eher verpönt ist (da es ja schon eine conditional Restriktion ist).

Und dann darüber hinaus muss das Schema in der Lage sein einzelne Straßen von der Relation auszuschließen.

Ne, das läuft ganz anders. PostGIS kommt mit nem Planet dump nicht klar, da würde jede Abfrage Minute dauern. Solche Datenmengen müssen in RAM gehalten werden. In-memory SQL für Routing wäre schick aber gibt’s halt nicht open-source ohne MEGA den Aufwand.

Dir ist doch klar, dass ein “Tagging an den Straßen” dir um die Ohren fliegen wird, gell?

Das ist doch - vorerst - unwichtig solange ihr nicht die Straßen, die sich innerhalb einer LEZ befinden, selektieren könnt.

Naja, ich hab zufälligerweise den ganzen Planeten online (2.5 TB) und hab da ganz andere Erfahrungen gemacht. Man muss natürlich etwas Grips und Power hineinstecken.

Eine Routing-Anwendung ohne irgendeine Spatiale DB zu machen (welche, ist hier egal) halte ich für - höflich gesagt - gewagt.

Gruss
walter

ja stimmt des ein bischen wenig :confused: … Da aber das ganze von Land zu Land jeder wahrscheinlich anders gemacht wird… würd ich da gerne generische Angaben sehen. Die man dann auch noch kombinieren muss min/max von/bis usw. :confused:

Was haben wir alle

  • Fahrzeugart (Auto, Bus, Lkw usw.)
  • Antriebsart (Verbrenner, Elektro, Hybrid)
  • Kraftstoffart(Benzin, Gas, Flüssiggas, Wasserstoff, Elektro)
  • Abgasnorm (Euro1-6…)
  • Abgasplakete (1,2,3,4…)
    … Größe, Gewichte… Achsenlast… Anlieger oder nicht…
    …Erlaubte Zeiten bzw. Verbotszeiten…

oder nur type der Emsionszone und der Router macht den rest… z.B. “DE-Umweltzone-Grün-1031-51”
https://wiki.openstreetmap.org/wiki/Umweltzone

@wambacher, ich gehe mal nicht auf die ganzen technischen Details ein. Ich bin mir sicher du hast eine Spitzen Routing Lösung für dich.

Easy. Es geht hier doch um das Konzept des Taggings. Technisch ist das ein Spaziergang!

Gerne werde ich vom Gegenteil überzeugt, aber ich glaube Kraftstoff und Emissionstyp (in EU halt euro_x, aber auch in anderen Ländern muss es hier Standards geben) reicht zur Vermeidung von Umweltzonen aus. Ich habe noch keine Zeiten für Umweltzonen gesehen (das würde es wirklich unnötig komplex machen und würde auch nicht von uns unterstützt werden).