Einführung Relationen

From OpenStreetMap Wiki
Jump to: navigation, search

Dieser Artikel ist eine Einführung in die von OSM verwendeten Relationen. Die formale Definition von Relation ist im Artikel Relationen zu finden.

Grundverständnis

Manche Dinge in OSM lassen sich nicht durch die üblichen Punkte und Wege mit angeschlossenen Attributen in den Griff bekommen. Um komplexere Zusammenhänge zu beschreiben, gibt es daher die sogenannten Relationen. Beispielsweise könnte jemand den Weg einer Buslinie in OSM beschreiben wollen. So einen Weg nennt man in OSM eine "Route". Vielen wird der Ausdruck "Routenplaner" ein Begriff sein. Eine Route wäre ein typisches Beispiel dafür, was in OSM durch eine Relation dargestellt wird. Neben Buslinien können das beispielsweise Wanderwege, Grenzen oder der Verlauf einer Bundesstraße sein. Um darzustellen, worum es sich handelt, kann eine Relation ebenso wie ein Punkt oder Weg mit Attributen versehen werden. Sie spezifizieren beispielsweise, dass es sich um die Route einer Buslinie handelt, welche Nummer sie trägt und zu welchem Verkehrsverbund sie gehört.

Beispiel einer Relationskennzeichnung für eine Busroute:

  • type=route
  • route=bus
  • ref=781
  • network=VRR (Verkehrsverbund Rhein Ruhr)
  • name=VRR 781

Eine einfache Relation ist zunächst einmal nur eine Auswahl von Wegen und Punkten, Bestandteile (engl. members, Mitglieder) genannt, die - bildlich gesprochen - in die Relation wie in einen Korb "eingesammelt" werden. Der Typ der Relation beschreibt, welchem Zweck die Relation dient. Ist der Zweck beispielsweise die Beschreibung einer Route, dann werden die betreffenden Wegstücke in die Relation "eingesammelt", also der Relation zugeordnet. Das Zuordnen (Einsammeln) von Punkten und Wegen zu einer Relation geschieht in den Editoren dadurch, dass man ein oder mehrere markiert und dann durch einen Menüpunkt zu einer Relation hinzufügt.

Auch wenn einem menschlichen Bearbeiter intuitiv klar ist, in welcher Reihenfolge die Wegstücke anzuordnen sind, so ist die OSM-Datenbank nicht in der Lage, die korrekte Reihenfolge zu erkennen. Zudem ist es möglich, dass sich die Route selbst kreuzt. Dann kann auch ein Mensch nicht erkennen, welchen Weg ein Bus nimmt. Daher müssen die Elemente in der richtigen Reihenfolge einsortiert werden. Hierzu bieten die Editoren nach dem Aufruf einer Relation entsprechende Sortierfunktionen an.

Abgesehen von der Reihenfolge stehen die Elemente einer Relation vom Typ Route gleichwertig nebeneinander. Bei anderen Typen von Relationen können die Elemente nicht gleichwertig sein, sondern müssen spezielle Aufgaben in der Relation erfüllen. Diese spezielle Aufgabe nennt man Rolle. Hierzu hat jedes Element einer Relation ein Textfeld, in das diese Rolle eingegeben werden kann. Die Rolle darf nur aus einem einzigen Wort bestehen. Bleibt dieses Rollenfeld leer, wie im Falle der Routenrelation, dann hat das Element keine spezielle Aufgabe/Rolle, sondern nur eine Standardaufgabe.

Anders in einer Relation vom Typ Abbiegerelation. Diese beschreibt, wie an einer Abzweigung oder an einer Kreuzung (nicht) abgebogen werden darf. Hier muss spezifiziert werden, von welcher Straße man über welchen Punkt in welche Straße (nicht) fahren darf. Dazu werden den Elementen die Rollen from, via und to zugewiesen.

Es muss also zunächst festgelegt werden, von welchem Typ die Relation ist. Erst dann weiß man, welche Werte die Rolle annehmen kann. Ohne die Typangabe der Relation ist die Angabe einer Rolle also sinnlos.

Mehrere Relationen können wiederum in eine Elternrelation eingesammelt werden.

Mit dem Editor Potlatch ist das Wahrnehmen und Bearbeiten von Relationen nur im Advanced Modus möglich.

Bleibt noch anzumerken, dass im beschriebenen Spezialfall einer Busroute nicht nur der Fahrweg, sondern auch die Haltestellen in der richtigen Reihenfolge in die Relation eingesammelt werden. Für jede Fahrtrichtung wird dabei eine getrennte Relation erstellt und diese beiden Relationen wiederum in eine Elternrelation eingesammelt.

Definition

Relationen sind Gruppen von Objekten (Punkte, Linien, Flächen und andere Relationen). Relationen haben keinen eigenen geografischen Ort. Wie Punkte, Linien und Flächen lassen sich auch Relationen mit Eigenschaften (Schlüssel und Wert) versehen.

Relationen dienen zum einen zum einfachen Gruppieren von Objekten. Um beispielsweise eine Radwanderroute darzustellen werden die einzelnen Wegstücke, die zu der Route gehören, also die Radwege, Straßen, Brücken, etc., einer Relation zugeordnet, beispielsweise mit name=Gera-Radwanderweg. Dieser Gruppierung von Wegelementen werden dann die Eigenschaften für Radwanderroute (type=route und route=bicycle) zugewiesen.

Eine andere Aufgabe ist es, die einzelnen Elemente einer Relation in eine definierte Beziehung zueinander zu setzen. Den Gruppenmitgliedern können dabei beliebige Rollen (englisch: roles) zugewiesen werden. Beispielsweise können so Abbiegerregeln erstellt werden (von Weg A darf nicht in Weg B gefahren werden).

Mit Multipolygon-Relationen können z.B. Innenhöfe in Gebäuden, Lichtungen in Wäldern und Inseln in Seen dargestellt werden.

Relationen sind keine Kategorien. Beispiel: Sammle nicht einfach alle Tankstellen eines Betreibers in einer Relation, sondern benutze eine Suche in OSM nach amenity=fuel und operator=Betreiber_xy, und erstelle damit deine eigene Datenbank.

Relationen wurden am 08. Oktober 2007 mit dem API v0.5 eingeführt.