Hu:Relation:multipolygon

From OpenStreetMap Wiki
Jump to navigation Jump to search
Public-images-osm logo.svg multipolygon
Multipolygon Illustration 6.svg
Leírás
A multipoligon kapcsolatot összetett területek ábrázolására használjuk. Edit or translate this description.
Csoport: Properties
Tagok

  • vonal – külső
  • vonal – belső
Wikidata
Státusz: elfogadva

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

Vonal
vagy
pont?
Szerep Előfordulás Magyarázat
vonal outer egyszer vagy többször Azok a vonalak, melyek a terület (vagy területek, ha nem összefüggő tartományról van szó) külső határvonalát alkotják.
vonal inner nullaszor, egyszer vagy többször Azok a vonalak, melyek a területen belüli gyűrűt vagy gyűrűket (a lyuk/lyukak határvonalát) alkotják.
vonal none Ne használd, nem javasolt! A programok külsőként (outer) kezelhetik.

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>
Egyetlen gyűrű a terület külső határa

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 gyűrű a külső, egy másik gyűrű az alakzat belső határvonala

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>
Egy külső és két belső gyűrű

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>
Több vonal alkot egyetlen gyűrűt

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ülő külső gyűrű

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>
Két egymástól elkülönülő külső gyűrű, ahol több vonal alkot egy gyűrűt

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>
Bonyolult alakzat az összes eddig említett tulajdonsággal

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”.

Sziget 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!

Érintkező belső gyűrűk

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.
Érvénytelen lezáratlan sokszög alakzat

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.
Érvénytelen többértelmű multipoligon kapcsolat

További példák

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.
Potlatch 2 multipoligon példa – előtte

Kattints a külső gyűrűre:
Potlatch 2 multipoligon példa – a külső gyűrűre való kattintás után

Control+kattintás a belső gyűrűre:
Potlatch 2 multipolygon példa – a belső gyűrűre való control+kattintás után

Vedd észre, hogy most megjelent a „fánk” (doughnut) ikon az eszköztárban:
Potlatch 2 multipoligon példa – megjelenik a fánk (doughnut) ikon

Kattints rá:
Potlatch 2 multipoligon példa – kattints a fánkra!

Az éppen hozzáadott címkék megtekintéséhez kattints az "Advanced"-re:

Potlatch 2 multipoligon példa – kattints az "Advanced"-re!

Létrejött a multipoligon kapcsolat:
Potlatch 2 multipoligon példa - kész a multipoligon

Segédeszközök

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.