Az adatmodell nézőpontjából a kapcsolatok alapvetően objektumok csoportja, amiben minden egyes objektumnak meghatározott szerepe van. A kapcsolatoknak címkéi is lehetnek.
Figyelem!
Ez a cikk az én (City-busz) ötleteimet, javaslataimat írja le a kapcsolatokkal kapcsolatban, emiatt olyan információkat is tartalmaznak, amelyek (még) nem lettek elfogadva az OSM közösség által. Viszont várom a véleményeket az oldal vitalapján.
Általam javasolt használati módok
Összetett sokszög (multipolygon)
Az egyszerű sokszögek (zárt vonalak, polygons) igen korlátozott objektumábrázolási lehetőséget nyújtanak: a sokszöget egyetlen vonal alkotja, és nem lehetnek benne lyukak. Gyakran nincs is szükség többre, azonban a következő eseteket csak összetett sokszögekkel lehet megoldani:
- Lyukak elhelyezése az objektumon belül (pl. udvar egy házban, tisztás egy erdőben, sziget egy folyón).
- A sokszög több, egymáshoz kacsolódó vonalból áll (pl. határvonalak, tengerpartok, nagyobb tavak, folyópartok). A darabolásra az adatbázis méretének és a szerkesztőprogramok terhelésének csökkentése miatt van szükség.
- A sokszög több, egymástól teljesen különálló részből áll (pl. egy ország exklávéja, amely egyáltalán nem érintkezik az anyaország országhatárával).
Az összetett sokszögek lehetőséget biztosítanak a fentiek megvalósítására, akár kombináltan is.
Használat
Címkék
Kulcs
|
Érték
|
Leírás
|
type
|
multipolygon
|
A kapcsolat típusának megadása (kötelező)
|
*
|
*
|
Bármely egyéb címke, amely a sokszöget jellemzi.
|
Tagok
Alapelem
|
Szerep
|
Mennyiség
|
Leírás
|
|
outer
|
egy vagy több
|
A sokszög egyetlen vagy egyik külső gyűrűjét részben vagy egészben alkotó vonal.
|
|
inner
|
egy vagy több
|
A sokszög egyetlen vagy egyik belső gyűrűjét részben vagy egészben alkotó vonal (pl. sziget, udvar).
|
|
label
|
egy
|
A sokszög feliratának a helye.
|
Az "outer" és "inner" tagoknak zárt útvonal(ak)at kell alkotniuk, tehát ahol az egyik vonal véget ér, onnan kell indulnia egy másik vonalnak.
Megjegyzések
- (Az Osmarender jelenleg csak az egyetlen "outer" taggal rendelkező sokszögeket támogatja, az "inner" tagoknak pedig egyenként zárt vonalaknak kell lenniük.)
- A sokszöget leíró címkék megadhatók a közvetlenül a kapcsolatnak és az "outer" tagoknak egyaránt. (Kompatibilitási problémák miatt azonban érdemes az outer tagot használni, mivel jelenleg az Osmarender nem jeleníti meg a "name" címkét az objektumon, ha az a kapcsolatban van megadva, a többi címkét pedig egyik renderelő sem támogatja.)
- Az "inner" tagok címke nélkül hagyhatók.
- Ha egy "inner" tag önmagában jelent valamit (pl. egy erdő lyukkal, ahol a lyuk egy tó), akkor így az "inner" tag is megcímkézhető.
- A vonalak iránya nem számít. (Kompatibilitási problémák miatt viszont mégis számít, mert jelenleg a Mapnik renderelővel csak akkor működik, ha a külső és belső vonalak ellentétes irányúak. Például a külső gyűrű órajárással megegyezően, a belső gyűrű pedig az órajárással ellentétesen halad.)
- (A "label" szerepet jelenleg egyik renderelő sem támogatja.)
Példák
Kezdő használat
|
Egy külső és egy belső gyűrűből (lyukból) álló sokszög. A gyűrűk egy-egy zárt vonalból állnak:
<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 több belső gyűrűből (lyukból) álló sokszög. A gyűrűk egy-egy zárt vonalból állnak:
<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>
|
|
Haladó használat
|
Egy külső és egy belső gyűrűből (lyukból) álló sokszög. A külső gyűrű kettő vonalból, a belső gyűrű egy zárt vonalból áll:
<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, egymástól független külső gyűrűből álló sokszög:
<relation id="1">
<tag k="type" v="multipolygon" />
<member type="way" id="1" role="outer" />
<member type="way" id="2" role="outer" />
</relation>
|
|
Kombinált használat
|
Több külső és egy-egy belső gyűrűből (lyukból) álló sokszög. Az egyik belső gyűrű több vonalból áll:
<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>
|
|
Több külső és több belső gyűrűből (lyukból) álló sokszög. A gyűrűk több vonalból állnak:
<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>
|
|
Abból adódóan, hogy több külső gyűrű is lehet egy kapcsolatban, könnyen lehet modellezni "szigeteket" egy lyukon belül:
<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>
|
|
(Folytatás hamarosan.)