De:Relation:multipolygon

From OpenStreetMap Wiki
Jump to: navigation, search
Verfügbare Sprachen
česky Deutsch English español français italiano 日本語 polski русский українська
Public-images-osm logo.svg multipolygon
Multipolygon Illustration 6.svg
Beschreibung
Die Relation Multipolygon wird zur Darstellung von komplexen Flächen verwendet. Das sind in der Regel extrem große Flächen und/oder Flächen mit 'Löchern'.
Gruppe: Properties
Mitglieder
  • Area ( Way ) - outer
  • Area ( Way ) - inner
Status: Akzeptiert

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!

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
Area outer eins oder mehr Geschlossene Linienzüge, die den äußeren Ring oder die äußeren Ringe der Fläche bilden.
Area inner null oder mehr Geschlossene Linienzüge, die den inneren Ring oder die inneren Ringe der Fläche bilden.
( Way ) outer einer oder mehr (für extrem große Flächen) Die Linienzüge bilden zusammengesetzt den äußeren Ring der Fläche.
( Way ) inner null oder mehr (für extrem große Flächen) Die Linienzüge bilden zusammengesetzt den inneren Ring der Fläche.

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

Beim alten, vielfach genutzten Typ der Relation Multipolygon war nur ein Außenring und mehrere Innenringe gestattet und diese durften jeweils nur aus geschlossenen Linienzügen bestehen. Dieser Polygontyp war kein richtiges mehrfaches Polygon sondern eher ein mehrfacher Linienzug. Er wird weiterhin unterstützt. Die Regeln sind jedoch gelockert, so dass dies lediglich ein Spezialfall der mehr allgemeinen Relation Multipolygon ist.
<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!

Bild 1: Ein Außen- und ein Innenring

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>
Bild 2: Ein Außen- und zwei Innenringe

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), welche nicht von einer einzigen Linie umschlossen werden können.
<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>
Bild 3: Mehrere Linienzüge bilden einen Ring

Zwei getrennte äußere Ringe

Bei der komplexen Relation Multipolygon ist eine beliebige Anzahl äußerer Ringe gestattet. Sie ist somit ein echtes Multipolygon.
<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!

Bild 4: Zwei getrennte äußere Ringe

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>
Bild 5: Getrennte äußere Ringe, innere Ringe aus einem Linienzug oder aus mehreren Linienzügen

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).

Bild 6: Komplexe Kombination aller Möglichkeiten

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.

Bild 7: Insel in einem Loch

Sich berührende innere Ringe

Einige Kartografen benutzen die aktuelle Relation "Multipolygon" für sich berührende innere oder äußere Ringe.
<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>

Das Beispiel zeigt einen Wald mit einer Lichtung, die je zur Hälfte See und Farmland ist. Der Kartograf zeichnet einfach nur die Ränder der drei Objekte Wald, See und Farmland.

In "OGC Simple Feature Standard" ist diese einfache Möglichkeit nicht vorgesehen, dort sind sich berührende innere Ringe nicht erlaubt. Stattdessen wäre zunächst in den Wald ein Loch zu zeichnen und in dieses dann die einzelnen Polygone für See und Farmland.

Bild 8: Sich berührende innere Ringe

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.

Beispiele

  • Weitere Beispiele finden sich auf DE:Relation:multipolygon/Examples
  • Die Beispiele auf dieser Seite DE:Multipolygon_Examples sind nur mit äußerster Vorsicht zu genießen! Multipolygone werden nur verwendet, wenn es keine andere Möglichkeit gibt. Straßen (highway=*) werden nicht unterteilt, um aus den Segmenten einen äußeren Ring zu bilden (Das macht das Ändern der Straßen unnötig kompliziert). Es ist besser, eine neue Fläche zu zeichnen, die dieselben Knoten (Punkte) verwendet (Tastaturkürzel: Taste-F (follow/verfolgen)). Das gleiche gilt für barrier=fence (Zaun): Besser einen zusätzlichen eigenen Linienzug zeichnen (ggf. die selben Knoten verwenden). Innere Ringe dürfen den äußeren in maximal nur einem Knoten berühren. Dieses Beispiel zeigt zwar wie man kartieren kann, jedoch ist es keine gute Praxis. Bedenke: Besonders Einsteigern fällt das Editieren nach diesem Schema schwerer.

Attribute

  • 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.
  • Osmarender (T@H) unterstützt komplexe Multipolygone.
  • 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.

Werkzeuge