Hu:Relation:multipolygon

From OpenStreetMap Wiki
Jump to: navigation, search
Más nyelveken — Relation:multipolygon
· Afrikaans · Alemannisch · aragonés · asturianu · azərbaycanca · Bahasa Indonesia · Bahasa Melayu · Bân-lâm-gú · Basa Jawa · Baso Minangkabau · bosanski · brezhoneg · català · čeština · dansk · Deutsch · eesti · English · español · Esperanto · estremeñu · euskara · français · Frysk · Gaeilge · Gàidhlig · galego · Hausa · hrvatski · Igbo · interlingua · Interlingue · isiXhosa · isiZulu · íslenska · italiano · Kiswahili · Kreyòl ayisyen · kréyòl gwadloupéyen · Kurdî · latviešu · Lëtzebuergesch · lietuvių · magyar · Malagasy · Malti · Nederlands · Nedersaksies · norsk bokmål · norsk nynorsk · occitan · Oromoo · oʻzbekcha/ўзбекча · Plattdüütsch · polski · português · português do Brasil · română · shqip · slovenčina · slovenščina · Soomaaliga · suomi · svenska · Tiếng Việt · Türkçe · Vahcuengh · vèneto · Wolof · Yorùbá · Zazaki · српски / srpski · беларуская · български · қазақша · македонски · монгол · русский · тоҷикӣ · українська · Ελληνικά · Հայերեն · ქართული · नेपाली · मराठी · हिन्दी · অসমীয়া · বাংলা · ਪੰਜਾਬੀ · ગુજરાતી · ଓଡ଼ିଆ · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · සිංහල · ไทย · မြန်မာဘာသာ · ລາວ · ភាសាខ្មែរ · ⵜⴰⵎⴰⵣⵉⵖⵜ · አማርኛ · 한국어 · 日本語 · 中文(简体)‎ · 吴语 · 粵語 · 中文(繁體)‎ · ייִדיש · עברית · اردو · العربية · پښتو · سنڌي · فارسی · ދިވެހިބަސް
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.
Csoport: Properties
Tagok

  • Vonal – külső
  • Vonal – belső
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: Wikipedia-16px.png 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 (am. külső, ejtsd: áutör) vagy inner (am. belső, ejtsd: innör) szerepet (angolul role, ejtsd: roul) 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: velid) 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 az „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 azoket, 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 botva 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 hatá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 a 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.