Am 17.07.2012 17:52, schrieb Christian Müller:
Am 17.07.2012 08:38, schrieb Frederik Ramm:
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?
Abbiegebeschränkungen
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.
Trotz Warnung muss der Mapper aber dann die Relation verstehen - auch der blutige Anfänger im Zweifelsfall eine seltene Relation, deren Sinn sich ihm nicht einmal erschließt.
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.
Selbst wenn die Post davon offiziell ausgeht, berücksichtigt sie nur Straßen, an denen es Adressen gibt, alle anderen haben nicht einmal eine Postleitzahl. Der OSM-Datenbank hilft das also im Zweifelsfall nicht, wenn es den gleichen Wegenamen für einen Fussweg mehrfach gibt in der gleichen Gemeinde.
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.
Warum sollte man notwendigerweise eine solche Abfrage direkt online über die OSM-Dienste zur Verfügung stellen wollen? Die Frage ist hier wie so oft: wie viel Dienstleister ist OSM, oder inwiefern ist OSM Datenlieferant mit Tools für Mapper und Showcases für User?

Die Abfrage 2) ist auch ohne kapselung machbar, wenn sie in ein entsprechendes Tool gepackt werden kann. Nimm die Overpass-API als Beispiel, die IMHO recht einfach lokal installiert werden kann auf einem mehr oder weniger beliebigen Datenextrakt. Füttere deine lokale Overpass-API mit dem Bayern-Extrakt (oder Deutschland-Extrakt), such dir die entsprechende Query aus einem (noch zu entwickelnden) Tool heraus, das das generieren von Queries einfach macht und stell die Frage an deine lokale Datenbank.

-> 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
- eine Möglichkeit, diese Abfrage lokal durchzuführen, würde das Bottleneck auf den Rechner des Users verlagern, die Overpass-API entsprechend zu erweitern durch z.B. eine Overpass-Query-GUI, wäre ein nettes Projekt.
- 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.)
...innerhalb des Query-GUI-Tools (oder einer darin eingebundenen Scriptsammlung).
- _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
...bzw. im Query-Tool
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.
+1
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.*"/>
...was das ganze ja nun nicht sooo besonders viel schwieriger macht (solange overpass reguläre Ausdrücke unterstützt).

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.
Aber eine Relation, die nicht verstanden ist, kann ich gar nicht abbilden oder verwenden - dafür muss ich sie verstehen. Eine nicht verstandene Relation ist insofern IMHO komplett sinnlos. Sobald sie sinnvoll wird, wird sie dann möglicherweise überflüssig, weil anders abbildbar.
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.
Relationen vom Typ street werden kaum doch verwendet, das splitten der Wege funktioniert weitgehend gut, weil man schnell genau sieht, an welchem Wegestück man Daten ändert.

Gruß
Peter

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

Antwort per Email an