Routenvorschlag von osmand ist ein Umweg

Wie kommt man mit dem Auto (ohne Umweg über die Autobahnbrücke) von https://www.openstreetmap.org/node/12977887 nach https://www.openstreetmap.org/node/1789736529, unter der Annahme das sowohl https://www.openstreetmap.org/node/365758373 als auch https://www.openstreetmap.org/node/1789736528 gesperrt sind?
Ich erwarte das osmand die Route über (z.B.) https://www.openstreetmap.org/node/2671398424 benutzt. Selbst wenn ich direkt dort bin überlegt osmand ewig, und berechnet dann doch eine Route über die Bahnschienen.

Bei den beiden zu benutzenden Straßen erkenne ich keine offensichtlichen Fehler, welche für dieses Verhalten eine Erklärung liefern.

Es sieht so aus als ob osmand die “Elise-Spaeth-Straße” ignoriert. Woran liegt das?

Ich glaube, das ist einfach:
Du kannst in OSMAnd nur angeben: “diese Straße vermeiden”. Damit vermeidet OSMAnd die komplette Straße, soweit diese in der Datenbank als ein way gemappt ist. Und die Elise-Spaeth-Str. ist komplett ein way vom Buckenhofer Weg bis Langfeldstraße. Nur den Teilabschnitt von Am Brucker Seela bis Langfeldweg vermeiden geht mit dem momentanen Datenstand nicht.

Lösung A: selber denken, sich das auf der Karte ansehen und entsprechend fahren.
Lösung B: im Datenbestand die Elise-Spaeth-Str. an der T-Kreuzung Am Brucker Seela in zwei ways aufsplitten und warten, bis OSMAnd (je nach gekaufter App) seinen Datenbestand aktualisiert hat.

Beispiel-Beobachtung mit From/To/Streckensperrung: Screenshot
Meine Hypothese ist jetzt, dass das Setzen eines Passierverbots den gesamten OSM-Way (hier z.B. 554743291) sperrt, mit all seinen Nodes, und damit für so manche kuriose Fahrt sorgt.

Aber das wäre ja taggen für den Router!!!111^ :open_mouth: :open_mouth: :open_mouth:

Ist es das? Wenn jetzt ein Teilabschnitt saniert werden würde und längere Zeit gesperrt wäre, könnte/müsste man auch splitten. Wenn mit der Sanierung die Straße als reine Anliegerstraße eine Pflasterung bekäme, müsste man sie auch splitten.

Zu viel Splitten ist aber auch wieder kontra produktiv, weil ein Router einen dann womöglich wieder zu früh auf die alte Route schickt (also die Umleitung zu kurz statt zu lang macht).

Es wäre schon sehr seltsam, wenn jemand Wege trennt, nur um eine spekulative Route mit spekulativen(?) Sperrungen auf einem bestimmten Router zu optimieren. Da würde ich mich dann doch eher an die osmand Entwickler wenden und um eine andere Möglichkeit der Vermeidung bitten, sofern es nicht eher sinnvoll ist, den Grund der Sperrung zu mappen.

Ja, wenn der Grund fuer den Split ist, osmand zu “manipulieren”, wenn aber Teil 1 asphaltiert ist und Teil 2 gepflastert ist, dann nicht.

Deine beiden “Start” und “Stop” punkte liegen auf den unterschiedlichen Richtungsfahrbahnen. Daher kann er nicht direkt fahren sondern muss einmal um den Block. So sieht es für mich jedenfalls aus.

Flo

Nein, das ist nur der Zoomstufe geschuldet um alles in den Screenshot unterzubringen.

Entschuldigung … Ich habe mich unpräzise ausgedrückt. Statt startet nach Westen. Offensichtlich weil der Node naher an den Richtungsfahrbahn West liegt. Er kann aber nicht nach Osten fahren weil das ein oneway ist. Also muss er einmal um den block.

Und nein. Der Node kann nicht beide Richtungsfahrbahnen gleichzeitig meinen. Entweder er ist FR West oder FR Ost näher.

Flo

Ich denke es geht hier gar nicht um ein Manipulieren. Wenn es um temporäre, eher kurzfristige Sperrungen geht, die nicht in OSM gemappt werden - woher soll der Router wissen, von wo bis wo die Sperrung geht? Es geht um die Beantwortung der Frage “diese Straße vermeiden?”. Für den Router ist “diese Straße” vom Anfangspunkt bis Endpunkt des in der Datenbank hinterlegten ways. Wie können denn dann andere Möglichkeiten aussehen? Ein Router ist grundsätzlich dumm, ist eine Maschine, die Algorythmen abarbeitet. Woher soll also der Router wissen, ob die Straße in kompletter Länge, nur ein Abschnitt oder nur punktuell gesperrt ist?

Dann ist das Mappen einer Straßenbaustelle auch ein “manipulieren”.

PS: ich persönlich würde gar nichts an den Daten ändern. Mir persönlich reicht der gesunde Menschenverstand und ein Blick auf die Karte aus, das ist oft besser als ein Computeralgorythmus. Und wenn ich mich so gar nicht in den Örtlichkeiten auskenne, dann nehme ich auch einen gar nicht so unplausiblen Umweg in Kauf oder mache vor Ort die Augen auf und folge einer ausgeschilderten Umleitung.

In brouter z.B. kann man kreisförmige Bereiche vermeiden. Finde ich ganz praktikabel. Ich vermeide damit entweder eine einzelne Stelle oder auch eine ganze Gegend wie Großraum Frankfurt oder so.

Nochmal zum Nachverfolgen: 1. Start gesetzt, 2. Ziel gesetzt (Routing beginnt, Profil=Auto), 3. Zum Startpunkt gezoomt, 4. Zum Zielpunkt gezoomt, 5. wie man sieht, routet der just fine, 6. Straßensperrung wird hier eingesetzt, 7. sodann das neue, Routingergebnis. Da die Sperrung außerhalb der in #2-#5 gefundenen Route liegt, ist Ergebins #7 für Endnutzer nicht nachvollziehbar.

Start und Ziel sind ausreichend präzise gesetzt; es gibt keinen Grund für eine Routingsoftware, nach Westen zu starten, außer unter zuvorgenannter Annahme, dass OsmAnd gesamte Ways damit sperrt, denn dann ist das Ziel zu #2 tatsächlich nicht direkt erreichbar.

Unter https://github.com/osmandapp/Osmand/issues/9126 wird bestätigt, dass “avoid road” (wie der Name ja eigentlich schon sagt) den ausgewählten “way” sperrt.

Daher ist das Verhalten aktuell wohl so gewollt und kein Bug.

Wobei ich finde, dass dies ein sehr theoretisches Beispiel ist. Wie und wann wird denn die Funktion in OSMAnd praktisch genutzt? M.E. doch nur dann, wenn ich vor einer Sperrung stehe und nach einem neuen Weg zu meinem Ziel suche. Praktisch macht es keinen Sinn, im Router ein temporäres “Straße vermeiden” zu setzen, wenn ich mein Ziel bereits erreicht habe und die Sperrung für den Endnutzer nicht zutreffend ist.

Ich gehe davon aus, dass der Rückgriff auf die Länge der ways im Datenbestand auch umgekehrte Effekte haben kann. Ich habe bislang kein getestetes Beispiel, aber folgende Überlegung: ein highway ist aus unterschiedlichen Gründen stark gestückelt (unterschiedliche Oberflächen, diverse Bus- oder Wanderrouten, sidewalk etc …). Nehmen wir an, der highway wird auf einem längeren Stück gesperrt, z.B. wegen einer Sanierung (und eine solche Baustelle ist (noch) nicht im Datenbestand ist). Der Endnutzer steht vor der Sperrung und wählt auf dem Smartphone “Straße vermeiden” aus. Dabei erwischt er aber nur ein kurzes Teilstück, dann wird er u.U. zu früh auf die eigentlich gesperrte Straße zurück geroutet.

Ich denke das liegt weniger am Datenstand, sonder am Verhalten von OsmAnd. Die Funktion heißt zwar “Straße vermeiden”, und wurde wohl auch so implementiert. In der Praxis meint der Benutzer eher “Diesen Teil zwischen zwei Kreuzungen vermeiden”. Bisher ist mir das nicht aufgefallen weil die bei mir eingetragenen Baustellen zufälligerweise kurze Teilstücke einer längeren Straße waren.

Irgendwann wird sich vermutlich irgendwer drum kümmern und das in OsmAnd besser implementieren.