Markiezaatsmeer (multipolygon)

Er is een probleempje met de rendering van het Markiezaatsmeer bij Bergen op Zoom.
http://www.openstreetmap.org/?lat=51.4643&lon=4.2941&zoom=13&layers=B000FTF

Het meer bestaat uit een grote verzameling aan losse ways die bij elkaar gebonden worden door diverse multipolygon relaties.
Het zou een stuk simpeler gemaakt kunnen worden door het hele meer als één polygon samen te voegen, zie onderstaande screenshot (paarse lijn):

Nu wil ik het zuidelijke gedeelte, dat natural=wetland is, renderen. De gele lijn is de zuidgrens, maar de noordgrens zou moeten samenvallen met de zuidelijke rand van het meer (daar waar de gele en paarse lijnen elkaar gekoppeld zijn). Hoe is dit het beste op te lossen? De zuidelijke rand van het meer in delen afsplitsen van het meer (situatie zoals die nu is in osm) is geen goede oplossing, want dat geeft nu juist problemen met de rendering.

Kan je niet eerst het meer omwerken tot een eenvoudige polygoon, en dan je wetland de punten van de meeroever laten delen?

Als ik het in josm bekijk, zijn er dingen die niet helemaal kloppen, dus ik kan me voorstellen dat de renderer er een probleem mee heeft.

http://www.openstreetmap.org/browse/way/46336365 is zowel outer van het meer als van het wetland.

http://www.openstreetmap.org/browse/way/46336434 en http://www.openstreetmap.org/browse/way/57969083 zijn outer van het meer, maar http://www.openstreetmap.org/browse/way/57969076 niet.

http://www.openstreetmap.org/browse/way/57969084 zou geen outer moeten zijn.

Zal ik eerst nog een poging doen het te fixen?

@ datalogg: wat is de beste manier om dat wetland de punten van de meeroever te laten delen?
@ Wimmel, graag!

Ik heb een poging gedaan.
Hij lijkt nu goed te renderen in mapnik, maar nog niet op alle zoomlevels. Ik denk dat we nog even moeten wachten of het nu echt goed gaat.

Ik heb het gebied maar eens bekeken in JOSM. Conclusie: wat heeft daar iemand ontzettend lopen klooien met multipolygons zeg. Multipolygons werken alleen maar werken met dichte ways (areas), maar bijna alle members daar zijn open ways. Als je open ways gebruikt in een multipolygon, sluit de renderer die door een lijn te trekken tussen de twee open eindpunten. De renderer gaat niet, zoals hier blijkbaar werd gedacht, de wegen die samen de “outer” vormen, aan elkaar plakken tot een dichte vorm en dan als één geheel beschouwen. Je krijgt allemaal overlappende flarden multipolygon, en geen mooi gevuld meertje.

Om het op te lossen: verbind alle contouren van het meer met elkaar en gebruik de resulterende gesloten vorm als de “outer”. Verbind dan alle eilandjes etc. aan elkaar tot dichte vormen, en gebruik die als de “inners”. Dan moet het meertje kloppen. Voor de moerasrand zal je een nieuwe gesloten vorm moeten tekenen: je kan de meerrand niet hergebruiken. Ik zou in JOSM een nieuwe way tekenen die punten deelt met de meerrand. In JOSM zijn de bestaande punten van de meerrand “magnetisch”, dus het is heel makkelijk om een nieuwe way te tekenen die punten deelt met een bestaande.

Thanx voor de input. Ik geloof niet dat iedereen (Datalogg) het helemaal eens is met mijn mapping technieken maar het lijkt nu wel te werken inderdaad :slight_smile:

Maar evengoed denk ik dat de methode van Datalogg wel een betere is voor de toekomst, iig een stuk overzichtelijker, zeker voor de wat grotere objecten.

Op http://wiki.openstreetmap.org/wiki/Multipolygon staat echter iets anders:

Zie http://wiki.openstreetmap.org/w/images/1/10/Multipolygon_Illustration_3.svg

Multipolygons werken prima met losse ways die samen een gesloten gebied aanduiden. Wie heeft je vertelt dat dat niet zo is?

Dan moeten we er wel vanuit gaan dat die losse ways inderdaad op elkaar aansluiten en samen een gesloten ring vormen. Toen ik het water daar importeerde (ik neem aan dat ik het was, want ik zie 3dShapes-tags), was dat inderdaad zo, maar dat zegt niets over wat er daarna gebeurd is. Overigens hadden die losse armen onderin, zover ik me herinner, aparte namen. Daardoor waren het ook losse wateren. Als iemand die gesloten losse wateren vervolgens in een andere multipolygon erbij hangt als outer, dan kun je rare dingen krijgen.

Wat een onzin om een nieuwe way te tekenen langs alle nodes van de moerasrand. Dat is nu de essentie van multipolygons. Je hebt 1 way, en die deel je tussen 2 multipolygons, in beide met role=outer. Is het nog zo makkelijk wanneer je een nieuwe way moet tekenen langs honderden nodes, omdat de moerasrand gedetailleerd is?

Geen probleem natuurlijk, als een way outer is in 2 relaties.

Maar begrijp ik het goed dat er na de import nog aan gewerkt is en dat het toen blijkbaar is misgegaan?

Wimmel, het ziet er goed uit, bedankt!

Wat betreft een way die outer is in 2 relaties (dus hier van het moeras het het meer), is het wenselijk die een tag te geven als natural=water of juist niet? Bijvoorbeeld deze: http://www.openstreetmap.org/browse/way/57969085

Als het slechts 1 van de meerdere ways is die samen de buitenste ring vormen, dan zou ik die niet die tag geven, maar alleen de multipolygonrelatie taggen als natural=water.

De tags op de relatie gaan meestal, of wellicht zelfs altijd, toch voor op de tags op de outer member ways.

Ok, bedankt.

Btw: het meer wordt nu ook weer goed gerenderd op mijn Garmin fietskaart:

Sorry, ik heb me weer te snel uitgelaten over iets waar ik blijkbaar niet helemaal van op de hoogte ben. Mooi dat het toch mogelijk is om multipolygons te maken met losse lijnstukken; dat scheelt inderdaad een hoop duplicatie. Het lijkt me alleen wel moeilijker te onderhouden, en breekbaarder, dan alleen gesloten gebieden te gebruiken.

Op het moment dat ik het ging bewerken vormden die losse ways geen gesloten ring. Er ontbraken stukjes en er waren uitsteeksels die nergens mee verbonden waren.

Maar de betreffende way is zelf een gesloten way. Dan is die way toch een aparte outer ring, en kan het toch maar een keer outer in een multipolygon zijn?

(Zie op http://wiki.openstreetmap.org/wiki/Multipolygon More than one (disjunct) outer ring)

Ja, dan is het inderdaad een aparte outer ring. De data was al gefixt toen ik ging kijken, vandaar.