See im Wald (multipolygon vs. layer)

Ich hätte mal eine eigentlich ganz einfache Frage.
Es sei z.B. ein Wald und in dem Wald ist ein See. Dieser See soll natürlich auf allen gerenderten Karten korrekt erkennbar sein.
Wie wird das korrekt getaggt? Am liebsten würde ich ja den Wald mit “landuse=forest” und “layer=-1” versehen und der See wäre einfach nur ein See auf “layer=0”.
Darf man das machen, kann man das machen oder muss man “multipolygon” mit “inner” und “outer” nutzen? Wenn ja, vielleicht könnte mir jemand einen OpenStreetMap-Link zu einem korrekten Beispiel posten. Danke.

moin,

bloß nicht so kompliziert; in der Waldfläche einfach natural=water

Gruß

Jörk

Genau. Der See gehört ja im prinzip zum Wald.

Anders herum (Insel mit Wald liegt im See), ist ein Multipolygon schon angebracht,
weil die Insel definitiv nicht aus Wasser besteht. :stuck_out_tongue:

chris

Grund meiner Frage ist folgende Diskussion

http://www.naviboard.de/vb/showthread.php?t=37812

und folgender Kartenausschnitt:

http://www.openstreetmap.org/?lat=51.1395&lon=13.62279&zoom=17&layers=B000FTF

Jedenfalls gilt:

  • Layer ist sicher falsch, wenn der See nicht über dem Wald schwebt.
  • Multipolygon ist auf jeden Fall eine richtige Möglichkeit.

Ob man auch einfach den See in den Wald setzen kann, ist fraglich - zumindest braucht man sich nicht beschweren, wenn ein Renderer dort dann Wald malt, denn man ist ja ausdrücklich der “der See gehört auch zum Wald”-Interpretation gefolgt.

moin,
das scheint ein Cycle map -Problem zu sein :slight_smile:
und wie heißt das Mantra? Wir mappen nicht für die Renderer :sunglasses:

Gruß

Jörk

Daraus:

Heisst das, dass bei “professionellen Vektorkarten” die Polygone
immer bei Löchern zerschnitten werden? Oder arbeiten die
auch mit Multipolygonen?

Chris

Die korrekte Vorgehensweise (empfohlen und funktioniert) ist die Verwendung von Multipolygonen.

Layer regelt die Verhältnisse bei Kreuzungen von Ways und paßt bei Polygonen überhaupt nicht.

Einfach draufmalen ist eine veraltete Vorgehensweise, die bestimmte Konventionen im Renderer erwartet. Es gibt aber keine solchen Konventionen. Kommt Wasser auf Wald damit Dein Usecase funktioniert? Oder kommt Wald auf Wasser, damit ich bewaldete Inseln einzeichnen kann?

Das Vorgehen ist veraltet, nicht empfehlenswert und führt zu völlig zufälligen Ergebnissen auf den Karten.

Du woltest ein Beispiel :

http://www.openstreetmap.org/?lat=51.849236&lon=9.034663&zoom=18&layers=B000FTF

@nightdive
Wofür ist denn layer=-2 bei dem Multipolygon des forrest gut?
Georg

Das Beispiel halte ich für nicht optimal. Es zeigt zwar die korrekte Verwendung eines Multipolygons, aber auch, wie layer nicht verwendet werden sollten:

  • Der Heubach hat im Beispiel layer=-1. Das ist falsch. Selbst wenn er in einem Einschnitt verläuft, bildet er immer noch die Oberfläche an dieser Stelle und bekommt deshalb layer=0 (bzw. keins). Brücken über den Bach bekommen layer=1. Dies gilt selbst dann, wenn Brücken eben verlaufen und der Bach “tiefergelegt” ist. Er ist an dieser Stelle die Oberfläche. Ein Einschnitt lässt sich stattdessen durch cutting=yes angeben.

Die Oberfläche an der jeweiligen Stelle ist die Referenz und wird als layer=0 angesetzt. Wenn man dies nicht so macht und anfängt, irgendwelche Oberflächen in der Nähe als layer=0 zu wählen, ergäben sich ansonsten wirre Fragen wie z.B.: Was ist in der Nähe und was ist die Referenz? Müsste eine Klippe an der Küste nicht layer=1 bekommen und damit das ganze Land dahinter auch? Oder umgekehrt, bekäme die Klippe layer=0 und das Meer dann layer=-1? Bekäme eine Kuhle layer=-1, die tiefere Kuhle ein paar Meter weiter layer=-2? Und so fort.

  • Der Wald rund um die Mühle im Beispiel bildet ebenso die normale Oberfläche, bekommt also layer=0 (bzw. keins). Er bekommt nicht layer=-2, um irgendwelche Zeichenprobleme oder Schwierigkeiten aufgrund anderer fälschlicherweise tiefergelegter Objekte zu vermeiden.

Seit es Multipolygone gibt, dienen Layer nicht mehr als Hilfsmittel zum Ausschneiden von Objekten. Ein See oder eine Lichtung liegen im Wald und nicht oberhalb des Waldes auf diesem drauf.

Ansonsten, die OpenCycleMap wertet Multipolygone wohl noch nach einem älteren Algorithmus aus, wo es z.B. auf die Drehrichtung der Einzelpolygone ankam. Insbesondere mussten außerdem noch die Innenpolygone genau gegensätzlich zur aktuellen Methode genauso wie die Außenpolygone getaggt werden. Deshalb werden Multipolygone, je nach Auswertungsreihenfolge und Drehrichtung, in der CycleMap mal richtig und mal falsch gerendert. Seen müssen aber immer eine bestimmte Drehrichtung haben, die der Regel der CycleMap für Innenpolygone genau widerspricht. Daher kommt es bei diesen als Innenpolygone zwangsweise zu einer fehlerhaften Darstellung in der CycleMap. Das Außenpolygon wird unter Wasser gesetzt wird. Das ließe sich also nur durch gezielt falsche Multipolygonerstellung oder durch Umgehungstricks vermeiden. Aber dass man nicht für einen einzelne Renderer gezielt falsch mappt, steht ja außer Frage!

Beispiele für Multipolygone mit Seen, gibt aber auch genug andere:
http://www.openstreetmap.org/?lat=51.79958&lon=10.38927&zoom=15&layers=B000FTF
http://www.openstreetmap.org/?lat=51.78481&lon=10.29445&zoom=15&layers=B000FTFT

Zu den Layern: Es ist völlig egal ob ich einer Brücke +1 oder dem Fluss -1 gebe, es interessiert einfach nicht denn nur die Reihenfolge muss passen. In diesem Fall hat der Bach halt ein -1 und dier Brücke hat keinen Layer Tag, ich kann auch Bach=-1 und Brücke=+1 geben, auch ok nur umständlich und “Datenverschwendung”.

Mit Layer lege ich nur eine Reihenfolge fest wenn 2 Elemente wie Straßen und Flüsse jedoch keine Flächen sich übereinander sich kreuzen.
Wenn sich nichts kreuzt dann gebe ich auch nichts an.
Ob eine Klippe physikalisch höher liegt als das Meer oder auch nicht ist nicht egal da beide Elemente sich nicht kreuzen.

Ein See liegt für mich nicht in einer Waldfläche außer es stehen Bäume im See (so eine Art Mangroven oder Sumpf).
Wo Bäume da Waldfläche, wo keine Bäume = keine waldfläche

nighdive:

Sorry, aber damit handelst du ganz klar gegen die Vorgaben der “Features”.

Warum sollten diese bewährten Regeln jetzt mit einem Mal nicht mehr beachten werden? Es gibt keinen Grund plötzlich diese Regelung zu missachten, oder ist irgendwo eine Diskussion und ein neues Vorgehen am Forum vorbei beschlossen worden?
Georg

Weil die Mapfeatures auch nicht in Stein gemeisselt sind? Weil die Mapfeatures von einem einzelnen Benutzer beliebig geaendert werden, ohne irgendwelche Diskussionen?

Als ich das letzte Mal zu diesem Thema in die Mapfeatures geschaut hatte, stand der letzte, zitierte Satz in der Klammer z.B. noch nicht drin.

Inzwischen sehe ich das layer-Thema eher entspannt:

  1. hoffe ich, dass wir irgendwann mal auf 3D-Koordinaten umstellen. Dann hat sich die Sache sowieso erledigt.
  2. bin ich hauptsaechlich an der Kartenerzeugung aus den OSM-Daten interessiert. Und Karten sind keine Luftbilder, d.h. auf einer Karte besteht kein fester Zusammenhang zwischen der Zeichenreihenfolge und der Anordnung in der Natur. Insofern ist das layer Tag fuer diesen Zweck eigentlich auch egal.

Gruss
Torsten

und wo wäre das jetzt in diesem Fall tragisch ?

Gerade zu diesem Bachlauf ist folgendes zu beachten das es mein Erstlingswerk in OSM ist,alle späteren Fälle habe ich soweit ich mich erinnere auch mit 1 gemappt, vor allem weil man wegen der Bücke eh den Weg splitten muss.

ich finde den jetzigen Zustand absolut nicht tragisch denn die Renderer haben damit auch keine Probleme.
Generell gibt s vorgaben and die man sich halten kann aber nicht muss, keine Gesetze die jemand beschließen muss.

edit
Ich habe es jetzt doch umgetaggt bevor sich die Diskussion weiter um dieses Beispiel dreht und layer-1 für einen Bach mag sogar bei einem stückweise natürlich unterirdisch verlaufenden Bach sinnvoll sein. Das Beispiel nachdem der Threadersteller gefragt hatte war außerdem Wald+Teich/See und das passte

Eigentlich könnte ich das Layer gleich weglassen weil Brücke bedeutet immer oberhalb während Tunnel unterhalb aussagt.
Nur bei 2 Brücken übereinander braucht man eigentlich den Layer Tag.

endlich mal jemand der meine Meinung teilt :wink:

Ich hoffe doch, dass wir alle das sowieso entspannt sehen. :slight_smile:

Mir war das ganze auch nur nebenbei aufgefallen. Ich hatte zu Anfang übrigens auch eingeschnittene Bäche mit layer=-1 bezeichnet, dann mal nachgeschaut. Da liefen gerade einige Diskussionen zu dem Thema, worauf wohl auch das WIKI ergänzt wurde. Wirklich tragisch ist es, wenn man das anders macht, nicht. :slight_smile:

Es soll das potentielle Problem vermieden werden, dass ein Bach/Objekt mit layer=-1 unterhalb von einer Landfläche mit layer=0 liegt. Wenn z.B. ein Renderer nur das oberste Layer darstellen würde, würde der Bach dann auf einmal fehlen. Zur Zeit werden die Layerverhältnisse zwischen Linien und Flächen von den wichtigsten Renderern wohl gerade aufgrund derartiger Problem nicht berücksichtigt (wenn ich mich nicht irre, ich bin keiner der Programmierer). Falls sich das aber mal ändert… Außerdem sollte es z.B. für jemanden, der ein unterirdisches Objekt im Tunnel verlegt, einfacher werden. Er muss nicht mehr alle anderen dazwischenliegenden Objekte erst auf ihr Layer überprüfen, um dann ein noch tieferes zu vergeben.

Ansonsten, wir OSMler sind ja manchmal schon gemein zueinander. :smiley: Nightdive nennt ein Beispiel und wir fallen erst einmal über ihn her, anstelle uns zu freuen. Und ich habe auch noch angefangen, sorry. :roll_eyes:

Zusammengefasst noch mal zur eigentlichen Frage von nilix:

@nilix:
Nimm keine Layer für “Deinen” See, sondern ein Multipolygon. Normale Multipolygone sind auch gar nicht kompliziert, wenn man das ein paar mal gemacht hat. Zumindest in JOSM geht das doch recht zügig.

Und, falls Du in dem Wald neben dem See noch eine Wiese oder ähnliches hast, reicht es natürlich aus, für alle zusammen nur ein Multipolygon mit einem Außenrand (dem Wald) und mehreren Innenpolygonen (dem See, der Liegewiese am See, der Lichtung anderswo im gleichen Wald, …) zu erstellen.

Falls Dir Multipolygone zu kompliziert sind, würde ich trotzdem keine Layer nutzen, dann lieber alles weglassen, und den See einfach nur einzeichnen. Dann gehörst Du aber nur zu den “niederen Schichten” :wink: unter den Mappern. Mit Deinem ersten eigenen korrekten Multipolygon steigst Du automatisch zur Crème de la Crème auf. :smiley: :smiley: Den meisten sind die nämlich, warum auch immer, zu kompliziert.

Nach meinem Verständnis dient layer nur dazu, die Topologie sich überschneidender Ways am Schnittpunkt klarzustellen. Für Flächen hat es keine Bedeutung, auch wenn da jemand im Wiki was verschlimmbessert hat. Wäre auch keine gute Idee, da es zu großflächig verzahnten Abhängigkeiten führt.

Als Rendererprogrammierer kann ich Dir auch sagen, daß zumindest Mapnik-Renderer eine eigene Struktur von echten Zeichenebenen verwalten, die nach logischen Gesichtspunkten anhand der Haupttags zusammengestellt werden (z.B. alle Wasserwege in eine Ebene oder alle Landuse-Flächen, alle Autobahnen, alle Tunnel usw. ) und das layer-Attribut keinen Einfluß auf diese Aufteilung hat, sondern bestenfalls innerhalb gleichartiger Objekte in einer Ebene.

Meiner Auffassung nach nicht nur überschneidende Ways, sondern auch aufeinander liegende Areas und einen Way/Node einschließende Areas. Oder wie soll sonst eine “liegt über”-Beziehung zwischen diesen ausgedrückt werden?