User:Pelderson/NL:Multipolygon Examples

From OpenStreetMap Wiki
Jump to navigation Jump to search

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.


Bos met meertje (één buitenste en één binnenste ring)

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
  • Lijnen (ways) of lijnstukken worden aangegeven met Arabische cijfers 1, 2, 3 ....
  • Lijnstukken (niet gesloten lijnen, non-closed ways) worden aangegeven met grote zwarte stippen aan de uiteinden. De stip is de knoop (node) waarmee de lijn aan een andere lijn vastzit.
  • Gebieden worden aangegeven met hoofdletters A, B, C, ....
  • Achter de cijfers en letters in de afbeeldingen staan de tags van het object (way of area)
  • Alleen de voor het voorbeeld noodzakelijke tags worden gegeven.Tags die niet essentieel zijn voor het voorbeeld zijn weggelaten. Bijv. name=*, source=*.
  • De relaties worden gegeven in lijstvorm (en niet in xml) om het beter leesbaar te houden.
  • Nieuw aan de relatie toegevoegde leden in de beschreven stap worden aangegeven met > en cursief geschreven.
Relatie
   Tag voor Relatie
   ...
   Lid van Relatie
  >Nieuw lid van Relatie
   ...
Stijl van de voorbeelden

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 (één rondgesloten lijn)


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.
De buitenlijn heeft geen tags.
De binnenlijn is het meertje en heeft dus de tag natural=water.

Multipolygoon A beschrijft dit geval.

Relatie A 'Bos A':
   type=multipolygon
   landuse=forest
   outer 1
   inner 2
Bos met meertje (één buitenste en één binnenste ring)


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.
Multipolygoon A beschrijft dit geval.

Relatie A 'Drieheuvelenbos':
   type=multipolygon
   landuse=forest
   name=Drieheuvelenbos
  >outer30
  >outer 31
   outer 1
   inner 2
Gesplitst bos met meertje (drie buitenringen en één binnenring


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 (één buitenste en twee binnenste ringen)


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.
Daarom moet de blauwe ring een multipolygoon B worden met lijn 4 als binnenring (inner) en lijn 2 als buitenring (outer).

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
Bos met twee meertjes en een eiland (Genested multipolygonen)

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
Landbouwgebied aangrenzend aan bos en erf aangrenzend aan meertje

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 met drie afzonderlijke delen (Afzonderlijke buitenste ringen)


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
Landbouwgebied met drie afzonderlijke delen (Afzonderlijke buitenste ringen) en een verspreide verzameling meertjes


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.

  • Gesloten lijnen 1 en 2 omsluiten gebieden A en B met gaten. Dus zijn er multipolygonen nodig en de lijnen zijn niet getagd.
  • Lijnstukken 3 en 4, alsook 5 en 6, zijn lijnstukken die samen gebieden C en D omsluiten. Dus zijn er multipolygonen nodig. Lijnstukken 3 en 6 worden getagd zoals nodig voor deze kaartobjecten. Lijnstukken 4 en 5 zijn geen kaartobjecten en worden dus zelf niet getagd.
  • Gesloten lijn 7 heeft geen gaten en wordt getagd met een tag die een gebied aanduidt. Voor gebiedje E is dus geen multipolygoon nodig.

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
Weide met landbouwgebied met twee bossen met struikgewas (Polygonen genest in 4 niveaus)

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
Bos met drie soorten houtopstand (Theorie)

Praktijk:

De volgende beschrijving is ook correct, maar gebruikt multipolygonen voor A, B en C, omdat het beter renderbaar is.

  • Lijn 1 en relatie A blijven ongewijzigd.
  • Nieuwe multipolygoon-relaties worden aangemaakt voor de gebieden B, C en D
  • De lijnen 2, 3 en 4 worden outer in nieuwe multipolygoon-relaties B, C en D.
  • De tags van de lijnen 2, 3 en 4 worden verplaatst naar de nieuwe relaties B, C, D.
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
Bos met drie soorten houtopstand (Praktijk)