Uk:Зв’язки
Зв’язок — є одним із базових елементів даних, який містить як мінімум один теґ type=*, а також впорядкований перелік, який складається з однієї чи більше точок, ліній та/або зв’язків, які є членами зв’язка, які використовуються для позначення логічних чи географічних взаємостосунків між різними елементами. Член зв’язку може, необов’язково, мати роль, що визначає місце яке він відіграє у зв’язку.
Важливо: зв’язок обов’язково повинен мати членів, які представляють геометрію (одну точку чи лінію) або, мати в членах інший зв’язок що відповідає цьому правилу, або бути членом іншого зв’язка, що відповідає цьому правилу. Іншими словами, якщо ви розглядаєте зв’язок з усіма його прямими нащадками (його дітьми, дітьми цих дітей, дітьми дітей цих дітей і так далі) і всіма його прямими батьками (батьками, батьками ці батьки і так далі), принаймні один із цих об’єктів повинен мати елементи геометрії. Якщо ні (це означає, що є лише зв’язки зв’язків), усі ці зв’язки не будуть мати жодного просторового сенсу, оскільки вони не прив’язані ні до чого конкретного на мапі.
Наприклад, якщо ви використовуєте iD і у вас є зв’язок A з одним членом = зв’язок B, з одним членом = точка, якщо ви видалите точку, у цих об’єктах більше не буде елемента геометрії, і, щоб запобігти внесенню неправильних даних в OSM, iD автоматично вилучить зв’язки A і B.
Використання
Зв’язки використовуються для моделювання логічних (і, як правило, локальних) або географічних стосунків між об’єктами.
Вони не призначені для зберігання вільно пов’язаних, але розташованих на значній території елементів. Було б неправильним, наприклад, використовувати зв’язки для гуртування 'всіх пішохідних маршрутів в Східній Англії'
Розмір
Рекомендується включати до одного зв’язку не більше 300 членів. Чим більше членів має один зв’язок, тим важче впоратись з ним, легко зламати, викликати конфлікти, і як показує досвід вони споживають значний обсяг ресурсів сервера та бази даних.
Якщо вам доводиться працювати зі зв’язками з великою кількістю членів, створіть кілька окремих зв’язків та об’єднайте їх у Super-Relation.
Ролі
Роль — необов’язкове текстове поле, в якому зазначається функція члена зв’язку.
Наприклад, у мультиполігоні, ролі inner та outer використовуються, щоб вказати, яка з ліній позначає внутрішні та зовнішні контури мультиполігону.
У зв’язку водних шляхів, що містить лінії річища waterway=river, можливо разом з притоками, для створення річкової системи, роль maine_stream на лінії буде означати основне річище, side_stream – відгалуження.
Типи зв’язків
Мультиполгони
Мультиполігони є одним зі способів мапінгу об’єктів в OpenStreetMap, що займають певну площу. В той час як більшість таких об’єктів представлено звичайною замкненою лінією , будь-який з них може бути замаплений у вигляді мультиполігону. Без цього не обійтись, коли вам потрібно зробити отвори в полігоні (виключити певну частину з його складу), або якщо в об’єкта є ексклави, які потрібно включити до його складу, а також якщо контур об’єкта складається з більше ніж 2000 точок.
У зв’язку мультиполігона, ролі inner та outer використовуються для зазначення того, чи є лінія внутрішнім чи зовнішнім контуром території полігону. Наприклад, внутрішня лінія може означати острів на озері.
Наприклад, озеро та острів в ньому може збути замаплено як полігон, що складається з двох ліній (лінії без теґів), зовнішній контур озера буде мати роль "outer", а лінія контуру острова матиме роль "inner" (тому, що вона одночасно є внутрішнім контуром озера). Сам острів можна позначити чимось на кшталт natural=bare_rock – скеля посеред озера.
Автобусний маршрут
Для позначення автобусного маршруту використовується зв’язок типу type=route, з теґами route=bus, ref=* та operator=*, from=*, to=*.
На початку, у зв’язку автобусного маршруту знаходяться точки зупинок, вони впорядковуються за ходом руху автобуса. Потім, зазначаються дороги, по яких проходить автобусний маршрут. У схемі мапінгу маршрутів громадського транспорту PTv2, відрізки доріг впорядковуються у послідовності за якою проходить маршрут,так само як і зупинки. Відрізки доріг не мають ролей. Вони мають утворити ланцюг без розривів від початкової до кінцевої зупинки (в JOSM легко це побачити в редакторі зв’язків).
Інші приклади
- Relation:boundary – застосовується виключно для опису адміністративних кордонів.
- Relation:restriction – описують обмеження маневрів, такі як “розворот заборонено”, “рух тільки прямо” й тому подібне
- Див також Types of relation та Category:Relations
Інструменти
- JOSM/Advanced_editing#Relations: Робота зі зв’язками в JOSM
- Potlatch 2/relations: Робота зі зв’язками в Potlatch
- Перегляд зв’язку: Example id=11
- Перегляд історії змін зв’язку: Example id=11
- Показ зв’язку на мапі: Example id=11
- OSM Relation Analyzer (http://ra.osmsurround.org) – пошук зв’язку за навою або для його аналізу, напр. пошук розривів в маршрутах
- Relation Check
- Relation Diff
- Relation lists
- Візуалізація зв’язків на мапі
- Rel2gpx
- Geofabrik - OSM Inspector - PTv2 помилки у зв’язках маршрутів (територія Tokyo) – для перевірки на наявність пропусків чи невірного порядку елементів у зв’язках PTv2
Навігація з використанням зв’язків
OSRM та Valhalla можуть використовувати певні зв’язки маршрутів автомобільних доріг для уточнення навігаційних інструкцій коли маршрут містить обидва напрямки руху (США, Мексика, Південна Африка, Канада, Венесуела).
Наприклад, деякі веломаршрутизатори віддають перевагу маршрутам по дорогах із наявними велосипедними маршрутами (як індикатор зручності використання велосипеда). Також застосунки можуть використовувати маршрути для паломників (pilgrimage=*), або, загалом, намагатися прокласти маршрут уздовж мінімальної кількості пронумерованих маршрутів.
OSM XML
- Основна стаття: OSM XML
<relation id="13092746" visible="true" version="7" changeset="118825758" timestamp="2022-03-23T15:05:48Z" user="" uid=""> <member type="node" ref="5690770815" role="stop"/> <member type="node" ref="5751940550" role="stop"/> ... <member type="node" ref="1764649495" role="stop"/> <member type="way" ref="96562914" role=""/> ... <member type="way" ref="928474550" role=""/> <tag k="from" v="Encre"/> <tag k="name" v="9-Montagnes de Guyane"/> <tag k="network" v="Agglo'bus"/> <tag k="not:network:wikidata" v="Q3537943"/> <tag k="operator" v="CACL"/> <tag k="ref" v="9"/> <tag k="route" v="bus"/> <tag k="source" v="https://www.cacl-guyane.fr/wp-content/uploads/2021/01/PLAN-RESEAU-URBAIN-AGGLO-BUS-1.pdf"/> <tag k="to" v="Lycée Balata"/> <tag k="type" v="route"/> <tag k="website" v="https://www.cacl-guyane.fr/lagglo-au-quotidien/se-deplacer/transport-urbain-2/"/> </relation>
Див. також
|