Uk:Relation:boundary

From OpenStreetMap Wiki
Jump to navigation Jump to search
Public-images-osm logo.svg boundary
Boundary.png
Опис
Використовуються для гуртування окремих відрізків меж для опису територій, а також створення їх анклавів/ексклавів. Edit or translate this description.
Група: Properties
Учасники

  • way - inner
  • way - outer
  • node - admin_centre
  • relation - subarea
Статус: де-факто

Вікідані

Зв’язки boundary=* використовуються для гуртування окремих відрізків меж для опису територій, а також створення їх анклавів/ексклавів.

Зв’язки використовуються для того, щоб:

  • Уникати використання name:left=*, name:right=*, nation:right=* та region:right=*. Їх можна замінити створивши один зв’язок для кожної країни, провінції, міста й т.д.
  • Полегшити поєднання відрізків кордону один з одним.
  • Уникати використання кількох ліній, що дублюють одна одну.
  • Уникати приєднання кордонів до об’єктів довкілля, таких як ліси та річки. Рано чи пізно вони змінюють свою форму і ці зміни також відбуваються в OSM – але, зазвичай, кордони лишаються незмінними, крім випадків коли сам кордон описується через об'єкти довкілля.

Теґи ліній

Кордони повинні мати теґи boundary=administrative та значення теґу admin_level=* для найвищого рівня кордону (у разі спільного кордону країни та області – admin_level=2). Рекомендується додавати джерело походження інформації в source=*.

Оскільки візуалізація кордонів може відбуватись як на основі даних зв’язків, так і з окремих ліній — теґування ліній не є обов’язковим. Колись це викликало помилки візуалізації (див обговорення на Github) але зараз цю проблему усунуто.

Зв’язки кордонів є корисними для використання різноманітних інструментів, але для візуалізації вони не обов’язково використовуються, ось чому рекомендується також теґувати лінії, щоб дозволити рендерам їх коректно показувати.

Застарілі теґи, подібні до name:left=*/name:right=*, можна вилучити.

Теґи зв’язків

Ключ Значення Опис
type boundary Також може бути використаний зв’язок type=multipolygon, але така практика є застарілою і перевага надається зв’язкам type=boundary (див #Реалізація в програмному забезпеченні)
boundary administrative Для адміністративних кордонів (іноді посеред ріки, чи 12 мильна зона від морського узбережжя)
land_area administrative Для берегової лінії чи кордонів на суші
name назва
admin_level Рівень в адміністративній ієрархії

Якщо у вас є адміністративна одиниця, що не має виходу до моря, вам потрібно скористатись парою теґів: boundary=administrative та land_area=administrative. Якщо land_area не збігається з адміністративним кордоном, створіть два зв’язки, один з land_area=administrative, інший з boundary=administrative.

Члени зв’язків

Елемент Роль Наявність Опис
way role:outer ! 1+ Одна чи більше ліній, що утворюють замкнений зовнішній контур або кілька контурів (лінії зовнішніх меж не мають перетинатись поміж собою)
way role:inner ? 0+ Анклави – за наявності, одна чи більше ліній що утворюють внутрішні контур(и) (лінії внутрішніх меж не мають перетинатись поміж собою)
way <empty>  0 Не використовується. Використовуйте натомість role:outer чи role:inner. Деякі інструменти можуть поводитись з елементами без ролей як з такими, що мають роль role:outer, інші намагаються визначити чи це елемент зовнішнього чи внутрішнього контурів використовуючи складні геометричні обчислення.
node role:admin_centre ? 0–1 Точка, що представляє адміністративний центр території (столиця, обласний, районний центр й т.і.), зазвичай це місто чи селище (в залежності від положення адміністративної одиниці в ієрархії адміністративного устрою, див також place=*). Ця роль призначається саме столиці (столичному місту, обласному чи районному центру), а не місцю де в ньому знаходиться законодавчий орган (будівля відповідної ради).
node role:label ? 0–1 Точка, яка показує в якому місці на мапі зазвичай потрібно показувати напис з назвою. Наприклад, "центром" міста може вважатись місце знаходження мерії, ратуші, центральної площі, або точки початку відліку відстаней, на відміну від центроїду міста визначеного геометрично по межах міста. Додавання точки для розміщення напису на мапі може бути також корисне, коли територія має анклави, або значні вигини меж, коли типово визначений центроїд для розміщення назви може опинитись по за її межами. Зверніть увагу, що різні стилі мап вимагають різного розміщення назв (через те, що різні стилі роблять наголос на різних елементах мапи, можуть використовувати підписи різними мовами, назви можуть показуватись різними стилями та бажано, щоб вони не перекривали важливі об’єкти на мапі – так, наприклад, на мапі назву прибережного міста краще показувати на водній поверхні; мапи що показують водні маршрути воліли б мати назву міст на суходолі). В результати, розташування точки для показу назви має бути оптимізована під різноманітні стилі, що їх одним зі способів мапінгу під рендер.

Точка з роллю role:label може мати ключ place=* зі значенням відповідно до переліку місць, що є суб’єктами адміністративного устрою (наприклад place=country; place=state; place=county й так далі.) за наявності. Наприклад – Франція.

relation

role:subarea ? 0+ Посилання на адміністративні одиниці нижчого рівня (на зв'язки їх меж), які знаходяться в межах описуємого об’єкта адміністративного устрою.

Зауваження: цей елемент є необов’язковими, суперечливими та надлишковими (посилання на вкладені рівні можуть також знаходитись за геометричними запитами на вкладення). Також посилання на інші зв’язки робить редагування складнішим у деяких випадках.

Примітка: Лінії, що утворюють адміністративну межу не обов’язково мають бути замкненими, але разом повинні утворювати замкнений контур. Для незамкнених лінійних кордонів дивіться Proposal:Relation boundary segment.

Приклади

Приклади теґування
Enclave.png
<relation id="1">
  <tag k="type" v="boundary" />
  <tag k="boundary" v="administrative" />
  <tag k="land_area" v="administrative" />
  <tag k="admin_level" v="2" />
  <tag k="name" v="Країна A, світло-зеленого кольору, не включає територію C" />
  <member type="way" id="AB" role="outer" />
  <member type="way" id="AC" role="inner" />
</relation>
<relation id="2">
  <tag k="type" v="boundary" />
  <tag k="boundary" v="administrative" />
  <tag k="land_area" v="administrative" />
  <tag k="admin_level" v="2" />
  <tag k="name" v="Країна B, темно-зеленого кольору, разом з територією C" />
  <member type="way" id="AB" role="outer" />
  <member type="way" id="AC" role="outer" />
</relation>
C є анклавом для A та ексклавом для B.
Exclave.png
<relation id="1">
  <tag k="type" v="boundary" />
  <tag k="boundary" v="administrative" />
  <tag k="land_area" v="administrative" />
  <tag k="admin_level" v="2" />
  <tag k="name" v="Країна A, світло-зеленого кольору" />
  <member type="way" id="AB" role="outer" />
  <member type="way" id="AC1" role="outer" />
  <member type="way" id="AD" role="outer" />
  <member type="way" id="AC2" role="outer" />
</relation>
<relation id="2">
  <tag k="type" v="boundary" />
  <tag k="boundary" v="administrative" />
  <tag k="land_area" v="administrative" />
  <tag k="admin_level" v="2" />
  <tag k="name" v="Країна B, темно-зеленого кольору, разом з територією D" />
  <member type="way" id="AB" role="outer" />
  <member type="way" id="BC" role="outer" />
  <member type="way" id="AD" role="outer" />
  <member type="way" id="CD" role="outer" />
</relation>
<relation id="3">
  <tag k="type" v="boundary" />
  <tag k="boundary" v="administrative" />
  <tag k="land_area" v="administrative" />
  <tag k="admin_level" v="2" />
  <tag k="name" v="Країна C, фіолетового кольору" />
  <member type="way" id="AC1" role="outer" />
  <member type="way" id="CD" role="outer" />
  <member type="way" id="AC2" role="outer" />
  <member type="way" id="BC" role="outer" />
</relation>
D — ексклав B, але не є анклавом A, так як має спільний кордон з C

Baarle Nassau гарний приклад застосування зв’язків цього типу. Він має ексклави в анклавах. Ексклави в анклавах в Бельгії потрібно додавати до зв’язку Нідерландів, голландської провінції Noord-Brabant та кордону села.

Більше прикладів!

Реалізація в програмному забезпеченні

Програмне забезпечення повинне підтримувати всі застаріли теґи, доки вони не зникнуть з бази даних:

  • type=multipolygon разом з type=boundary (адміністративні кордони можуть визначатись через уточнюючий теґ boundary=* )
  • role=(blank) для role=outer (використання елементів без ролі є застарілим також і для мультиполігонів, але типово на увазі мається роль outer)

Інструменти

Де подивитись