Hu:Relation:multipolygon
multipolygon |
Leírás |
---|
A multipoligon kapcsolatot összetett területek ábrázolására használjuk. |
Csoport: tulajdonságok |
Tagok |
|
Státusz: de facto |
Eszközök a címkéhez |
|
A multipoligon kapcsolatokat összetett területek ábrázolására használjuk. (A kifejezés jelentése: multi = sok, poligon = sokszög. Lásd még: Sokszög a Wikipédiában.)
Egyszerű területeket az OSM-ben úgy térképezzük, hogy egy körben haladó vonalat rajzolunk, és olyan címkével látjuk el, ami inkább területet sugall mintsem körbe futó vonalat. Például ha egy körben haladó vonalat a landuse=forest címkével látunk el, akkor azt feltételezzük róla, hogy terület, míg ugyanarról a zárt vonalról a junction=roundabout címkével ellátva azt feltételezzük, hogy nem terület.
Azonban ez a modell csak olyan területek esetében működik, melyek körvonala egyetlen vonalból áll, és nincs bennük lyuk. Bármely ennél összetettebb terület rajzolása – például mert a körvonala több vonalból áll össze, vagy mert több, egymástól elkülönülő részből áll, vagy mert lyukak vannak benne – multipoligon kapcsolatot igényel.
Röviden szólva a multipoligon kapcsolat egyszerre több vonalat tartalmaz, melyek
- vagy outer (jelentése külső, ejtsd: /ˈaʊtə/) vagy inner (jelentése belső, ejtsd: /ˈɪnə/) szerepet (angolul role, ejtsd: /ɹəʊl/) játszanak, aszerint, hogy az alakzat külső körvonalához vagy egy belső lyukhoz tartoznak, és
- ezen vonalaknak egy érvényes (angolul valid, ejtsd: /ˈvæl.ɪd/) elrendeződésben állva gyűrűket kell alkotniuk, hogy szabályos multipoligont tudjunk belőlük létrehozni.
Címkék
Kulcs | Érték | Használat | Magyarázat |
---|---|---|---|
type | multipolygon | kötelező | Ez a címke mondja meg az egyes számítógépprogramoknak, hogy területet konstruáló szabályokat alkalmazzon a kapcsolat tagjaira. |
... | ... | opcionális | További címkék, melyek leírják a terület tulajdonságait (például a nevét, a területhasználati módot stb.) |
Tagok
Használat
A multipoligonok használatára vonatkozó közösségi ajánlások a következők:
- A multipoligont leíró címkéknek (például landuse=forest) a kapcsolatokhoz kell tartozniuk. A külső vonalnak/vonalaknak címkék nélkül kell maradnia/maradniuk, hacsaknem valamit a saját maguk jogán jelöl/jelölnek. Például egy erdő körbe lehet véve négy kerítéssel; ebben az esetben mind a négy vonal ellátható a barrier=* címkével, de közben mindegyik az erdőhöz tartozó kapcsolat külső (outer) tagja.
Ha egyetlen zárt vonal alkotja a külső gyűrűt és nem jelöl semmit a saját jogán, akkor a külső gyűrű is megkaphatja a címkéket és magát a kapcsolatot hagyd címkék nélkül! Ha több mint egy külső vonalad van (lásd a lentebb az összetett alakzatokat), akkor ez értelmetlen.Javasoljuk – a következetesség érdekében –, hogy a multipoligon címkéivel mindig magát a kapcsolatot jellemezd.- Ha a belső vonal valamit jelképez (például egy lyukas erdő esetében, ahol a lyuk egy tó), akkor magát a belső vonalat kell megcímkézni.
- Más esetekben a belső vonalnak/vonalaknak címke nélkül kell maradnia/maradniuk.
- A vonalak irányítottsága nem számít.
- A kapcsolat tagjainak a sorrendje nem számít (de a megfelelő sorrendben rendezett lista segítheti az emberi felhasználókat abban, hogy könnyebben ellenőrizhessék a kapcsolat teljességét, hiánytalanságát).
A multipoligon érvényességi feltételei
Általában véve a multipoligon kapcsolatok multipoligonok rajzolására használhatók a OGC Simple Feature standard(en)-nak megfelelően (Grafikai példák az OGC érvényességére(en)). Bármi, ami nem ennek a szabványnak megfelelő érvényes multipoligon (például egymást metsző gyűrűk vannak a határvonalán), azt érvénytelen multipligon kapcsolatnak tekintjük, kivéve az egymással érintkező belső gyűrűk nevezetes esetét (lásd alább).
Egy érvényes (zárt) poligont úgy definiálunk, mint olyan vonalak halmaza, amik – ha végpontjaik csatlakoznak – zárt poligont alkotnak.
Egy érvényes multipoligon kapcsolat létrejöttének feltételei a következők:
- Azon vonalak, melyek a multipoligon kapcsolat tagjai, kötelezően egy vagy több zárt poligont alkotnak, vagyis ezen nyitott vonalak egymással végpontjaikban összekapcsolódva egy vagy több zárt láncolatot (gyűrűt) alkotnak, vagy már eleve önálló zárt vonalak.
- Az összekapcsolódás két nyitott vonal esetében azt jelenti, hogy közös végponttal kell rendelkezniük. (Az itt látható ábrákon nagy fekete ponttal vannak jelölve a nyitott vonalak végpontjai.)
- Ha egy pont kettőnél kevesebb vonal végpontja, akkor a poligon nem lehet zárt, és a multipoligon kapcsolat érvénytelen. Lásd még: első példa az érvénytelenségre(en).
- Ha egy végponton kettőnél több nyitott vonal osztozik, akkor multipoligon kapcsolat érvénytelen, mert a zárt poligon nem állítható elő egyértelműen. Lásd: második példa az érvénytelenségre(en). (Kivétel a szabály alól, ha a végpont páros sok nyitott vonalhoz tartozik, ami egymással érintkező belső gyűrűk esetén elfogadott.)
- A belső poligonoknak tilos átfedniük a külső poligonokat vagy akár csak érinteniük is őket. Az átlapolás mindig elkerülhető az alakzat átrajzolásával.
Példák
Egyszerű alakzat
A legegyszerűbb eset az, amikor több, egymáshoz kapcsolódó nyitott vonal alkot egy gyűrűt, és ez adja a terület külső (outer) határvonalát. Ez átrajzolható egyetlen zárt vonallá is, de ez hatalmas területek esetében kényelmetlen.
<relation id="1">
<tag k="type" v="multipolygon" />
<member type="way" id="1" role="outer" />
<member type="way" id="2" role="outer" />
<member type="way" id="3" role="outer" />
<member type="way" id="4" role="outer" />
</relation>
|
Egy külső és egy belső gyűrű
Másik egyszerű és gyakran használt eset, amikor egy gyűrű az alakzat külső határvonala és egy másik gyűrű a belső, ahol a belső gyűrűt egyetlen zárt vonal alkotja.
<relation id="1">
<tag k="type" v="multipolygon" />
<member type="way" id="1" role="outer" />
<member type="way" id="2" role="inner" />
</relation>
|
Egy külső és két belső gyűrű
<relation id="1">
<tag k="type" v="multipolygon" />
<member type="way" id="1" role="outer" />
<member type="way" id="2" role="inner" />
<member type="way" id="3" role="inner" />
</relation>
|
Több vonal alkot egy gyűrűt
Az összetett multipoligon séma megengedi, hogy több vonal alkossa akár a belső, akár a külső gyűrűt. A lehetőség hasznos hatalmas területek esetében, amikoris kényelmetlen lenne egyetlen vonallal körberajzolni az egészet.
<relation id="1">
<tag k="type" v="multipolygon" />
<member type="way" id="1" role="outer" />
<member type="way" id="2" role="outer" />
<member type="way" id="3" role="inner" />
</relation>
|
Két egymástól elkülönült külső gyűrű
Az egyszerű multipoligonokkal szemben az összetett multipoligon kapcsolat lehetővé teszi akárhány külső gyűrű megrajzolását, így valódi multipoligonokat állíthatunk elő.
<relation id="1">
<tag k="type" v="multipolygon" />
<member type="way" id="1" role="outer" />
<member type="way" id="2" role="outer" />
</relation>
|
Két egymástól elkülönült külső gyűrű és több vonal alkot egy gyűrűt
A vonalak kombinálásával nem csupán külső, hanem belső gyűrűket is létre hozhatunk.
<relation id="1">
<tag k="type" v="multipolygon" />
<member type="way" id="1" role="outer" />
<member type="way" id="2" role="inner" />
<member type="way" id="3" role="inner" />
<member type="way" id="4" role="outer" />
<member type="way" id="5" role="inner" />
</relation>
|
Az összes fejlett tulajdonság összetett kombinációja
Ez a példa az eddig említett összes tulajdonságot kombinálja: három gyűrű alkotja a háromrészes alakzat külső körvonalát, két résznek van egy vagy több belső határvonala is, és sok gyűrűt egynél több vonal alkot.
<relation id="1">
<tag k="type" v="multipolygon" />
<member type="way" id="1" role="outer" />
<member type="way" id="2" role="outer" />
<member type="way" id="3" role="outer" />
<member type="way" id="4" role="outer" />
<member type="way" id="5" role="inner" />
<member type="way" id="6" role="inner" />
<member type="way" id="7" role="inner" />
<member type="way" id="8" role="inner" />
<member type="way" id="9" role="inner" />
<member type="way" id="10" role="inner" />
<member type="way" id="11" role="inner" />
<member type="way" id="12" role="outer" />
<member type="way" id="13" role="outer" />
<member type="way" id="14" role="outer" />
<member type="way" id="15" role="outer" />
<member type="way" id="16" role="inner" />
<member type="way" id="17" role="inner" />
<member type="way" id="18" role="inner" />
<member type="way" id="19" role="inner" />
<member type="way" id="20" role="outer" />
</relation>
|
Sziget a lyukban
Az egy kapcsolatban szereplő több külső gyűrű lehetőségéből következik, hogy egy lyukban lévő „sziget” is könnyedén modellezhető.
<relation id="1">
<tag k="type" v="multipolygon" />
<member type="way" id="1" role="outer" />
<member type="way" id="2" role="inner" />
<member type="way" id="3" role="outer" />
</relation>
Egy ilyen konstrukcióhoz korábban két eltérő multipoligon kapcsolatra volt szükség: az egyiknek az 1. számú vonal a külső határvonala és a 2. számú a belső, a másiknak pedig a 2. számú gyűrű a külső és a 3. számú a belső határvonala. Ilyen ismétlődésre még mindig szükség lehet, ha a „sziget” valami más, mint a külső terület, de ahol a „sziget” azonos jellemzőkkel rendelkezik, ott készíthetünk egy „lyukat a lyukban”. |
Érintkező belső gyűrűk
Bármiféle egymással érintkező gyűrűk csak zárt vonalakból készíthetők, ha egyáltalán, különben szélsőségesen bonyolult lesz a feldolgozás a szoftveres kliensek számára. A 2. számú (kék) és a 3. számú (zöld) vonalnak egyaránt zárt vonalnak kell lennie. Amennyiben lehetséges, jobb, ha egyetlen vonallá egyesítjük őket, ha azonos dolgot jelenítenek meg.
Néhány térképész a „multipoligon” kapcsolatot használja érintkező belső gyűrűk kombinálására:
<relation id="1">
<tag k="type" v="multipolygon" />
<member type="way" id="1" role="outer" />
<member type="way" id="2" role="inner" />
<member type="way" id="3" role="inner" />
</relation>
Az összetett multipoligonokat használó alkalmazások úgy próbálják meg kirajzolni azokat, mintha az érintkező gyűrűk valójában egyetlen gyűrűt alkotnának. Ebben az esetben az OpenStreetMap eltér a OGC Simple Features szabványtól. A Simple Features-ben az érintkező belső gyűrűk nem támogatottak, mert szükségtelenek – miért készítene bárki is két gyűrűt, ha kombinálva őket egyetlen egyet is készíthetne? Az OpenStreetMap-ben azonban ennek néha van értelme: ha egyenként vannak felcímkézve. Például ha egy erdőben egy tisztás felét egy tó foglalja el, a másik felét pedig egy mezőgazdasági terület, akkor az erdőben két „lyuk” lesz, az egyik natural=water, a másik pedig landuse=farmland címkét kap. Ez egy kényelmet szolgáló trükk: ha a térképésznek egyetlen lyukat kellene készítenie az erdőben, és utána külön-külön poligont kellene csinálnia a tónak is és a mezőgazdasági hasznosítású területnek is, az túlságosan nagy munka lenne. Kerülendő, hogy a multipoligon belső gyűrűje érintse a külső gyűrűt! |
Példák az érvénytelenségre
Most következzék néhány példa az érvénytelen multipoligon kapcsolatra, hogy szemléltessük, mit nem szabad csinálni.
Bezáratlan poligonok
Ebben a példában a 2. és a 3. számú vonalak nem kapcsolódnak össze, ezért a multipoligon kapcsolat érvénytelen. |
Egymást átfedő, nyitott vonalak ugyanabban szerepben
Ebben a példában az alakzat körvonala nem határozható meg egyértelműen, mivel a 2. (barna) és a 3. (kék) vonal végpontjai kettőnél több vonal végpontjai, így a multipoligon kapcsolat érvénytelen. |
További példák
- További példák találhatók az érvényes multipoligon kapcsolatokra a Multipoligon példák(en) oldalon.
- Egy problémaleírás: szokatlan alakzatok példái az érvényes és érvénytelen kapcsolatokra(en)
Címkézés
- Azt javasoljuk, hogy az összes címkét, ami az alakzatot leírja, a kapcsolathoz, és ne az egyes vonalakhoz rendeld. Ez sokszor mindenféle címke nélküli vonalakat eredményez.
- A kompatibilitás érdekében alkalmazandó szabályok:
- A kirajzolás stílusát a kapcsolat címkéi határozzák meg.
- Ha a kapcsolat nem rendelkezik címkékkel, akkor a külső határvonalak stílusa alkalmazandó.
- Ha a külső határoló vonalak stílusában ütközés, következetlenség van, vagy nem található stílus, akkor az alakzat hibásnak tekintendő.
- A belső határvonalak címkéi a belső alakzatokhoz tartoznak.
Amenyiben a belső határvonal stílusa azonos a külső határvonal stílusával (egy régi módszerrel), akkor a belső stílus üresként kezelendő.
Részletesen a címkézésről
Ez a szakasz a szoftverfejlesztők számára készült, a közönséges felhasználóknak a címkéket mindig a kapcsolathoz kell rendelniük, nem pedig a külső határvonalhoz!
Multipoligon kapcsolat meglehetősen kevés módon hozható létre. Következzen esetekre bontva a problémák és a megoldási javaslatok listája:
- Egynél több külső (outer) határvonal van:
- A kapcsolatnak vannak címkéi
- használd a kapcsolat címkéit, minden mást hagyj figyelmen kívül a vonalakon.
- A kapcsolatnak nincsenek címkéi, de egy vagy több létrehozó külső határvonal azonos címkehalmazzal rendelkezik
- érvényes adatok esetében vedd a felcímkézett részeket és alkalmazd a stílusukat az egész külső (outer) határvonalra.
- A kapcsolatnak nincsenek címkéi, és a létrehozó külső határvonalak eltérően vannak felcímkézve
- Ez egy probléma, aminek nincs meghatározott megoldása.
- Egynél több belső (inner) határvonal van:
- Egy gyűrűnek (ami egy vagy több vonalból áll) nincsenek címkéi, de egy másiknak vannak
- a címkékkel nem rendelkező gyűrű lyukként kerül kirajzolásra, a címkékkel rendelkező gyűrű pedig a címkéinek megfelelően.
- Minden gyűrű más címkékkel rendelkezik
- mindegyik lyuk a maga címkéi szerint kerül kirajzolásra.
- Egy gyűrűnek (ami kettő vagy annál több vonalból áll) eltérően vannak felcímkézve az őt alkotó vonalai
- ha némelyik vonalnak nincs címkéje, akkor egyszerűen használjuk náluk a többi vonal címkéit. Ha bizonyos vonalak más-más címkékkel rendelkeznek, akkor meghatározatlan a követendő magatartás (ugyanúgy, mint a külső (outer) vonalak esetében).
Megjelenítés
- A JOSM az 1203-as számú frissítés óta képes az összetett multipoligonok kirajzolására.
- Az OSM honlap rétegei az osm2pgsql "--multi-geometry" flag használatától függnek, ami rétegenként különböző. Még több információért a témában lásd Paul Norman blogbejegyzését és ezt a openstreetmap-térképészeti github megbeszélést: [1]
- Az 1497-es számú frissítés óta teljes támogatás a mkgmap(en) által
- a GpsMid(en) támogatja az összetett multipoligon tulajdonságok legtöbbjét
- Létezik egy javasolt algoritmus(en) a multipoligonok feldolgozásához.
Térképezési stílusok: a legjobb gyakorlatok
A multipoligonok megnyitják az utat az előtt, hogy különböző stílusban készíthessünk geometriailag azonos objektumokat: úgy, mint vonalak vagy úgy, mint multipoligonok, zárt vagy nyitott vonalakat használva, közös vagy önálló vonalakkal.
Mindez felveti a kérdést, hogy milyen térképezési stílust használjunk. Némelyik stílus bizonyos előnyökkel rendelkezik a többivel szemben: ezek ún. „jó gyakorlatokként” kezelendők. A többiek esetében leginkább attól függ a dolog, hogy kinek mik az egyéni preferenciái, vagy hogy az illető felhasználó tapasztalt vagy tapasztalatlan térképész.
Általában amikor nagy területek ugyanazokkal a címkékkel rendelkeznek, akkor vagy nagyon sok kis multipoligonnal vagy zárt vonallal adhatjuk meg őket, vagy kis számú nagy multipoligonnal. Magukat a multipoligonokat két térképezési stílusban készíthetjük el:
- „A” módszer
- Belső és külső gyűrűket hozunk létre zárt vonalakból mindenütt, ahol az lehetséges, kivéve akkor, amikor már túlságosan naggyá válnak (kb. 2000 pontnál). A vonalak rendszerint nem tartoznak különböző multipoligonokhoz.
- „B” módszer
- Bármely két multipoligon területe között húzódó határvonalat egyetlen vonal alkot, ami azután a szomszédos multipoligonok esetében közös. Ennek az a következménye, hogy a multipoligon gyűrűk gyakran sok nyitott vonalból állnak.
Évekig intenzív vita folyt arról, hogy a multipoligonok esetében mi a legjobb gyakorlat, lásd a Talk:Relation:multipolygon(en) oldalt és a fórumokat. A végső konszenzus még nem jött létre, de a következő megfigyelések érvényesek:
- A vonalak helyett egyszerű zárt területekből alkotott multipoligonokkal való térképezés megnöveli az adatbázisban lévő objektumok számát, és növeli a kirajzoláshoz szükséges időt. A bonyolultságból fakadó plusz költségek kerülendők.
- Ha a multipoligonok közös vonaldarabokat tartalmaznak („B” módszer), akkor ez hatékonyan reprezentálja az alakzatokat, mivel elkerüljük, hogy a reprezentációban egymást feleslegesen átfedő vonalak legyenek.
- A nem zárt vonalakból álló multipoligonokat („B” módszer) nehezebb kezelniük a tapasztalatlan felhasználóknak, és az olyan egyszerű szerkesztőprogramoknak, mint a Potlatch 2. Sokszor ez oda vezet, hogy a gyanútlan felhasználók véletlenül törlik az ilyen multipoligonokat.
- Sok tapasztalt felhasználó a „B” módszert kényelmetlennek találta, különösen a nagyon nagy multipoligonok esetében.
- A hatalmas multipoligonok a kirajzolási folyamat lelassulását okozzák.
- A JOSM-ban könnyebb, gyorsabb és kevésbé van kitéve a hibáknak a komplex alakzatok szerkesztése az „A” módszer esetében. Ez azért van, mert a „B” módszer számos vonaldarab törlését, létrehozását és beillesztését igényli a multipoligon kapcsolatokkal való munka során.
Mindeddig nem lett hivatalosan korlátozva a multipoligonok használati módja – már amennyiben a geometriájuk érvényes. A megfontolt térképezési stílus elfogadása segíti az adatbázis tisztaságának a megőrzését, és megkönnyíti a szerkesztést minden felhasználó számára.
Egy Potlatch 2 példa
Itt van egy füves terület egy fás területen belül.
Control+kattintás a belső gyűrűre:
Vedd észre, hogy most megjelent a „fánk” (doughnut) ikon az eszköztárban:
Az éppen hozzáadott címkék megtekintéséhez kattints az "Advanced"-re:
Létrejött a multipoligon kapcsolat:
Segédeszközök
- Kapcsolat ellenőrzése(en)
- az OSM Inspector rendelkezik multipoligonokat ellenőrző képességgel
Lásd még
- Lásd A terület jövője(en) oldalon lévő megbeszélést arról, hogy hogyan javítsa az OSM a területek kezelését.