Zugehörigkeit von Objekten

Immer wieder tauchen Fragen auf, wie die Zugehörigkeit von irgendwelchen Objekten (z.B. Tankstelle, Bank, Bushaltestelle, Schilder, Hausnummern) zu ihrer Position gelöst werden kann. Dabei geht es z.B. darum, zu welcher Straße ein Objekt gehört (insbesondere an Straßenecken), wo die Zufahrten sind (wenn highway=service übertrieben wäre), etc.
Lösungen sind bisher die diversen Adress-tags oder bei Hausnummern das Karlsruher Schema (bei denen die Hausnummern aber auch neben der Straße liegen).

Ich möchte jetzt folgende Idee zur Diskussion stellen: Was wäre, wenn wir die entsprechenden Objekte mit einer “virtuellen” Verbindung an die richtige Straße, an die exakte Position heften würden? Das wäre dann natürlich in OSM ein way mit einem speziellen tag zwischen POI (oder auch Flächen wie building) und Straße. Diese Verbindung wäre rein logisch und würde auf den Karten nicht gerendert (oder? :)). Bei Adressen könnte man dann auf die address:street verzichten, die Position von Hausnummern könnte exakt bestimmt werden (dabei muss dass Karlsruher Schema nicht kippen).

So, das war noch harmlos ;), man könnte (und sollte) den Faden aber noch viel weiter spinnen. Wofür könnten diese Verknüpfungen alles Verwendung finden? Z.B. könnte man das Strassennetz mit einem place=xxx oder mit Postleitzahlen verknüpfen. Dadurch entsteht ein Baum, der unzählige is_in und andere überflüssig macht. Allerdings muss dann das Grenzproblem gelöst werden. Da hängt sicherlich noch mehr dran, als ich überschauen kann.

Natürlich gibt es auch Probleme:
Vor allem: Passt der Vorschlag überhaupt mit dem Datenmodell zusammen?
Dürfen POI, die bisher (immer?) “Einzelknoten” sind, mit einem way verbunden werden?
Führt der Vorschlag zu einer Vereinfachung oder wird nur alles komplizierter? Wie sieht es mit der Datenmenge aus?
Wird das Editieren dadurch wesentlich schwieriger? Oder sogar einfacher?
Es ist keine kleine Änderung, die man einfach so benutzen kann. Das Modell muss gut durchdacht werden und mit einer langfristigen Perspektive eingeführt werden.

Zur Namensgebung (zunächst sekundär):
Am besten finde ich eigentlich “link”, aber da denkt man immer sofort ans WWW. Daher fände ich “at” ganz gut, das könnte man noch aufsplitten in at=position, at=entrance, at=is_in, etc. Auch “anchor” wäre denkbar.

Ich bin auf Eure Meinungen gespannt.
Reosm

Kannst auch POI mit Zeiger Gradangabe machen :smiley:

Die Bank an der Ecke ist im Norden, oder genauere Angaben von 0-360°

Hallo Reosm,

was spricht denn deiner Meinung nach gegen eine Relation zur Lösung dieses Problems?
Oder hab’ ich dich falsch verstanden? Kann ich nicht ausschließen; es war ein bisschen schwierig, deinen Gedanken zu folgen…
Das Problem mit den Relationen ist halt, dass sie nicht ganz einfach zu durchschauen sind. Aber ein virtueller Weg ist ja auch nicht gerade selbsterklärend…

Noch 'was: POIs sind nicht immer Einzelknoten. Ein Punkt einer Straße kann ja auch z.B. eine Bushaltestelle sein. Oder Noexit=yes. Oder Ampel oder Bahnübergang. Oder um es anders auszudrücken: Ein Punkt, der Element eines Weges ist, kann auch eigene Key/Value-Paare haben.

Bis dann
johannes

Mhh, vielleicht hätte ich mir doch mehr Zeit zum Schreiben nehmen müssen…

Ich glaube nicht, dass Relationen hier zielführend sind. Aber gut möglich, dass ich diese nicht genügend kapiert habe. :wink:

Virtueller Weg war wohl keine gute Begriffswahl. Ich meinte damit nicht mehr, als dass der Weg nicht real ist und nur die Zugehörigkeit (oder Abhängigkeit) zu einem anderen Objekt - meist aber nicht notwendig zu einer Straße - darstellt.

Relationen verstehe ich eher als Zusammenfassung gleichwertiger Elemente. Jetzt beim Schreiben merke ich, dass das nicht stimmt. Also frag ich umgekehrt: Ein großes Hotel liegt an der Ecke Hauptstraße / Säufergasse. Die Postadresse ist Hauptstraße 123, der Eingang ist aber in der Säufergasse. In OSM ist jetzt ein Knoten im Eck von zwei highways. Tja, wo liegt es? Wie findet Routingsoftware das Hotel? Ja, mit address-tags wird das der Hauptstraße zugeordnet. Wie gut lässt sich das aber routen? Was kann ich hier mit Realtionen anfangen? Gibt es da Modelle?
Mein Vorschlag: weg mit den tausenden Adressen in der Datenbank. Objekt mit Hausnummer an die Straße tackern und gut ist :sunglasses: Für das Beispiel: Way mit at=position von Hotel zur Haupstraße; way mit at=entrance zur Säufergasse. Ob housenumber am Hotel bleibt oder besser an den Weg kommt, ist zweitrangig.

Ich hoffe, ich habe mich etwas verständlicher ausgedrückt :).

Klar. Ich habe bei POI zu sehr an z.B. Geschäfte, Hotels, Kirchen etc. gedacht. Aber selbst da war das zu kurz gedacht.

Reosm

Naja, ganz prinziell gibt es sowas ja schon bei OSM: Beim Mappen von Hausnummern. Da werden auch virtuelle Linie gezogen um fortlaufende Hausnummern zu interpolieren.

Und natürlich ist es viel intuitiver, zusammengehörige Objekte mit einer virtuellen Linie zu verbinden, als sich mit diesen unsäglichen Relationen auseinandersetzen zu müssen.

Hi,

Relationen sind hier sicher geeigneter - bzw. es wird z. T schon so vorgeschlagen und gemacht. Stichwort postal_code (http://wiki.openstreetmap.org/wiki/Relation:postal_code) und associatedStreet (http://wiki.openstreetmap.org/wiki/Proposed_features/House_numbers/Karlsruhe_Schema#Case:Relations.28easy_for_computers.2C_difficult_for_humans.29). Das ist aber sicher noch nicht der Weisheit letzter Schluss.

Kurz zusammengefasst: Häuser werden mit addr:housenumber versehen und zusammen mit der zugehörigen Straße in eine Relation gepackt. Diese kann dann wiederum einer PLZ-Relation zugeordnet werden und diese dann dem Ort, Landkreis, Bundesland etc. Damit ist is_in, addr:street unnötig und man spart viele doppelte Daten und auch die hier vorgeschlagenen virtuellen Wege. Relationen sind softwaremäßig sicher auch einfacher auszuwerten.

Gruß, Plasmon