Renderfehler durch TMC-Tags an Multipolygonen (z.B. am Überlinger See)

Wie ich vor einigen Tagen feststellen musste, wurden die Inseln/Landflächen im Steinhuder Meer (bei Hannover) und im Überlinger See (Teil des Obersees vom Bodensee) von Mapnik nicht mehr gerendert.

Problem:
Jene Gewässer mit Inseln sind als Multipolygone umgesetzt. Das Tagging der Wasserfläche (natural=water) erfolgt bei beiden am Außenpolygon und nicht in der Multipolygon-Relation.

Vor einiger Zeit wurden beide Seen mit TMC-Tags (wohl für Traffic Message Channel/Staumeldungen) versehen, jene allerdings an der Multipolygon-Relation und nicht am Außenpolygon. Da die Multipolygon-Relation nun eigene Tags hatte, übernahm Mapnik anscheinend nicht mehr das Flächen-Tag des Außenpolygons (natural=water) in die Relation. Infolgedessen wurden die Innenpolygone nicht aus dem Außenpolygon herausgeschnitten. Die Fläche des Außenpolygons (der Wasserfläche) überlagerte die Inseln. Jene waren nicht mehr sichtbar.

Obiges Verhalten ist klar reproduzierbar. Das habe ich beim Steinhuder Meer gezielt ausprobiert. Eine Behebung war logischerweise einfach. Ich habe die TMC-Tags von den Multipolygon-Relationen entfernt und stattdessen an den Außenpolygonen ergänzt. Inzwischen ist das Rendering bei beiden Seen also wieder ok. Wahrscheinlich wäre der umgekehrte Weg, stattdessen die Flächen-Tags von den Außenpolygonen in die Relationen zu verlagern, genauso zielführend.

Hinweis:
Falls sich jemand also wundert, dass das Rendern eines Multipolygons in Mapnik nicht mehr klappt: ggf. nach TMC-Tags schauen und jene verschieben, wie oben genannt. Denn das gilt sicher nicht nur für Seen.

Frage nun: Bug oder Feature?
Nun stellt sich für mich allerdings die Frage: ist dies als Mapnik-Bug anzusehen oder als -Feature und damit Mapper-Fehler durch unbedarftes Hinzufügen der TMC-Tags?

  • Einerseits kann man argumentieren: die Multipolygon-Relation hatte TMC-Tags, war also ein “TMC-Multipolygon”. Deshalb ist es logisch und korrekt, dass Mapnik nicht weitere andersartige Tags wie Flächendefinitionen vom Außenpolygon in die Relation übernimmt. Dann sollte man derartiges Verhalten nicht verändern. Stattdessen sollten die “TMC-Mapper” Ihre sonstigen Edits überprüfen und TMC-Tags in Zukunft genau dort setzen, wo auch die Flächen-Tags stehen.

  • Andererseits kann man dies natürlich auch für einen Mapnik-Fehler halten. Dann müsste man mal einen Bug-Report bei OSM-Trac setzen. Aber wie würde man dann eigentlich gewünschte TMC-Multipolygone umsetzten?

Es ist eher ein grundlegender Konzeptfehler. Der Umgang mit Tags an Relationen ist nirgendwo klar definiert, von daher kann man nicht sagen, daß irgendwas “falsch” ist. Man hat nur nicht ausreichend darüber nachgedacht, wie das überhaupt funktionieren soll. Es ist ja auch nicht mit einem Mapnik-Ticket getan: Ich würde mal wetten, daß Mapnik, Osmarender, mkgmap, Kosmos und jeder andere Renderer unterschiedlich mit der Situation umgeht.

Der Umgang mit Vererbung ist eine knifflige Sache (Vergleiche http://wiki.openstreetmap.org/wiki/Talk:Relations/Proposed/Collected_Ways “Problems to solve…”), aber das Bewußtsein dafür fehlt bei OSM noch weitgehend. Ich habe bei einer einfachen stichprobenartigen Auswertung in Deutschland schon über 100 Multipolygon Relationen gefunden, bei denen die Tags an ways und Relation sich widersprochen haben.

Du hast jetzt jetzt den ersten etwas komplizierteren Fall gefunden, wo das Konzept “Ist doch alles ganz einfach” nicht funktioniert. :slight_smile:

Siehe:

http://wiki.openstreetmap.org/wiki/Multipolygon

Dies gilt für einfache MPs.

Bei Advanced Multipolygons (Outer Way besteht aus mehreren Segmenten) wird die Sache noch etwas komplizierter. :wink:

Chris