Overpass-Abfrage Sackgasse

Wüsste jemand, wie eine Overpass-Abfrage aussehen müsste um herauszufinden ob ein Straßenabschnitt eine (unmittelbare) Sackgasse ist?

Ja definiere was für dich eine Sackgasse ganz genau ist, dann kann man entsprechende Abfrage schaffen. Mir fallen da zig Arten ein:

  1. ganz konkret mit Verkehrszeichen 357, was aber nicht immer stimmen muss
  2. OSM-eindeutiger ist da halt der Key noexit
  3. außer du meinst Sackgasse nur für bestimmte Gruppen (Autos z.B), dann wäre es ja schon eine Sackgasse, wenn der Weg sich ändert oder eine Barriere hat
  4. Ist es für dich eine Sackgasse, wenn es Wendemöglichkeit gibt? Oder gar Wendekreis?
  5. oder einfach nur wo ein Way im Nirvana endet?

Overpass-Abfragen:

[bbox:{{bbox}}];

// 1. alle Sackgassen-Schilder
(node["traffic_sign"="DE:357"]({{bbox}});.result;)->.result;

// 2. alle "noexit" Nodes / Ways:
(node["noexit"]({{bbox}});.result;)->.result;
(way["noexit"]({{bbox}});.result;)->.result;

// 3. uff...

// 4. alle Wendekreis-Nodes:
(node["highway"="turning_circle"]({{bbox}});.result;)->.result;
(node["highway"="turning_loop"]({{bbox}});.result;)->.result;

// 5. alle Nodes, welche im Nirvana enden (frisst richtig Resourcen!)
node({{bbox}})->.n;
foreach .n -> .g(
  way(bn.g);
  way._(if:!is_closed() && count(ways) == 1);
  node.g(w)(w:1,-1);
  (._ ; .result;) -> .result;
)

// 6. ...
  
.result out geom;

Genial!
Aber vielleicht noch optimierbar:

way[highway]({{bbox}});
node(w)->.n;
foreach .n -> .g(
  way(bn.g);
  way._(if:!is_closed() && count(ways) == 1);
  node.g(w)(w:1,-1);
  ......
)

Damit bearbeitet man nur Knoten, die etwas mit highways zu tun haben.

Vielen Dank! Ja, ich meine eigentlich Punkt 3 und 5. Ich habe 5. ausprobiert, funktioniert tatsächlich, aber ist wie du schon sagst selbst für die kleinsten Abschnitte unglaublich langsam.

Ich habe in der neuesten Version von StreetComplete eingebaut, dass für sehr schmale (lanes <= 1 oder *width - *Breite der Parkstreifen < 4) gefragt wird, ob es eine Einbahnstraße ist. Das ruft jetzt aber Sackgassen auf den Plan, die offensichtlich keine Einbahnstraße sein können.

Ich denke ich werde es so machen dass die App alle Straßen herunterlädt und sie dann lokal auf dem Smartphone analysiert, Overpass ist zu langsam. Ich werde dann die Logik nutzen, die du in dem foreach geschrieben hast.

Bitte weise dabei aber darauf hin, daß zuersteinmal die Breite der Straße überprüft werden soll.
Ich habe erst heute wieder falsche Width-Angaben (4m bei einer echten Straßenbreite von ca. 6 m) gelöscht.

Hmm naja generell muss Streetcomplete schon davon ausgehen, dass die Daten auf die es aufbaut um Entscheidungen darüber zu treffen ob eine Frage gestellt wird oder nicht, richtig sind. Man kann den Nutzer an dieser Stelle nicht fragen ob die Breite von X Metern richtig ist, denn woher soll er das wissen, er hat nichts dabei, um es zu messen.

Ein anderer Nutzer schrieb mir heute eine Email, dass die Aufgabe auch für https://www.openstreetmap.org/way/626989228 angezeigt wird. Wenn man sich die Straße (als Mensch / im Kontext) so anschaut, scheint es sehr sehr unwahrscheinlich zu sein dass das eine Einbahnstraße ist. In diesem Fall wird die Frage angezeigt, weil jemand lanes=1 getaggt hat.
Wenn nur eine Fahrspur vorhanden ist, liegt es technisch gesehen nahe, dass es eine Einbahnstraße sein könnte. Ich denke was hier passiert ist, ist, dass jemand lanes=1 getaggt hat, weil keine Fahrspurmarkierungen sichtbar sind, nicht weil diese Straße nicht breit genug für zwei sich entgegenkommende Autos wäre. Also kurz, Fehler beim Taggen.

Ist die Frage, wie oft es passiert dass die Breite falsch und die Anzahl der Fahrspuren falsch eingetragen ist. In diesem Fall wird eine relativ sinnlose (aber: nicht falsche) Information von StreetComplete hinzugefügt (oneway=no). Wünschenswerter wäre, wenn es stattdessen korrigiert werden würde, wie du sagst.

Das Problem mit dem Korrigieren ist, wie man Nutzern vermitteln soll dass sie bitte überprüfen sollen, ob die Annahmen auf denen die Stellung der Frage beruht, überhaupt richtig sind. Und dann im zweiten Schritt, wie sie das korrigieren sollen, denn wie sollen sie ohne Messinstrumente herausfinden, wie breit die Straße ist?

Ich habe dazu folgende Lösungsideen:

  • erstmal wie besprochen zumindest die Endstücke von Einbahnstraßen herausfiltern (siehe overpass-Abfrage)

  • um auf der sicheren Seite zu sein, wird die Frage wird **nur **gestellt wenn sowohl lanes <= 1 ist **und **width gesetzt und ausreichend schmal ist (statt wie bisher entweder - oder)

  • die Frage die momentan gestellt wird ist “Ist dies eine Einbahnstraße? Wenn ja, in welche Richtung?”. Man könnte die Frage umformulieren in “Dieser Straßenabschnitt ist sehr schmal, ist es eine Einbahnstraße?”. Dem Nutzer wird außerdem eine weitere Antwortmöglichkeit angeboten, betitelt mit “ist nicht schmal!”. Wenn der Nutzer es so beantwortet, wird das width-Tag gelöscht, weil es offenbar falsch ist.

Der letzte Vorschlag gefällt mir selbst nicht so gut, denn, was ist schmal?

Sind Streetcomplete-Nutzer zu Blöd Angaben zu Width bzw. Lanes zu überprüfen?
Es sollte doch möglich sein, daß Streetcomplete bei Auswahl einer Aufgabe eine Erläuterung dazu anzeigt.

Ob eine Straße ca. 4 m oder 6 m breit ist, sollte man schon schätzen können.

PS:
Ich habe immer etwas dabei um bei einer Nebenstraße die Breite zu messen: meine Füße (Schrittlänge ca. 80 cm)

Bitte nimm dir noch etwas Zeit, meinen letzten Beitrag genauer durchzulesen. Auf die Dinge die du in deinem letzten Post ansprichst, sollte ich eingegangen sein. Du bist offenbar kein Nutzer von StreetComplete, schau dir evtl. ein Video davon an oder so um zu verstehen, wie es aufgebaut ist. Hier ist ein Screenshot wie die Einbahnstraßen-Frage momentan aussieht: https://github.com/westnordost/StreetComplete/issues/2140#issuecomment-704509452

Zu deinem PS: Es geht hier aber um width, nicht um est_width.

Was glaubst Du wohl, wie oft width wirklich vermessen wurde?

Ich denke die meisten width-Angaben wurden mit Luftbildern abgemessen. Je nach Qualität der Luftbilder können diese Angaben schon recht exakt sein. Wer nicht hoch-auflösende Luftbilder vor sich hat, wird eher weniger auf die Idee kommen, width zu setzen.

Die meisten Width-Angaben (an Feldwegen und Nebenstraßen) die ich bisher gesehen habe, waren falsch (überprüft in JOSM anhand der Luftbilder).

Man baut darauf auf, dass das, was man annimmt, die Wahrheit ist … also ich würde dem keine Quote von 50% geben … aber es schafft ja neue Wahrheiten. :wink:

Klar kann ein Programm nur mit dem arbeiten, was es vorfindet.
Aber deswegen soll(te) es ja den Mapper zur Hirnarbeit anregen - der hat schließlich Augen und einen Verstand, um das zu hinterfragen!

Edit:
Wenn man in die Frage einbaut, dass die Breite schmaler als 4 m angegeben ist, hat der Mapper eine Chance, dies - und auch die Frage - zu hinterfragen, statt nur stur ‘no’ anzugeben.
(Im übrigen gibt es hier im norddeutschen ländlichen Raum massenhaft schmale Nebenstraßen unter 4 m Breite, wo man zum Begegnen aufs Bankett ausweichen muss.)