User:Pelderson/NL:Multipolygon Examples
Deze pagina geeft voorbeelden voor relaties van het type multipolygoon.
Voorbeelden voor mappers: Stap voor stap van een eenvoudig naar een complex voorbeeld
In dit hoofdstuk wordt een eenvoudig voorbeeld stap voor stap uitgebouwd naar een complex voorbeeld.
Voorkennis
Multipolygonen zijn relaties van het type multipolygon, met als leden gesloten lijnen, en/of lijnstukken die samen een gesloten lijn vormen. Ze beschrijven samengestelde gebieden. De leden van de multipolygoon-relatie hebben elk een van twee mogelijke rollen, namelijk inner of outer.
- outer beschrijft de buitenomtrek van een gebied.
- inner beschrijft de binnenomtrek van het multipolygoon-gebied. Met andere woorden, de omtrek van het ingesloten gebied dat er niet bij hoort: het "gat".
Zie hieronder voorbeeld Bos met meertje voor het principe.
Waarom zou je het doen?
Meestal kan het anders. Alleen uitsparingen in een vlak kunnen het beste altijd als multipolygoon gedaan worden. Bijvoorbeeld, als je het bos intekent als 1 gesloten lijn (polygoon, landuse=forest), en je tekent daarbinnen een meertje als 1 gesloten lijn (polygoon, natural=water), dan zie je op de kaart de bomen in het water staan. Met een multipolygoon staan de bomen droog om het meertje heen.
Is het niet lastiger?
Valt mee. In dit voorbeeld moet je altijd de lijnen 1 en 2 tekenen en de tags natural=water en landuse=forest zetten. Dus
- Je tekent het meertje B als lijn 2 en zet er de tags natural=water en name=Meertje B op;
- Je tekent het bos als lijn 1 zonder tags
- Je maakt een relatie, tagt die met type=multipolygon, landuse=forest en name=Bos A en voegt lijn 1 toe met de rol outer en lijn 2 met de rol inner.
Je kan in plaats van de multipolygoon-relatie te maken, ook de hele groene strook intekenen als vreemd gevormde gewone polygon. Je krijgt dan ergens een dwarslijntje om hem rond te sluiten, en de hele rand van het meertje moet je nogmaals tekenen. En dan zet je daar landuse=forest en name=Bos A op.
In dit geval is de multipolygoon duidelijker en minder werk!
Wanneer wordt het ingewikkeld?
- De outer kan 1 rondgesloten lijn zijn (een polygoon), maar kan ook opgebouwd zijn uit verschillende lijnstukken die al of niet eigen kenmerken als kaartobject hebben. Alle outers samen beschrijven de gehele buitenomtrek. NB. In Nederland hebben we als regel dat outers geen zelfstandige lijnobjecten met eigen kenmerken behoren te zijn.
- De inner is de omtrek van het ingesloten gebied, en dat kan een eenvoudig vlak zijn (ingesloten polygoon) maar kan zelf ook weer een complex gebied omsluiten (ingesloten multipolygoon).
- Dat betekent dat de inner zelf ook uit verschillende lijnstukken kan zijn opgebouwd, die samen de omtrek van het ingesloten gebied (outer van de ingesloten multipolygoon) vormen. Alle inners samen beschrijven de gehele binnenomtrek van de multipolygoon. NB. In Nederland hebben we als regel dat outers geen zelfstandige lijnobjecten met eigen kenmerken behoren te zijn.
- Er kunnen in 1 multipolygoon meerdere ingesloten gebieden zijn, bv een bos met twee meertjes, of een bos met een meertje en een weiland. Deze kunnen los liggen of tegen elkaar aan (gedeelde grenslijn) en zelf een ingesloten multipolygoon zijn (bos met weiland waarbij het weiland grenst aan een meertje met eiland erin).
- Het is zelfs mogelijk om aparte gebieden in 1 multipolygoon-relatie samen te nemen, bv een bos met één naam bestaande uit door wegen en spoorlijnen gescheiden delen met precies dezelfde kenmerken, die elk een simpele polygoon of ook een multipolygoon kunnen zijn. Als het multipolygonen zijn, staan hun gescheiden inners dus bij elkaar in die ene complexe multipolygoon!
De mogelijkheden zijn dus groot, maar hoe ingewikkelder je het maakt, hoe makkelijker het stukgaat en hoe meer onderhoud je eraan zal hebben. Het is altijd wel mogelijk om een aantal eenvoudigere multipolygonen te maken in plaats van één heel ingewikkelde.
Stijl van de voorbeelden
Relatie Tag voor Relatie ... Lid van Relatie >Nieuw lid van Relatie ... |
Uitgangssituatie: Bos (één rondgesloten lijn)
Gesloten lijn 1 is getekend en getagd met landuse=forest om bos A te beschrijven. Taggen van een gesloten lijn met een tag die een gebied aangeeft resulteert op de kaart in een gebied (gekleurd vlak). Dit werkt goed voor eenvoudige gebieden waarvan de omtrek bestaat uit één enkele lijn en die geen gaten (uitsparingen met andere kenmerken) hebben. Je zou hier ook een multipolygoon kunnen gebruiken met alleen een buitenring, maar dat zou dit eenvoudige geval alleen maar onnodig ingewikkeld maken. |
Bos met meertje (één rondgesloten lijn als buitenring en één rondgesloten lijn als binnenring)
Gesloten lijn 2 is toegevoegd binnen het bos A en getagd met natural=water om meertje B te beschrijven.
Gesloten lijn 1 geeft nu niet meer het hele bosgebied weer, want er zit een ander gebied in, met andere tags. Lijn 1 is nu niet meer dan de buitenlijn van het bos. Het bos zelf is de groene "ring" tussen twee gewone polygonen: lijn 1 (de buitenlijn, outer) en lijn 2 (de binnenlijn, inner, getagd als meertje). Daarom maken we een multipolygoon-relatie aan die bestaat uit de twee rondgesloten lijnen en die getagd wordt met landuse=forest. Multipolygoon A beschrijft dit geval. Relatie A 'Bos A': type=multipolygon landuse=forest outer 1 inner 2 |
Gesplitst bos met meertje (drie rondgesloten lijnen als buitenlijnen, één rondgesloten lijn als binnenring in één van de drie)
Gesloten lijnen 30 en 31 zijn getekend om extra stukken van het bos A te beschrijven. Zo'n stuk ligt bijvoorbeeld aan de andere kant van een snelweg met vangrails, sloten, en bomenrijen. Samen vormen ze het 'Drieheuvelenbos'. Je kan elk extra stuk natuurlijk als apart bos mappen dmv een gesloten lijn met landuse=forest, maar kenmerken zoals de naam staan dan op alle drie afzonderlijk, terwijl het om één bos met één naam gaat.
Je kan als alternatief de extra stukken bos A2 en A3 onderdeel maken van het "Drieheuvelenbos' door lijnen 30 en 31 als outer toe te voegen aan multipolygoon-relatie Bos A. Lijnen 30 en 31 hebben dan geen eigen tags. Relatie A 'Drieheuvelenbos': type=multipolygon landuse=forest name=Drieheuvelenbos >outer30 >outer 31 outer 1 inner 2 |
Bos met twee meertjes (één buitenring en twee binnenringen)
We laten lijn 30 en 31 nu weer weg.
Gesloten lijn 3 is toegevoegd binnen het bos A en getagd met natural=water om het meertje C te beschrijven. Multipolygoon Bos A (de groene ring), die nu is getagd met landuse=forest, is nu het gebied dat wordt omsloten door lijn 1 minus de meertjes B (lijn 2) en C (lijn 3). inner 3 is toegevoegd aan multipolygoon-relatie A: Relatie A 'Bos A': type=multipolygon landuse=forest outer 1 inner 2 >inner 3 |
Bos met twee meertjes en in 1 meertje een eiland van struikgewas (Ingebedde of "geneste" multipolygoon)
Gesloten lijn 4 is toegevoegd binnen meertje B en getagd met natural=scrub om eiland D te beschrijven.
Bos A (multipolygoon A) blijft ongewijzigd, want het gebied binnen lijn 1 maar zonder de meertjes is hetzelfde gebleven. Relatie A 'Bos A': type=multipolygon landuse=forest outer 1 inner 2 inner 3 Gesloten lijn 2 is nu niet meer getagd als meertje, omdat die tag niet meer het gehele door lijn 2 omsloten gebied beschrijft. Meertje B is nu de blauwe ring: het gebied omsloten door lijn 2 minus het eiland D. Die blauwe ring moet getagd worden als natural=water. Dit meertje (de blauwe ring) wordt daarom beschreven door een tweede multipolygoon B: Relatie B 'Meertje B': type=multipolygon natural=water outer 2 inner 4 |
Voor het bos doet het er niet toe wat er binnen lijn 2 veranderd is. Daarom blijft multipolygoon A ongewijzigd.
Bos met 2 meertjes, eiland, grenzen en highway (Meerdere wegen/lijnen vormen de buitenste multipolygoon en de ingebedde "geneste" multipolygonen)
! Dit voorbeeld liet zien wat er in principe mogelijk is, maar de Nederlandse mapperscommunity (2020) raadt ernstig af om het in de praktijk toe te passen!
Het gaat om het gebruiken van highways en andere lijnelementen als begrenzing van van een multipolygoon. Het is in het algemeen ongewenst om gebieden aan highways te koppelen, of om grenzen met gebieden of wegen te koppelen. Dit leidt onherroepelijk tot fouten en een bijna ononderhoudbaar kaartgedeelte. Dit omdat latere aanpassingen of verschuivingen van een knoop, de weg of het gebied meteen een meestal ongewenste verschuiving van de verbonden elementen geven. Wie het voorbeeld toch wil bestuderen kan het hier vinden. |
Landbouwgebied grenzend aan bos en erf grenzend aan meertje (Aangrenzende multipolygonen en aangrenzende binnenste gebieden)
De eerdere lijn 1 wordt gesplitst in een korter lijnstuk 1 en een nieuw lijnstuk 16, beide zonder tags.
Lijnstuk 18 wordt toegevoegd en niet getagd. Lijnstukken 16 en 18 vormen de grens van het landbouwgebied E dat grenst aan bos A. E en A delen lijnstuk 16. Gesloten lijn 19 wordt toegevoegd binnen het landbouwgebied E en getagd met landuse=farmyard om het erf G te beschrijven. Gesloten lijn 20 wordt toegevoegd met behulp van de twee noordelijke knopen van lijnstuk 19 en het tekenen van een gedupliceerde weg bovenop de noordelijke grens van het erf G. Lijn 20 wordt getagd met natural=water wat een derde meertje F beschrijft. outer 16 wordt toegevoegd aan multipolygoon A: Relatie A 'Bos A': type=multipolygon landuse=forest outer 1 >outer 16 inner 2 inner 3 Multipolygoon B is ongewijzigd Relatie B 'Meertje B': type=multipolygon natural=water outer 2 inner 4 Landbouwgebied E heeft uitsparingen en wordt daarom beschreven door een nieuwe multipolygoon E: Relatie E 'Landbouwgebied E': type=multipolygon landuse=farmland outer 18 >outer 16 inner 19 inner 20 |
Opmerkingen:
- In dit geval is de gezamenlijke lijn van F met G dubbel getekend. De lijnen vallen precies over elkaar heen.
- Gedupliceerde lijnen tussen twee gebieden kunnen worden voorkomen door gesplitste lijnen te gebruiken, wat alleen bij multipolygonen kan, dus bij A en E.
- F en G zou je ook kunnen omzetten naar multipolygonen zonder inner, maar om het niet ingewikkelder te maken laten we hier de dubbele lijn staan. F en G blijven dan eenvoudige polygonen die precies tegen elkaar aan liggen.
Landbouwgebied in drie delen (Aparte buitenste ringen)
Lijnstuk 21 wordt toegevoegd en niet getagd. Lijnstuk 21 vormt landbouwgebied E2 dat apart ligt, maar behoort tot landbouwgebied E.
Lijnstuk 23 wordt toegevoegd en niet getagd. Lijnstukken 23 vormt landbouwgebied E3 dat apart ligt, maar behoort tot landbouwgebied E. Gesloten lijn 25 wordt toegevoegd binnen landbouwgebied E3 en getagd met natural=water wat meertje H beschrijft. Multipolygoon A blijft ongewijzigd: Relatie A 'Bos A': type=multipolygon landuse=forest outer 1 outer 16 inner 2 inner 3 Multipolygoon B blijft ongewijzigd: Relatie B 'Meertje B': type=multipolygon natural=water outer 2 inner 4 outer 21, outer 23 en inner 25 worden toegevoegd aan multipolygoon E: Relatie E 'Landbouwgebied E': type=multipolygon landuse=farmland outer 16 outer 18 >outer 21 >outer 23 inner 19 inner 20 >inner 25 |
Landbouwgebied in drie delen met 4 meertjes (Aparte buitenste ringen én gedistribueerde multipolygon als binnenringen)
NB. Dit is een geldige mogelijkheid zonder verknopingen. Het geeft geen risico's op ongewenste verschuivingen. Maar hij is lastig te begrijpen en daardoor in de meeste gevallen niet aan te raden.
Het terrein is hetzelfde als in het vorige voorbeeld. De omtrekken van alle meertjes zijn als outers zonder tags opgenomen in multipolygoon B. Polygonen C, F en H worden B2, B3 en B4. Multipolygoon A blijft ongewijzigd. Relatie A 'Bos A': type=multipolygon landuse=forest outer 1 outer 16 inner 2 inner 3 Multipolygoon B wordt uitgebreid met de ongetagde outers 3, 20 en 25. Relatie B 'Meertjesverzameling B': type=multipolygon natural=water outer 2 >outer 3 >outer 20 >outer 25 inner 4 Multipolygoon E blijft ongewijzigd. Relatie E 'Landbouwgebied E': type=multipolygon landuse=farmland outer 16 outer 18 >outer 21 >outer 23 inner 19 inner 20 >inner 25 |
Het resultaat is precies hetzelfde als in het vorige voorbeeld.
Praktijkvoorbeelden
Weide met landbouwgebied met twee bossen met struikgewas (Polygonen genest in 4 niveaus)
Regel: Als polygonen worden genest in een aantal niveaus, is de veiligste manier om
- alleen de meest binnenste rondgesloten lijnen te taggen met een tag die een gebied beschrijft en
- de andere gesloten lijnen zo te taggen dat geen gebied wordt beschreven en
- meerdere multipolygonen te gebruiken die elk twee aangrenzende niveaus beschrijven.
Dit voorbeeld komt van oorsprong van de discussie Verschachtelte Multipolygone op het Duitse forum.
Multipolygoon A beschrijft weiland A, multipolygoon B het landbouwgebied B, multipolygoon C het bos C en multipolygoon D het bos D: Relatie A 'Weiland A': type=multipolygon landuse=meadow outer 1 inner 2 Relatie B 'Landbouwgebied B': type=multipolygon landuse=farmland outer 2 inner 3 inner 4 inner 5 inner 6 Relatie C 'Bos C': type=multipolygon landuse=forest outer 3 outer 4 Relatie D 'Bos D': type=multipolygon landuse=forest outer 5 outer 6 inner 7 |
Bos met drie soorten houtopstand
Dit voorbeeld is afkomstig uit de discussie Multipolygone, z.B. See oder Gebäude in Waldfläche op het Duitse forum. Het laat zien hoe je met multipolygonen een probleem bij het renderen kan oplossen, terwijl je correct en waarheidsgetrouw blijft taggen. Je tagt dan zo dat het renderbaar wordt, en dat is geen taggen voor de renderer.
Theorie:
Een groot bos met gemengde houtopstanden dat drie ingesloten gebieden heeft met coniferen, bladachtigen en gemengde bebossing, kan in theorie correct worden beschreven door Relatie A. Maar deze manier blijkt renderers, inclusief bewerker JOSM, voor een probleem te stellen. Rondgesloten lijnen 1, 2, 3 en 4 zijn getagd zoals weergegeven in de afbeelding. Lijn 1 omsluit het gehele gebied.
Relatie A : type=multipolygon landuse=forest wood=mixed outer 1 inner 2 inner 3 inner 4 |
Praktijk:
De volgende beschrijving is ook correct, maar gebruikt multipolygonen voor A, B en C, omdat het beter renderbaar is.
Relatie A: type=multipolygon landuse=forest wood=mixed outer 1 inner 2 inner 3 inner 4 Relatie B: type=multipolygon landuse=forest wood=coniferious outer 2 Relatie C: type=multipolygon landuse=forest wood=deciduous outer 3 Relatie D: type=multipolygon landuse=forest wood=mixed outer 4 |