Wege mit nur einem Knoten: eine Aufgabe für Wall·E?

Zusammenfassung siehe Wiki-Seite: http://wiki.openstreetmap.org/wiki/User:Oli-Wan/Wall-E#Wege_mit_nur_einem_Knoten

Moinsens,

xybot hat sich seinerzeit auch um Wege gekümmert, die nur aus einem Knoten bestehen. “Gekümmert” bedeutet in diesem Zusammenhang deren Löschung. Es wäre ein leichtes, eine solche Euthanasie auch Wall·E beizubringen; allerdings bin ich mir unschlüssig, ob dies sinnvoll ist. Dazu möchte ich einmal eure Meinungen einholen.

Fakt ist: so wie sie sind, sind die Wege unbrauchbar.

Die Frage ist aber, ob man sie in (nahezu) allen Fällen sicher löschen kann, ohne dabei Information zu vernichten, die einem menschlichen Korrekteur eine bessere Lösung ermöglicht hätte. Ich denke dabei etwa an folgende Konstellationen:

  • Ein Mapper will einen POI eintragen. Mit der freundlichen Unterstützung eines kaputten Editors landet die Information (also Tags) nicht am Knoten K, sondern am nur aus diesem Knoten bestehenden Weg W={K}. Löscht man den Weg, ist die Information futsch. Ein menschlicher Korrekteur könnte die Intention des ursprünglichen Mappers erkennen und die Tags an den Knoten verschieben, bevor er den Weg löscht. (Oder gleich den POI als Fläche einzeichnen, sofern sinnvoll.)

  • Ein Mapper will z.B. eine Straße einzeichnen; dank der freundlichen Unterstützung eines kaputten Editors kommt es nicht dazu, sondern es entsteht nur ein Weg mit einem Knoten. Ein menschlicher Korrekteur könnte auch hier die Intention des ursprünglichen Mappers erahnen und die Straße, gestützt auf das Luftbild und die am kaputten Weg vorhandenen Tags, richtig anlegen.

  • Ein Mapper bearbeitet bestehende Linien- oder Flächenobjekte. Mit der freundlichen Unterstützung eines kaputten Editors wird einer der bestehenden Wege, etwa ein Gebäude, auf einen Knoten zusammengeschrumpft. Ein menschlicher Korrekteur könnte z.B. anhand des Luftbildes erkennen, daß dort Gebäude vermurkst wurden, und eine ordentliche Reparatur vornehmen.

Sollte ich Wall·E entsprechend erweitern, käme die entsprechende Funktion wie alle anderen auch zunächst nur in DE zur Anwendung; daher hier nur Zahlen zu DE. Aktuell (Stand vor vier Tagen) gibt es im DE-Extrakt der Geofabrik 488 Wege mit nur einem Knoten. 445 davon können Potlatch 2 zugeschrieben werden, 36 Vespucci. (Die übrigen wurden vermutlich inzwischen bereinigt.)
Zur eigenen Meinungsbildung siehe: http://toolserver.org/~mapjedi/candidates_singlenode_de.osm - die Datei enthält allderdings nur die Wege, keine Knoten. Zum Nachladen die Datei in JOSM öffnen, alles auswählen (Strg+A), Auswahl aktualisieren. Keiner der Wege ist älter als Anfang Dezember, offenbar wurde bis dahin noch aufgeräumt; es werden also allein in DE pro Monat mindestens 100 solche “Wege” erzeugt.

Aus den oben genannten Gründen bin ich eigentlich eher zurückhaltend, Ein-Knoten-Wege (1NW) pauschal zu löschen. Andererseits legen praktische Erwägungen nahe, die obigen Einwände in den Wind zu schlagen:

  • xybot hat 1NW ohne weitere Prüfung gelöscht, dagegen scheint es nie Beschwerden gegeben zu haben.

  • In der Praxis scheinen menschliche Korrekteure, wenn überhaupt, auch nur eine Löschung vorzunehmen. Eine “bessere” Korrektur, auch wenn sie im Einzelfall evtl. möglich wäre, findet nach meiner Kenntnis nicht statt. (Auch JOSM bietet als automatische Korrektur nur die Löschung an.)

  • Die schiere Flut von 1NW macht es auch praktisch unmöglich, bei jedem einzelnen eine detaillierte Kontrolle vorzunehmen.

  • Nach meiner Einschätzung sind darüber hinaus die oben skizzierten Szenarien eher selten. Der typische Fall scheint zu sein, daß neben der kaputten Bahnhofstraße auch noch eine ordentliche Bahnhofstraße eingezeichnet wird. Wohlgemerkt ist dies nur eine Einschätzung, das sollte man noch systematischer untersuchen.

Derzeit scheint es mir am sinnvollsten, in der folgenden Richtung weiter nachzudenken: lassen sich Fälle abgrenzen, wo eine “bessere Korrektur” nicht möglich erscheint? Ich denke da z.B. an einen als Straße getaggten 1NW in Version 1, dessen Knoten zugleich einer validen Straße mit gleichen Tags angehört. In dem Fall würde ich aufgrund bisheriger Erfahrungen davon ausgehen, daß neben dem mißglückten Versuch auch eine ordentliche Straße angelegt wurde und die Erhaltung des 1NW als Marker für menschliche Korrekteure nicht lohnt. Auf diese Weise könnte man sukzessive den Anwendungsbereich auf weitere sicher erscheinende Fälle erweitern. Je nachdem, was dann noch übrig bleibt, läßt man den Rest entweder tatsächlich für menschliche Korrekteure stehen, oder gelangt zur Erkenntnis, daß 1NW in keinem Fall erhaltenswert sind.

Nur ein Gedankeneinwurf meinerseits: wenn sich Fälle abgrenzen lassen, die nicht ohne menschliches Zutun gelöst werden können/sollten, kann man beispielsweise die Fehlerprüfung in keepright dahingehend optimieren. Alle anderen 1NW können (meiner Meinung nach) einfach gelöscht werden. Alle anderen sollten für andere QA-Programme übrig bleiben, die dann im günstigstens Fall auch irgendwann von Menschen behoben werden.

Ich denke das wäre ein guter Kompromiss.

PS: Weiter so mit dem Aufräumen! Und danke! :wink:

Schwierig, sehr schwierig. Sind denn an den 1-Knoten-Wegen Taggs enthalten?

Wo nein, kann man die sicher bedenkenlos löschen, da keine Informationen verloren gehen.
Wenn doch, muss man weitere Überlegungen anstellen, ob ein Mensch aus den vorhandenen Informationen irgend etwas rekonstruieren könnte.

Beide Fälle scheinen laut der von dir erwähnten Liste in erheblichen Maß vorzukommen.

Edbert (EvanE)

Kommentare zu deinen 3 Szenarien:

  1. Dieses Problem lässt sich auf jeden Fall vermeiden, indem man nur taglose 1NW löscht. Das sind zwar nur ein Teil aller 1NW, aber zumindest ein Anfang. Für die anderen könnte man überlegen, die Tags an den Knoten zu übertragen. Selbst wenn es sich um Tags für Wege handelt, kann das sinnvoll sein - Information geht keine verloren, QA-Tools können das anzeigen.
  2. Halte ich für irrelevant. Entweder gibt es einen Mapper, der an dieser Stelle bereit ist, Straßen einzuzeichnen, dann wird der das auch tun, wenn da kein 1NW sitzt, oder es gibt keinen, dann wird auch niemand den 1NW verbessern.
  3. Hier könnte es helfen, die Wege nicht zu löschen, wenn sie zuvor aus mehreren Knoten bestanden. Eventuell könnte man sie (bzw. nur ihre Geometrie) dann auf den letzten Stand mit mehr als einem Knoten zurücksetzen, das sollte normalerweise nicht schaden - sie waren ja auf diesem Stand schon mal in der DB und falscher als ein 1NW kann es auch kaum sein. Und wenn es Gründe für eine Änderung gibt, dann sind sie dann zumindest wieder leichter in Karten oder im Editor sichtbar.

Von meiner Seite also: Ja, sinnvoll.

Zu 3. möchte ich zu Bedenken geben, dass einige/etliche dieser 1-Knoten-Wege aus überlappenden Wegen entstanden sein können. Dann macht ein Wiederherstellen eines früheren Zustands meiner Meinung nach wenig Sinn. Ebenso ist nicht sicher, dass ein Knoten aus einer früheren Version nicht bereits selbst gelöscht wurde. In beiden Fällen wird nur ein Fehler durch einen anderen ersetzt.

Weiter denke ich, dass 1-Knoten-Wege in Version 1 ebenso wie Tagg-lose 1-Knoten-Wege bedenkenlos gelöscht werden können.

Edbert (EvanE)

Bei der Frage “Gehen Infos verloren?” sollte man auch berücksichtigen, ob diese “verlorenen Informationen” denn auch gefunden werden. Ich kenne keinen Editor, der solch einen “Weg” grafisch anzeigt. Wie auch? Unter josm bspw. findet man solche Wege nur, wenn man den Validator drauf los lässt oder gezielt einen Bereich markiert und dann durch die Auswahlliste sucht. Und auch dann stellt sich die Frage: War das nun ein missglückter Löschversuch oder ein missglückter Eintragversuch? Oder anders ausgedrückt: Soll ich die Info behalten oder Löschen?

Da dies nicht eindeutig zu klären ist, braucht es andere Quellen (meist lokales Wissen). Daher käme ich zu dem Schluss, dass letztlich keine Infos verloren gehen, bzw. die Infos, die erhalten bleiben würden ohnehin überprüft werden müssen.

Wenn ich den Weg mit seinen Informationen in einen Node ändere bzw. alle Informationen dort hin übertrage, dann wird der Node sichtbar. Und das positiv wie negativ, soll heißen er wird bei keep right angezeigt wenn am Node unpassende Attribute sind. Sollten keine Attribute vorhanden sein, dann durch den Bot sofort löschen.

PS: http://toolserver.org/~mapjedi/candidates_singlenode_de.osm = Page not found.

Nehmen wir mal an wir haben einen One-Node-Way mit dem Tag amenity=pub.

Das könnte auf vielerlei Weise entstanden sein:

  • Pub war als Fläche eingetragen und Löschen ist missglückt.
  • Pub war als Fläche eingetragen und wurde ausversehen zerstückelt
  • Pub sollte eingetragen werden und das ist missglückt

Wahrscheinlich gibts auch noch mehr Möglichkeiten. Wenn man die Info jetzt wiederherstellt, dann kann es genausogut sein, dass man eine Info in die Datenbank einträgt, die falsch ist.

Ich see’s wie Edbert: Taglose löschen und alle anderen anschauen (Keepright?).
Und: Wenn möglich Editoren reparieren! :slight_smile:

Edit: ein “fixme” kann man alternativ an den Node auch noch kleben…

Meiner Meinung nach müsste die API das Hochladen von solchen Wegen ablehnen, so wie sie das bei Wegen die garkeine Knoten haben bereits macht.

Die API ist bewusst einfach gehalten, um die notwendige Performance zu gewährleisten.

Ich stimme dir dennoch zu, dass kaputte Wege mit weniger als zwei verschiedenen Knoten von der API nicht akzeptiert werden sollten.

Die beste Möglichkeit ist diesen Wunsch im Brainstorming für die nächste API-Version (0.7) zu dokumentieren.

Edbert (EvanE)

Ich habe mir zufällig den Weg 26205091 aus der Liste ausgesucht, und konnte anhand dessen einen den Weg rekonstruieren:
http://www.openstreetmap.org/browse/way/218728084/history

Vorher bestand der Weg aus 2 Knoten, nachher war der nicht mehr vorhandene Knoten gelöscht. → Vielleicht kann man den 1-Knoten-Weg mit mind. einem der damal Vorhandenen Knoten wieder Verbinden, bzw. wenn der Knoten gelöscht worden ist, an der Position einen Neuen knoten einfügen.
Da dies möglicherweise zu redundanten Informationen führen kann, (da ja die Tags erhalten bleiben,) könnte man vor jeden Tag ein fixme: setzten?! Und ggf. noch ein fixme-Tag anhängen.
So kann man den Weg zumindest im Editor sehen und wenn man will bearbeiten/reaktivieren/löschen.

Edit:
hingegen ist bzw. war Weg 23598134 aus der Liste identisch wie dieser Weg nun:
http://www.openstreetmap.org/browse/way/214247948/history

Nicht daß ihr denkt, ich hätte das Thema schon wieder vergessen. Ich habe bewußt nach dem Eröffnungsposting mal einen Tag die Klappe gehalten, um die Diskussion nicht einseitig in eine bestimmte Richtung zu lenken und um halbwegs unbeeinflußte Wortmeldungen zu erhalten.

Die bisherigen Äußerungen decken das komplette Spektrum vom Holzhammer bis zur Mutter der Porzellankiste ab - ein Hinweis, daß die Sache gar nicht so eindeutig ist wie man zunächst denken könnte.

Folgender gemeinsamer Nenner scheint sich aber mindestens abzuzeichnen: 1NW in Version 1 ohne Tags können weg. Diese enthalten bestenfalls die Information “hier ist möglicherweise irgendwas” - also nil. Falls der zugehörige Knoten ebenfalls keine Tags hat und nicht Teil eines weiteren Weges (oder einer Relation) ist, kann er meines Erachtens gleich mit entsorgt werden. Bedauerlicherweise deckt dies nur einen recht kleinen Teil der 1NW ab.

Das stimmt. Möglicherweise lassen sich jedoch bestimmte Situationen automatisiert erkennen. Einen ersten Hinweis liefert die Versionsnummer, anschließend kann man sich die Historie oder weitere Objekte aus demselben Änderungssatz anschauen: gibt es ein weiteres Objekt mit identischen Tags, das in demselben Änderungssatz angelegt wurde? Bei der Identifizierung der Verursacher von Wegen mit wiederholten Knoten habe ich schon eine History-Suche im Einsatz.

Probleme mit dem Webserver, die Datei ist vorhanden. Tee trinken und erneut versuchen.

Wie gesagt sind die Hauptverursacher derzeit Potlatch und Vespucci. Bei Vespucci bin ich zuversichtlich, daß der Fehler (Ticket gestern geschrieben) schnell behoben wird und die nächste Version dann “sauber” ist; es bleiben aber natürlich noch alte Versionen im Umlauf. Bei Potlatch hingegen habe ich wenig Hoffnung, daß der Bug noch irgendwann geschlossen wird.

Bei 23598134 würde ich (als Mensch-Mapper) sagen: der Weg kann weg, denn alle Knoten, die er vorher hatte, stecken jetzt in einer Straße mit dem gleichen Namen. Dieses Kriterium ließe sich nach meiner Einschätzung ebenfalls automatisieren. Wenn das noch für paar weitere gelingt, könnte man den 1NW-Wald evtl. schon spürbar ausdünnen.

Falls ich mich tatsächlich daran mache, einen Teil der 1NW zu löschen, bleiben ganz von allein nur noch diejenigen übrig, von denen ich lieber die Finger lasse. keep right braucht dann nur noch diejenigen anzuzeigen, die eben da sind - und das tut es ja schon.

Allgemein ist die Einschätzung, dass 1-Knoten-Wege ein Problem sind und daher behandelt werden sollten.
Nach meiner Einschätzung sollte das jedoch Version 1 oder ohne Taggs heißen.
Bezüglich der Knoten stimme ich mit dir überein. Wenn der Knoten des 1NW Taggs hat oder Teil eines Weges/Relation ist, sollte man ihn besser behalten (ggfs. ein FIXME ergänzen). Falls nicht kann er gleich mit entsorgt werden.

Hier kann man eventuell noch unterscheiden zwischen highway, immer Flächen (z.B. landuse) und POI (amenity, shop, …). Bei highway kann man wohl bedenkenlos entsorgen. Bei Flächen oder POIs die Taggs des Weges an den Knoten und den Weg entsorgen.
Falls die Prüfung des Changesets ein Duplikat ergibt, kann man Weg und Taggs und falls unverbunden den Knoten entsorgen.

Das wäre als Rückfall-Ebene (Anzeige nicht automatisch lösbarer Probleme) sicher sinnvoll.

Persönlich tendiere ich mittlerweile dazu, möglichst viele der 1NW entweder komplett zu löschen (inkl. Knoten) oder wo das nicht möglich ist, auf einen Punkt mit den Taggs des Weges zu reduzieren (nur den Weg löschen). Im zweiten Fall wäre ein FIXME=* sicher sinnvoll.

Die Fälle, wo man tatsächlich als Mensch einen Weg wieder herstellen kann, dürften eher wenige sein. Meistens wird ein Mensch einen 1-Knoten-Weg einfach entsorgen. Von daher würde ich keine zu strengen Maßstäbe anlegen.

Edbert (EvanE)

-snip-

Nein, das ist mir zu grob. “oder” deckt auch Wege mit Tags in Version 1 ab - dies enthält den Fall, wo die Daten eines POI am kaputten Weg gelandet sind - sowie Wege kaputte Wege ohne Tags mit höherer Versionsnummer, also auch Wege, die etwa als Teil eines MP bewußt keine Tags hatten. Wie häufig in den skizzierten Fällen tatsächlich noch etwas zu retten ist, vermag ich bisher nicht einzuschätzen, aber ich möchte die Chance hierauf nicht gleich von vornherein zunichte machen. Deshalb die strengere Bedingung “1NW in Version 1 ohne Tags”.

Ich denke, daß ich diesen ersten Schritt nächste Woche einmal angehen werde: 1NW in Version 1 ohne Tags löschen, ihre nicht erhaltenswerten Knoten (ohne Tags und nicht Element eines weiteren Objekts) gleich mit. Anschließend mal schauen, welche weiteren sicher löschbaren Fälle sich identifizieren lassen. Dies könnte einer davon sein:

OK, das kann ich nachvollziehen.
Wir (ich) wissen und schätzen, dass du die sichere, eindeutige Seite deutlich bevorzugst. Daher wollen wir (ich) dich nicht drängen, das hier anders zu machen.

Persönlich neige ich nach der bisherigen Diskussion und meiner eigenen Erfahrung mittlerweile dazu, einfach alle 1-Knoten-Wege zu löschen. Ein Bot muss jedoch deutlich vorsichtiger vorgehen, als es ein Mapper im Einzelfall tun würde.

Edbert (EvanE)

Sollte man hier nicht noch die Einschränkung machen, dass die Wege in keiner Relation enthalten sind? Bei Wegen in Relationen würde ich eine deutlich höhrere Wahrscheinlichkeit sehen, dass noch etwas zu retten ist, und sei es nur die Korrektur der Relation. Vermutlich wäre es sinnvoll 1NW in Relationen gezielt durch ein QA Tool Mappern zur manuellen Korrektur zuzuführen. Man müßte dazu aber wohl einen Weg finden, wie man die 1NW im Editor besser bearbeitbar macht.

Wenn man 1NW in Relationen ausschließt, wäre aber die Frage, ob man bei 1NW ohne Tags wirklich noch die Forderung nach Version 1 zum Löschen braucht.

Korrekt. Hatte ich auch so vor, aber vergessen dazu zu schreiben. (Für mich war das in Kenntnis der API ohnehin implizit, weil /delete nur funktioniert, wenn das Objekt nicht referenziert wird - daher habe ich wohl nicht daran gedacht, dies oben zu erwähnen.)

Abwarten. Wenn die ersten sicheren Fälle erledigt sind, gewinne ich hoffentlich einen besseren Überblick, wie sich die übrigen verteilen und nach welchen Kriterien weitere als sicher löschbar eingestuft werden können. Solche Kriterien ergänze ich dann lieber nach und nach im Programm, als mit einer von vornherein zu breit gefaßten Bedingung möglicherweise verwertbare Information zu verlieren.