DE:Relation:multipolygon

multipolygon
Beschreibung
Die Relation Multipolygon wird zur Darstellung von komplexen Flächen verwendet. Das sind insbesondere Flächen mit 'Löchern', großen Umfängen oder geographisch getrennt liegenden Flächenstücken.  
Gruppe: Eigenschaften
Mitglieder
  • ( ) - outer
  • ( ) - inner
Status: de facto

Relationen vom Typ Multipolygon werden zur Darstellung von komplexen Flächen verwendet.

Einfache Flächen werden durch einen geschlossenen Linienzug, versehen mit einem Attribut, das eine Fläche nahelegt, dargestellt. Zum Beispiel wird ein geschlossener Linienzug mit dem Attribut "landuse=forest" als Fläche interpretiert, nicht dagegen ein geschlossener Linienzug mit dem Attribut "junction=roundabout". Dies ist bei einfachen Flächen möglich, deren Umriss aus einer einzigen Linie besteht und keine Löcher aufweist.

Für alle Flächen, die komplexer sind, ist die Relation Multipolygon erforderlich. Zum Beispiel wenn die Fläche Löcher hat, oder bei extrem großen Flächen.

Es ist empfehlenswert, immer die einfachste mögliche Darstellung zu wählen. Einfache Flächen können von allen Editoren dargestellt werden und sind für alle Kartierer und Anwender der Daten am leichtesten verständlich und veränderbar.

  • Für einfache Flächen empfehlen sich einfache Polygone (geschlossene Linienzüge).
  • Für Flächen mit Löchern empfiehlt sich eine Multipolygon-Relation, die nur einfache Polygone (geschlossene Linienzüge) enthält.
  • Für sehr komplexe Objekte oder Objekte, die sich über ein sehr großes Gebiet erstrecken, ist eine Multipolygon-Relation wie hier beschrieben notwendig.

Eine Relation Multipolygon kann eine beliebige Anzahl von äußeren (Umriss) und eine beliebige Anzahl von inneren Wegen (Löcher) aufweisen, und diese müssen gültige Ringe bilden. Es wird empfohlen, die äußeren und inneren Umrisse jeweils als geschlossene Linienzüge zu zeichnen!

Gültige Ringe sind gegeben, entweder durch einen geschlossenen Weg oder durch mehrere Wege , die aneinandergekettet das Gleiche ergäben, also ebenfalls einen geschlossenen Weg .

Attribute

Schlüssel Wert Erläuterung
type multipolygon Für die Mitglieder der Relation gelten flächenbildende Regeln.

Mitglieder

OSM-Element Rolle Anzahl Erläuterung
outer (eins) oder mehr Geschlossene Linienzüge, die den äußeren Ring oder die äußeren Ringe der Fläche bilden.
inner null oder mehr Geschlossene Linienzüge, die den inneren Ring oder die inneren Ringe der Fläche bilden.
outer (zwei) oder mehr Offene Linienzüge, die zu dem äußeren Ring oder den äußeren Ringen der Fläche zusammensetzbar sind.
inner null oder mehr Offene Linienzüge, die zu dem inneren Ring oder den inneren Ringen der Fläche zusammensetzbar sind.

Alle offenen Linienzüge sind nach Zusammensetzung der Fläche jeweils Teil genau eines äußeren oder inneren Ringes. Bleiben offene Linienzüge übrig, oder wurde ein Linienzug zweimal verwendet, ist die gesamte Relation kein gültiges Multipolygon.

Jedes Multipolygon muss mindestens einen äußeren Ring definieren. Dieser ist in der Mitgliederliste angegeben, entweder durch einen geschlossenen Linienzug oder durch mehrere offene Linienzüge, die zusammengesetzt einen geschlossenen Linienzug ergeben.

Verwendung

Multipolygone werden folgendermaßen verwendet:

  • Attribute, die das Multipolygon beschreiben und somit für die gesamte Fläche abzüglich der Inner-Bereiche gelten sollen (zum Beispiel "landuse=forest"), gehören zur Relation. Die äußeren Linienzüge erhalten nur Attribute, wenn sie etwas Eigenes darstellen. Zum Beispiel kann die Außengrenze eines Waldes und eines Naturschutzgebiets identisch sein, wohingegen die Lichtung oder der See im Wald nicht zum Wald gehört, wohl aber zum Naturschutzgebiet. Hier wird das Multipolygon als Wald beschrieben und die äußere Fläche als Naturschutzgebiet.
  • Wenn der innere Linienzug etwas Eigenes ist, so kann dieser mit entsprechenden Attributen versehen werden, zum Beispiel das "Loch" in einem Wald, wenn es sich um einen See handelt.
  • Ansonsten erhalten die inneren Linienzüge keine Attribute.
  • Die Richtung der Linienzüge spielt keine Rolle.
  • Die Reihenfolge der Mitglieder der Relation spielt keine Rolle. Sie kann jedoch für den Leser hilfreich sein.
  • Die Relation Multipolygon ermöglicht generell die Erstellung von Multipolygonen die dem "OGC Simple Feature Standard" entsprechen. Nach dieser Norm ungültige Multipolygone sind auch ungültige Multipolygon-Relationen, zum Beispiel Polygone mit sich überschneidenden Ringen. #Sich berührende innere Ringe sind jedoch gültige Multipolygon-Relationen.

Beispiele

Ein Außen- und ein Innenring - jeweils geschlossene Linienzüge

<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="inner" />
</relation>

Hinweis: Der innere Ring darf den äußeren höchstens in einem Knoten (Punkt) berühren!

Zur Historie: Der Vorgänger der Relation Multipolygon gestattete ursprünglich nur einen Außenring und mehrere Innenringe, wobei diese jeweils aus geschlossenen Linienzügen bestehen mussten. Beide Einschränkungen wurden im später überarbeiteten, derzeit verwendeten Typ aufgehoben.

Ein Außen- und zwei Innenringe

<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="inner" />
  <member type="way" id="3" role="inner" />
</relation>

Mehrere Linienzüge bilden einen Ring

Beim komplexen Multipolygon kann jeder Außen- oder Innenring aus mehr als einem Linienzug bestehen. Dies ist für Multipolygone sinnvoll, die extrem große Flächen umschließen (z.B. den Bodensee oder Gardasee), oder wenn Linienzüge verschiedenartiger, benachbarter Flächen nicht überlappen sollen.
<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="outer" />
  <member type="way" id="3" role="inner" />
</relation>
Die Verwendung von Multipolygonen ermöglicht es, die gemeinsame Flächengrenze benachbarter Flächen genau einmal darzustellen.
<relation id="42">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="outer" />
  <member type="way" id="3" role="inner" />
</relation>
<relation id="35">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="4" role="outer" />
</relation>

Zwei getrennte äußere Ringe

Bei der komplexen Relation Multipolygon ist eine beliebige Anzahl äußerer Ringe gestattet.
<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="outer" />
</relation>

Hinweis: Die äußeren Flächen (Linienzüge) dürfen sich höchstens in einem Knoten (Punkt) berühren!

Getrennte äußere Ringe und innerer Ring aus mehreren Linienzügen

Auch innere Ringe können aus mehreren Linienzügen bestehen.
<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="inner" />
  <member type="way" id="3" role="inner" />
  <member type="way" id="4" role="outer" />
  <member type="way" id="5" role="inner" />
</relation>

Komplexe Kombination aller Möglichkeiten

Dieses Beispiel zeigt die komplexe Kombination aller Möglichkeiten: Drei äußere Ringe, einer mit einem und einer mit drei inneren Ringen, wobei viele Ringe aus mehreren Linienzügen bestehen.
<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="outer" />
  <member type="way" id="3" role="outer" />
  <member type="way" id="4" role="outer" />
  <member type="way" id="5" role="inner" />
  <member type="way" id="6" role="inner" />
  <member type="way" id="7" role="inner" />
  <member type="way" id="8" role="inner" />
  <member type="way" id="9" role="inner" />
  <member type="way" id="10" role="inner" />
  <member type="way" id="11" role="inner" />
  <member type="way" id="12" role="outer" />
  <member type="way" id="13" role="outer" />
  <member type="way" id="14" role="outer" />
  <member type="way" id="15" role="outer" />
  <member type="way" id="16" role="inner" />
  <member type="way" id="17" role="inner" />
  <member type="way" id="18" role="inner" />
  <member type="way" id="19" role="inner" />
  <member type="way" id="20" role="outer" />
</relation>

Hinweis: Bitte solche komplexen Multipolygone nur sehr überlegt einsetzten. Eins der OSM-Mottos lautet: KUSS - kurz und sehr simpel (KISS - keep it simple stupid).

Insel in einem Loch

Dadurch, dass mehrere äußere Ringe gestattet sind, können auf einfache Weise "Inseln" in einem Loch dargestellt werden.
<relation id="1">
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="inner" />
  <member type="way" id="3" role="outer" />
</relation>

Eine solche Konstellation erforderte früher verschiedene Multipolygon-Relationen, eine mit "way 1" als äußerem und "way 2" als innerem Ring und eine mit "way 2" als äußerem und "way 3" als innerem Ring. Solche Kaskaden sind nach wie vor zu empfehlen wenn die "Insel" in der Mitte etwas anderes als die äußere Fläche ist. Sind beide dasselbe, so genügt es, ein Loch in einem Loch zu machen.

Sich berührende innere Ringe

Einige Kartografen zeichnen "Multipolygone" mit sich berührenden inneren oder äußeren Ringen. Laut Abschnitt #Verwendung sind dies gültige Multipolygon-Relationen, auch wenn sie nicht der OGC-Norm für Multipolygone entsprechen.

OSM folgt dieser Norm nicht, JOSM informiert Multipolygon-Ringe teilen sich Punkte.

<!-- zu Bild 8 mit innliegenden Objekte -->
<relation id="1">
  <!-- Nicht OGC-konform, aber valide OSM-Multipolygon-Relation -->
  <tag k="type" v="multipolygon" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="inner" />
  <member type="way" id="3" role="inner" />
</relation>
<way id="2">
  <tag k="landuse" v="farmland" />
  <nd ref="5"/>
  <nd ref="2"/>
  <nd ref="3"/>
  <nd ref="6"/>
  <nd ref="5"/>
</way>
<way id="3">
  <tag k="natural" v="water" />
  <tag k="water" v="lake" />
  <nd ref="1"/>
  <nd ref="2"/>
  <nd ref="3"/>
  <nd ref="4"/>
  <nd ref="1"/>
</way>

Hinweis: Da Multipolygon-Daten vom OSM-Server derzeit nicht darauf geprüft werden, ob diese auch gültige Multipolygon-Züge definieren (siehe #Verwendung), können ungültige Daten eingetragen werden. Derzeit prüft er nur, ob Multipolygon-Relationen gültige Relationen sind.

<!-- zu Bild 8a mit innliegenden Objekten -->
<relation id="9">
  <tag k="type" v="multipolygon" />
  <tag k="landuse" v="forest" />
  <member type="way" id="1" role="outer" />
  <member type="way" id="2" role="inner" />
  <member type="way" id="3" role="inner" />
</relation>
<relation id="78">
  <tag k="type" v="multipolygon" />
  <tag k="landuse" v="farmland" />
  <member type="way" id="2" role="outer" />
  <member type="way" id="4" role="outer" />
</relation>
<relation id="33">
  <tag k="type" v="multipolygon" />
  <tag k="natural" v="water" />
  <tag k="water" v="lake" />
  <member type="way" id="3" role="outer" />
  <member type="way" id="4" role="outer" />
</relation>

Loch in Loch (in Loch ...)

Es kann Löcher in den Löchern eines Multipolygons geben. Zum Beispiel ein Wald mit einer Lichtung und einer Baumgruppe auf der Lichtung.
Beispiel noch nicht vorhanden.

Gemäß "OGC Simple Feature Standard" wird dies durch abwechselnde äußere und innere Ringe dargestellt. Im Beispiel Wald sind der Waldrand und die Baumgruppe äußere Ringe und die Lichtung innerer Ring. Das kann beliebig so weiter gehen, sollte aber zum Wohle anderer Kartografen begrenzt bleiben. Eventuell unterstützen dies auch nicht alle Editoren oder Renderer.

Bild noch nicht vorhanden.

Weitere Beispiele

Weitere Beispiele finden sich auf Relation:multipolygon/Examples, mit dem Hinweis, Multipolygone nur zu verwenden, wenn es keine andere Möglichkeit gibt. Die Segmentierung von Straßen (highway=*) zur Ringbildung soll nach Möglichkeit vermieden werden, denn dies kompliziert für einige Mapper Änderungen der Straßenwerte. Eine Alternative ist, überlappende Wege auf den für die Flächenbildung relevanten Straßenabschnitten/-segmenten zu zeichnen, die sonst durch Teilungsoperationen herausgelöst würden (Tastaturkürzel: Taste-F (follow/verfolgen) nutzen). Gleiches gilt für ähnlich linienartig gemappte Objekte, wenn deren Segmentierung vermieden werden soll. Allerdings komplizieren auch überlappende Wegobjekte für einige Mapper Änderungen an OSM-Daten.

Attribute (Tags)

  • Es wird empfohlen, alle die Fläche beschreibenden Attribute der Relation und nicht den Linienzügen zuzuordnen. Dies wird in vielen Fällen zu Linienzügen ohne jegliche Attribute führen.
  • Um kompatibel zu bleiben gilt (nur für Software-Entwickler):
    • Der Zeichenstil richtet sich nach der Relation.
    • Wenn die Relation keine Attribute hat, wird der Zeichenstil der äußeren Linienzüge verwendet.
    • Wenn die Zeichenstile der äußeren Linienzüge nicht zusammenpassen oder kein Stil gefunden wird, so ist dies ein Fehler.
    • Attribute an inneren Linienzügen ergeben den Zeichenstil für die inneren Ringe. Sind Zeichenstil für innere und äußere Ringe identisch (alte Methode) sollte der Zeichenstil für die inneren Ringe als nicht angegeben betrachtet werden.

Attribute im Detail

Dieser Abschnitt ist für Software-Entwickler. Kartierer sollten die Attribute immer an die Relation und nicht an die äußeren Ringe schreiben!

Für die verschiedenen Fälle und deren Probleme werden folgende Lösungen vorgeschlagen:

  • Es gibt mehr als einen äußeren Linienzug:
    • Die Relation ist mit Attributen versehen:
    Es gelten die Attribute der Relation. Attribute der Linienzüge werden ignoriert.
    • Die Relation hat keine Attribute, aber ein oder mehrere äußere Linienzüge haben identische, gültige Attribute:
    Die Attribute gelten für den kompletten äußeren Linienzug.
    • Die Relation hat keine Attribute, und äußere Linienzüge haben unterschiedliche Attribute:
    Dies kann beliebig interpretiert werden.
  • Es gibt mehr als einen inneren Linienzug:
    • Ein geschlossener Linienzug, der aus mehreren Segmenten bestehen kann, hat keine Attribute aber ein anderer hat Attribute:
    Der Linienzug ohne Attribute ist ein Loch. Die Attribute des anderen Linienzugs gelten für diesen.
    • Verschiedene geschlossene Linienzüge mit verschiedenen Attributen:
    Für jedes Loch gelten seine eigenen Attribute.
    • Ein geschlossener Linienzug, der aus mehreren Segmenten besteht, wobei die Segmente verschiedene Attribute haben:
    Für Segmente ohne Attribute gelten die Attribute der anderen Segmente. Falls die Segmente verschiedene Attribute haben, so kann dies beliebig interpretiert werden.

Rendern

  • JOSM ab Version 1203 kann komplexe Multipolygone verarbeiten.
  • de:Osmarender (T@H) unterstützt komplexe Multipolygone. (nicht mehr gepflegt)
  • Die für OpenStreetMap verwendete Mapnik-Konfiguration unterstützt komplexe Multipolygone weitgehend.
  • mkgmap ab Version 1497 unterstützt komplexe Multipolygone voll.
  • Es gibt einen empfohlenen Algorithmus zur Verarbeitung von Multipolygonen.

Wie erstellen

JOSM

Werkzeuge

Mögliche technische Erfassungsunstimmigkeit

Siehe auch

This article is issued from Openstreetmap. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.