Openrouteservice erlaubt abbiegen, obwohl in OSM verboten

Anderen Router nehmen, zB. “Auto (OSRM)” auf openstreetmap.org.

“Auto OSRM” ist die einzige richtige Navigation. GraphHopper zeigt alles falsch an. Für Fußgänger ist die Straße ohne Lebensgefahr nicht zu überqueren und Sie müssen einen Umweg von mehreren hundert Metern machen. Aber das ist für die Router nicht erkennbar. Deutet alles darauf hin, dass es nicht am Tagging, sondern an den Navigationssystemen liegt, die nicht richtig interpretieren.

Hier https://wiki.openstreetmap.org/wiki/DE:Highways#Einbahnstraßen habe ich das gefunden

Heißt das, dass diese vierspurige Straße mit durchgezogenem Mittelstreifen wie in Google Maps als zwei zweispurige Einbahnstraßen kartiert werden müsste?

Edit: Ich sehe gerade, dass das bei einer anderen solchen Straße in der Stadt so kartiert ist.

Mittelstreifen ist in OSM Bauliche Trennung also Bäume; Leitplanken; …

Wenn es nur so wäre - dann sollten auch Fußgänger und Radfahrer richtig geroutet werden. Leider gibt es das nicht, um anderen zu zeigen das es geht.

waren böse Buben

Hm, ich darf auf einer normalen Straße an jeder beliebigen Stelle mit dem Auto wenden, also nicht nur an Knoten. Wie kann das auf OSM dann auf einer Straße mit durchgezogener Mittellinie verhindert werden?

Warum sollte ein Router jemanden mitten auf der Straße wenden lassen?

Dass ORS Abbiegebeschränkungen standardmäßig ignoriert, steht übrigens auch hier: https://ask.openrouteservice.org/t/route-ignores-no-right-turn-restriction/220. Aktuell scheint auch das Zuschalten von weiteren Optionen das nicht mehr zu beeinflussen.

Das ist Sache des Routers. Normalerweise wenden Router nur an Abbiegungen/Kreuzungen, nicht auf freier Strecke.

Ein Attribut für “durchgezogene Mittellinie” gibt es meines Wissens noch nicht in OSM.

Indirekt mit overtaking(:forward/backward)=no.
Erweiterung mit source=road_marking/median wäre möglich.

Habe es mit Mapfaktor free und OSM-Daten (2020-05) getestet:
Fahrrad

Auto:

(Fußgänger darf allerdings über die Straße spurten. Alles mit Standarteinstellungen.)

Vielen Dank für die Antworten. Es sind also zwei verschiedene Paar Schuhe, was in OSM getaggt ist und was die verschiedenen Router daraus machen. OsmAnd z.B. navigiert manche Abzweigungen mit Abbiegebeschränkungen richtig, andere falsch. Wie der Test von @geri-oc https://forum.openstreetmap.org/viewtopic.php?pid=790953#p790953 zeigt, ist die Stelle also richtig getaggt, aber selbst der Router auf openstreetmap.org navigiert zwar Autos richtig, aber Radfahrer falsch. Ich denke, dass der Router auf openstreetmap.org das, was Mapfaktor free kann, auch können sollte. Dann ist das wohl ein Software-Fehler, der m.E. behoben werden muss, denn Radfahrer sind hier von der Beschränkung nicht ausgenommen. Wo kann ich das melden?

Auf osm.org gibt’s zwei Engines zur Auswahl, eine davon ist https://github.com/graphhopper/graphhopper .

Ja, das hatte ich auch schon getestet, GraphHopper kommt mit den Abbiegebeschränkungen noch schlechter zurecht als OSRM. Soweit ich das verstanden habe, ist OSRM der OSM-eigene Routingservice. Deshalb bleibe ich mit dem Testen der Beschränkungen bei dem, denn alle anderen Ungereimtheiten wie auch bei OsmAnd muss ich jeweils dort melden.

Ich denke mal, dass die Probleme längst bekannt sind. Wäre aber trotzdem interessant zu erfahren, warum die Restriktionen immer noch ignoriert werden. Bei Restriktionen mit nur einem via node ist ja ziemlich klar, was gemeint ist. Bei only_* mit mehreren via ways musste ich da schon länger grübeln. Und anders als bei den verschiedenen barrier=* ist da auch wenig Interpretationsspielraum.

Wie kommst Du da drauf?

Hallo,

Es gibt keine offizielle Routingengine von OpenStreetMap, es gibt nur mehrere verschiedene Produkte von Drittanbietern für verschiedene Plattformen (Linux-Server, Android-Geräte, iOS, Windows, …). Das ist bei Software für das Kartenrendering und Kartenstilen genauso. OSRM ist die Abkürzung von Open Source Routing Machine. Der FOSSGIS e.V., dem openstreetmap.de gehört, betreibt jedoch Server, auf denen OSRM läuft, weil es sonst niemand mehr gibt, der einen solchen Demo-Server betreibt.

OSRM kennt nur Betriebsmodi, in denen Abbiegebeschränkungen unterstützt werden (wobei ich mir nicht 100%ig sicher bin, ob man das bei einem Routingprofil abschalten kann). GraphHopper kennt Modi mit und ohne Unterstützung von Abbiegebeschränkungen. Bis ca. Version 0.11 konnte man zwischen einem schnellen Modus ohne Abbiegebeschränkungen und einem langsamen mit Abbiegebeschränkungen wählen. Letzeres ist ressourcenhungrig, weshalb es sich nicht für das kostenlose Schnupperangebot, das die GraphHopper GmbH der OSM Foundation für ihre Website openstreetmap.org bereitstellt, eignet.

Openrouteservice basiert auf einer älteren GraphHopper-Version, für die die oben angegebene eingeschränkte Modiwahl noch gelten dürfte.

Die Unterstützung von Abbiegebeschränkungen bringt einen höheren Rechenaufwand mit sich. Entweder am Anfang beim Erzeugen des Graphen aus den OSM-Rohdaten oder später zur Laufzeit bei jeder einzelnen Abfrage. Die Unterstützung von Abbiegebeschränkungen mit Wegen als via-Mitglieder (der seltenere Fall) ist aufwendiger zu implementieren als die Unterstützung von Abbiegebeschränkungen, die nur einen via-Node haben. OSRM kann seit einiger Zeit beides. Die anderen unterstützen u.U. nur Nodes. Mir fällt auf Anhieb kaum ein Beispiel ein, wo man wirklich einen via-Node braucht.

Radfahrer haben im Alltag seltener Abbiegeverbote oder ignorieren sie einfach. Es ist daher nicht verwunderlich, wenn die Fahrradprofile sich daher diesen Aufwand der Verarbeitung sparen.

Viele Grüße

Michael

Vielen Dank für die Erklärung.
Dass OSRM beim Fahrradprofil die Einschränkungen ignoriert, kann ich aus deiner Erklärung zwar verstehen, aber in der Realität kenne ich kaum eine Straße, wo das Abbiegen für Autos verboten, aber für Fahrräder erlaubt ist (außer bei Einbahnstraßen, die von Fahrrädern in beiden Richtungen befahren werden dürfen). Und dafür gibt es die Ausnahmen. An der von mir angegebenen Stelle wäre es lebensgefährlich.
Bringt es etwas, das an die OSRM-Liste zu schicken? OSRM-talk Info Page

Ganz aktuelle Diskussion zu so einem Fall: https://www.openstreetmap.org/changeset/86188722. Man beachte das dort verlinkte Foto.

Abbiegeverbote, die sich daraus ergeben, dass der Abbiegevorgang entgegen der Fahrtrichtung in eine Einbahnstraße führt, werden in OSM im Regelfall nicht als Abbiegeverbote modelliert. Da tut das oneway=* bzw. oneway:bicycle=* an der Straße seinen Zweck.

Nein, es bringt höchstens was, wenn du einen Pull-Request einreichst, da OSRM nur noch mit minimalem Aufwand gepflegt wird.

:frowning:
Danke für die Antwort. Da auch OsmAnd noch nicht in allen Fällen korrekt routet werde ich es zumindest dort versuchen.
Gibt es denn im Browser eine andere funktionierende und gewartete Navigation auf Basis der OSM-Daten?

Gibt es eine Möglichkeit zu mappen, dass Fußgängern das Überqueren der Straße verboten ist? Ich weiß nur, dass ich taggen kann, dass Fußgänger eine Straße nicht benutzen dürfen, aber überqueren? Auch Google Maps schickt die Fußgänger korrekt durch den Tunnel. Laut StVO ist es bei viel befahrenen Straßen nur an Fußgängerüberwegen etc. erlaubt, eine Straße zu überqueren. Da der zumutbare Umweg von den örtlichen Verhältnissen abhängt, ist es einem Router wohl unmöglich, das zu entscheiden. Wie machen das Mapfaktor und Google Maps an dieser Stelle?.