Am 17.07.2012 08:38, schrieb Frederik Ramm:
Jede Relation modelliert eine bestimmte Art von Beziehung, und diese Beziehung muss man verstehen, um sie richtig editieren zu koennen.

+1


Allein schon die einfache Frage: "Ein Way, der in einer Relation steckt, wird zweigeteilt; wie wirkt sich das auf die Relation aus?" kann nicht beantwortet werden, ohne die Relation zu verstehen.

Das sehe ich nicht so. Fällt Dir ein Beispiel ein? In JOSM ist der Standardfall, den dadurch neu enstandenen Weg an gleicher Position einzufügen. Dieses Verhalten ist mir in den letzten Jahren nicht einmal negativ aufgefallen - weder bei MPs, noch bei Routen, noch bei sonst irgendwelchen Relationen..


Oder: "Ein Way, der in einer Relation steckt, wird geloescht. Soll die Relation mitgeloescht werden, soll sie ohne diesen Way weiterbestehen, oder muss ein Ersatz-Way in die Relation aufgenommen werden?"

Das entscheidet der Mapper - die Software muss hiervor geeignet warnen, bzw. die Auflösung dieser Fälle unterstützen. Speziell für Löschungen sieht JOSM solche Warnungen vor und bietet geeignet Alternativen an - gerade auch beim split / join von ways mit Relationen, wie es mit Potlatch aussieht, ist mir unbekannt.



Die Abfrage "Westring, Kiel" liefert etwa 50 einzelne Straßensegmente.

"Ein Way mit dem Namen 'Westring' ist Mitglieder einer Relation. Der Name des Ways wird nun auf 'Suedring' geaendert. Muss er deswegen aus der Relation entfernt werden..." ;)

Das kommt darauf an - wenn die Änderung korrekt ist und die Wirklichkeit reflektiert vermutlich schon.


Eine Relation fuer den Westring in Kiel ist dann sinnvoll, wenn sie auch Objekte mit anderem Namen als "Westring" enthalten soll. Soll sie das nicht, dann kann man sich die Relation sparen.

Gibst Du bitte eine Heuristik an, die präzise genug entscheiden kann, wie der Objektzusammenhang ist? Selbst auf Hausnummern als unique-Kriterium wäre kein Verlass, denn die sind ggf. doppelt oder gar nicht in der DB.

Es kann durchaus zwei unterschiedliche Straßen mit gleichem Namen in Gebieten geben, die nicht durch zwei einfache bboxes auseinanderzuhalten sind.

Weiterhin, verzichtet man auf die bbox-Methode und geht das Problem mit den postal_code-boundaries an, eröffnet sich das Szenario, dass an deren Grenzen eine gleichnamige Straße die postal-boundary schneidet - sind das dann zwei verschiedene Straßen oder eine? Zudem müßte hierfür bei der Post erfragt werden, ob Straßennamen pro postal_code per Definition Post wirklich immer eindeutig sind - imho yes, aber genau weiß ich das nicht.

1) Nehmen wir an, Straßenzshg. werden über type=street durch Mapper modelliert: Für eine bbox B lassen sich dann alle Straßen mit Namen N einfach per Overpass oder SQL abfragen.

2) Nehmen wir nun an, Du hast eine Heuristik entwickelt, die trotz mannigfaltiger Geometrien "in the wild" mittels Bestimmung anhand von nearby- bzw. node-matching Algorithmen halbwegs genau Straßensegmente zu einer Straße zusammenbasteln kann.

-> Ohne ein neues Objekt in der DB oder in Overpass zu schaffen, welches deine Heuristik kapselt und demzufolge zur Ermittlung mehrerer N in B ersatzweise zu 1) verwendet werden kann, ist das nutzlos. Denn während ich für die Instanz B=Bayern und N=Goethestraße mittels 1) ohne Probleme Resultate erhalte, kann ich das mittels 2) ohne Kapselung gar nicht oder nur so kompliziert, dass es niemand je benutzen wird.

-> Nehmen wir also an die Heuristik wird gekapselt und sorgt dafür, Straßenzusammenhänge tatsächlich richtig zu ermitteln. Dann erfüllt sie den gleichen Zweck wie Relationen vom Typ type=street. Mit dem Unterschied, das letztere von Menschen gepflegt wird und erstere von demjenigen, der die Heuristik erstellt - jemandem, der nie lokales Wissen besitzt, aber alle Fälle genügend genau approximieren können muss.

Feststellungen:

- falls es diese Heuristik gibt und sie befriedigend genau arbeitet, dann muss sie noch entwickelt werden, andernfalls wäre zu fragen, weshalb sie noch nicht für OSM benutzt wird - es wäre ein API-Wechsel, entweder bei OSM oder Overpass, nötig, der die Heuristik als abfragbares Objekt auf dem Server hinterlegt - die Heuristik anzuwenden benötigt Rechenzeit -> 'bottleneck' wurde als Problem bereits angesprochen

- falls Relationen weiterhin als unnötiges Hexenwerk angesehen werden, wären diese Schritte für eine Zahl weiterer Relationen zu wiederholen (type=waterway e.g.) - _einem_ Entwickler würde die Aufgabe übertragen eine Heuristik zu finden, die genügend genau für _alle_ funktioniert, das dann zu kapseln und als abfragbares Objekt in der DB oder abgeleiteten Projekten zu implementieren


Genauso mit Bundesstrassen - eine Relation, die exakt alle Objekte mit ref=B10 enthaelt, ist unnoetig. Verlaufen irgendwo die B10 und die B12 ein Stueck auf dem gleichen Asphalt, dann wird sie sinnvoll, denn ein "ref=B10,B12" am Way will niemand auswerten.

Nein, dadurch wird sie nicht sinnvoll. Denn wenn wir im Wiki schreiben, dass die Angabe mehrerer Values durch Semikola-Trennungen erlaubt ist, haben wir hier ein Musterbeispiel, weshalb es auch bei Auswertungen implementiert werden sollte.

Tatsächlich wäre die von Peter bereits angegebene Implementierung einer Heuristik, welche diese Relationen ersetzt, machbar und es fänden sich sicher auch genug Aktive, die unterschreiben würden, dass sie "genügend genau" ist. Er schrieb

"http://www.overpass-api.de/api/interpreter?way[highway=primary][ref=B 10](bbox...)"

würde den Job erledigen. Das sieht erstmal gut aus - tatsälich brauchen wir aber schon regex, da nicht jeder Abschnitt genau "B 10" enthält - also

<has-kv k="ref" regv=".*B 10.*"/>

Auch das Netz, welches bisher, unter Verwendung von Relationen abgerufen werden kann

"http://www.overpass-api.de/api/interpreter?relation[type=route][ref~'.*B (0-9)\+.*'](bbox...)"

wäre ohne Weiteres abrufbar

"http://www.overpass-api.de/api/interpreter?way[highway=primary][ref~'.*B (0-9)\+.*'](bbox...)"


Diese Heuristik (betrachte die bbox von D und suche im ref-key eines primary, bzw. trunk ways nach "B (0-9)\+" dürfte die Bundesstraßenrelationen tatsächlich überflüssig machen. Die Komplexität der Erstellung der Relation im Editor ist auch kaum anders: Suche benutzen, "ref=.." eingeben, Elemente "in die Relation kippen".

Leider klappt das nicht für alle Relationen, denn wie Du imho richtig schreibst: "Jede Relation modelliert eine bestimmte Art von Beziehung, und diese Beziehung muss man verstehen, um sie richtig editieren zu koennen. "

Für mich ist type=street bis dato eine solche Beziehung, die nicht richtig verstanden wurde, um sie durch eine Heuristik abzubilden.


Leider haben wir es bei OSM relativ oft mit Menschen zu tun, die die Welt in Datenbankmodellen betrachten und denen "wenn schon, dann einheitlich" auf die Stirn taetowiert ist. Das fuehrt dann dazu, dass wenn irgendwo in Peru mal zwei Strassen mit unterschiedlichem ref=* auf den gleichen Ways verlaufen, weltweit fuer alle Strassen Relationen eingefuehrt werden muessen ;)

Dieses Problem ist hausgemacht! Es kommt nicht aus Peru. Es enstand dadurch, dass die Community sich entschied, zugunsten von Route-Relationen den Kompromiß einzugehen, bis dahin / bis zu dieser Konsens-Entscheidung weitreichend verbundene Wege zu splitten, bzw. zu fragmentieren. Nicht existierende Heuristiken zu versprechen oder herbeizuwünschen ist sinnlos. Entweder jemand widmet sich dem Problem irgendwann und löst es - dann hat der/diejenige auch ein wirklich gutes Argument geschaffen, _dann_ überflüssige Relationen zu entfernen, oder es bleibt beim status quo. Dieser ist, Relationen vom type=street zu verwenden, um der Fragmentierung durch Routenrelationen und andere Bedürfnisse zu entgegnen.


Gruß
Christian

_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an