Uk:Relation:connectivity

From OpenStreetMap Wiki
Jump to navigation Jump to search
connectivity
Опис
Тип звʼязку from-via-to, який дозволяє вказати, як смуги на дорозі "from" зʼєднуються зі смугами дороги "to". Show/edit corresponding data item.
Учасники

  • way - from
  • node way - via
  • way - to
Статус: затвердженийPage for proposal

Звʼязок "connectivity" – це тип звʼязку, який використовується для позначення того, як зʼєднуються смуги двох відрізків дороги. У більшості випадків визначити спосіб зʼєднання смуг можна без використання звʼязку, але є багато випадків, коли вам знадобиться такий звʼязок.

Як та коли використовувати звʼязок connectivity

Є кілька ситуацій, коли звʼязок connectivity може бути корисним.

  • Кількість смуг на автомагістралі змінюється, але теґ placement=* не дозволяє визначити як смуги попереднього відрізка зʼєднуються зі смугами наступного.
  • Напрямки проїзду перехрестя майже неможливо точно замапити використовуючи лише turn:lanes=*. Таке трапляється на складних перехрестях, що складаються з кількох перетинів, які знаходяться близько один до одного, і потрібно обрати правильну смугу, наближаючись до нього, щоб виїхати з такого перехрестя у потрібному напрямку не порушуючи правил дорожнього руху.
  • За формою дорожньої розмітки важко визначити реальну картину, як смуги на підʼїзді зʼєднуються зі смугами на виїзді з перехрестя. Наприклад смуга для повороту ліворуч, яку також можна використовувати для руху прямо чи повороту праворуч на наступному перетині.

У всіх цих випадках можна використовувати один або кілька звʼязків connectivity, кожен з яких зʼєднує смуги руху двох відрізків доріг.

Для додавання звʼязку connectivity створіть новий звʼязок з трьома членами:

  • Лінія Role from, що є початком
  • Одна точка Role via, або один чи більше відрізків Role via, що проходять через перехрестя
  • Ліня Role to, є місцем призначення в цьому випадку

В більшості випадків членами Role via будуть точки node, однак є й такі, коли потрібні лінії way. Такі випадки трапляються коли на дорозі позаду та на дорозі попереду немає розмітки. В цьому випадку використання точки з роллю Role via не є можливим, оскільки відрізок без розмітки не в змозі відповісти на питання, як зʼєднуються смуги з відрізків позаду та попереду нього між собою. В цьому разі найпростішим розвʼязанням такого завдання буде призначення відрізка без розмітки ролі Role via (як проїзду, або "довгої точки") у звʼязку connectivity, вказавши як смуги перед ним та після нього зʼєднуються одна з одною під час перетину члена Role via звʼязку.

В загальному випадку звʼязок connectivity вказує, як смуги члена Role from зʼєднуються зі смугами члена звʼязку Role to перетинаючи Role via.

Кожен такий звʼязок повинен мати два теґи:

Теґ Опис
type=connectivity Вказує на тип звʼязку, тут – "connectivity"
connectivity=* Вказує як подорожній з кожної смуги з відрізка Role from може потрапити на смуги відрізка Role to після того, як перетне члена звʼязку Role via.

Значення має відповідати наступному синтаксису [номер смуги Role from]:[номери смуг Role to розділені комами], значення для кожної смуги Role from відокремлюються одне від одного вертикальною рискою |. Кожне значення між рисками описує зʼєднання вказаної смуги з Role from зі смугами лінії Role to.

Смуга лінії Role to може братись в дужки, що означає потребу у зміні смуги для виїзду на неї.

⚠️ Відлік смуг відбувається зліва на право за напрямком руху.

Приклади

Звʼязок в OSM Зображення Теґування
relation 9496175 Звʼязок складається з членів Role from, Role via, та Role to, як на зображенні. Зверніть увагу, що ця дорога є дорогою з двостороннім рухом, і що звʼязки також можна використовувати тут.

Звʼязок повинен мати теґи type=connectivity та connectivity=2:1|3:2.

Значення теґу connectivity читається наступним чином:

Смуга 2 Role from зʼєднується зі смугою 1 Role to.

Смуга 3 Role from зʼєднується зі смугою 2 Role to.

  • Схема нумерації смуг та ж сама що й для placement=*, де 1 – це крайня ліва смуга руху у відповідному напрямку, 2 – наступна за нею смуга праворуч, й так далі. Замість номера смуги можна використати bw (both_ways) для позначення центральної смуги, рух по якій відбувається в обох напрямках. (Такі смуги є поширеними в США і призначені для зʼїзду чи виїзду на дорогу ліворуч. Наскрізний рух такими смугами заборонений.)
  • Символ | використовується як розділовий символ значень зʼєднання смуг. Кожна смуга Role from має використовувати для доступу до смуги Role to своє власне визначення, які розділяються вертикальною рискою.
relation 9680471 Звʼязок connectivity використовується в цьому випадку для того, щоб вказати які смуги використовуються для повороту праворуч, які смуги Role from зʼєднуються зі смугами Role to. Оскільки дві смуги мають дуже різні напрямки, важливо заздалегідь знати (при повороті праворуч), яку смугу використовувати.

Звʼязок позначено теґами type=connectivity та connectivity=1:(1),(2),3|2:4,(5), де

  • Смуга 1 Role from зʼєднується зі смугами 1, 2 (потрібна зміна смуги) та 3 Role to.
  • Смуга 2 Role from зʼєднується зі смугами 4 та 5 (потрібна зміна смуги) Role to.
relation 9607206 Звʼязок застосовується до правої проїжджої частини автомагістралі, щоб показати як смуга для розгону праворуч виводить трафік на дорогу, а смуга ліворуч призначена для зміни напрямку руху перед перехрестям.

Звʼязок позначено теґами type=connectivity та connectivity=1:(1),2|2:3|3:4|4:(4), де:

  • Смуга 1 Role from зʼєднується зі смугами 1 (потрібна зміна смуги) та 2 Role to.
  • Смуга 2 Role from зʼєднується зі смугою 3 Role to.
  • Смуга 3 Role from зʼєднується зі смугою 4 Role to.
  • Смуга 4 Role from зʼєднується зі смугою 4 (потрібна зміна смуги) Role to.
relation 9529781 Тут звʼязок використовується для зазначення з яких смуг Role from можна дістатись смуг Role to.

Звʼязок позначено теґами type=connectivity та connectivity=1:1|2:2,(3), де:

  • Смуга 1 Role from зʼєднується зі смугою 1 Role to.
  • Смуга 2 Role from зʼєднується зі смугами 2 та 3 (потрібна зміна смуги) Role to.

Зауважте, що смуга 3 Role to є відгалуженням смуги 2. Це означає, що вона також доступна зі смуги 2 Role from зі зміною смуги, тому беремо її у дужки.

relation 9646478

Звʼязок використовується для зазначення з яких смуг Role from можна дістатись смуг Role to. Звʼязок позначено теґами type=connectivity та connectivity=1:1|2:(2),(3),4|3:5, де:

  • Смуга 1 Role from зʼєднується зі смугою 1 Role to.
  • Смуга 2 Role from зʼєднується зі смугами 2, 3 (потрібна зміна смуги) та 4 Role to.
  • Смуга 3 Role from зʼєднується зі смугою 5 Role to. (смуга призначена для руху громадського транспорту)
relation 9526433

Звʼязок використовується для позначення того, як дорога з 3 смуг на відрізку Role from розширюється до 4 Role to. Звʼязок позначено теґами type=connectivity та connectivity=1:1|2:(2),3|3:4, де:

  • Смуга 1 Role from зʼєднується зі смугою 1 Role to.
  • Смуга 2 Role from зʼєднується зі смугами 2 (потрібна зміна смуги) та 3 Role to.
  • Смуга 3 Role from зʼєднується зі смугою 4 Role to.

Дужки вказують на те, що потрібно змінити смугу, щоб опинитися на смузі, номер якої вказано в дужках.

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

relation 9619789 Звʼязок connectivity використовується позначення того, як дорога з двох смуг стає дорогою з трьома смугами.

Звʼязок позначено теґами type=connectivity та connectivity=1:1,2|2:3, де:

  • Смуга 1 Role from зʼєднується зі смугами 1 та 2 Role to.
  • Смуга 2 Role from зʼєднується зі смугою 3 Role to.
Зелений: relation 9729600

Червоний: relation 9708721

Два звʼязки connectivity використовуються для позначення того як зʼєднуються смуги на цьому невеликому перехресті, бо turn:lanes=* може іноді бути недостатньо.

Зелений звʼязок – type=connectivity та connectivity=bw:(1), де смуги Role to можна дістатись зі смуги both_ways Role from, але для цього потрібно змінити смугу.

Червоний звʼязок – type=connectivity та connectivity=bw:bw|1:1|2:2|3:3, де всі смуги зʼєднуються одна з одною. Центральна смуга також, технічно, є зʼєднувачем, тому ми її теж включаємо.

relation 9502717 Звʼязок connectivity використовується, щоб показати як 3 смуги перетворюються на 6.

Звʼязок позначено теґами type=connectivity та connectivity=1:(1),(2),3|2:4|3:5,(6), де:

  • Смуга 1 Role from зʼєднується зі смугами 1, 2 (потрібна зміна смуги) та 3 Role to.
  • Смуга 2 Role from зʼєднується зі смугою 4 Role to.
  • Смуга 3 Role from зʼєднується зі смугами 5 та 6 (потрібна зміна смуги) Role to.
relation 9516178 Звʼязок connectivity може також використовуватись для опису того, як проїжджати через такі "скошені" перехрестя, де відрізок між прилеглими дорогами має роль Role via.

Звʼязок позначено теґами type=connectivity та connectivity=2:1, де:

  • Смуга 2 Role from зʼєднується зі смугою 1 Role to.

Зауважте, що це перехрестя геометрично можна замапити по іншому, так, щоб не використовувати звʼязок connectivity, однак це може змінити інші фактори (наприклад кути під якими приєднуються бічні дороги), що може бути небажаним.

relation 9502616 Тут звʼязок connectivity використовується для позначення того як 4 смуги Role from переходять в 5 смуг Role to. За точкою Role via діва смуга Role from стає смугою для повороту тільки ліворуч (на наступному перехресті) відрізку Role to, а три наступні смуги Role from стають смугами для руху тільки прямо (на наступному перехресті) у Role to. Це означає, що навігаційні програми не повинні виводити водіїв на ліву смугу, якщо вони не збираються потім повернути ліворуч, але зараз вони все одно роблять це.

Звʼязок позначено теґами type=connectivity та connectivity=1:2|2:3|3:4|4:5. Оскільки крайня ліва смуга Role to не зʼєднується безпосередньо з крайньої лівою смугою Role from, її не треба додавати до звʼязку.

relation 16622295 Цей незвичайний знак, який віддзеркалює відповідну дорожню розмітку, розташований на Т-перехресті поблизу іншого перехрестя. Три смуги призначені для виїзду на конкретні смуги після перетину Т-перехрестя.

Типове зʼєднання між смугами

Основний підсумок

У більшості випадків звʼязок не потрібен, оскільки зʼєднання між смугами можна припустити на основі інших факторів.

Якщо кількість смуг Role from, якою можна дістатись Role to дорівнює кількості смуг Role to, скоріш за все використання звʼязку буде зайвим ускладненням. Кількість смуг розраховується на підставі turn:lanes=* відрізку Role from.

В деяких випадках, звʼязок connectivity може використовуватись для того, щоб знехтувати смугами з turn:lanes=*, що дозволяє використовувати його для позначення стандартного зʼєднання смуг між собою.

Теґ placement=* також може використовуватись для позначення переходу одних смуг в інші. Якщо дві дороги зʼєднуються у точці, і теґи placement були додані до обох, перехід смуг однієї дороги в смуги іншої можна вирахувати на підставі цих значень.

У випадку використання placement=*, ми передбачаємо, що нові смуги (смуги, які починаються, але напряму не приєднанні до смуг відрізка Role from відповідно до значень у placement=* на Role from та Role to) є відгалуженням від наявних смуг. Це означає, що якщо дорога з двома смугами з placement=right_of:1 переходить в дорогу з 3-ма смугами placement=right_of:1, передбачається, що може матись на увазі звʼязок 1:1|2:2,(3), а не 1:1|2:2.

Теґ placement=* не повинен використовуватися для зазначення переходу між смугами, якщо у точці via зʼєднується понад дві дороги. Зазвичай це відбувається на перехрестях, розвʼязках автомагістралей або місцях, де дві дороги зливаються разом.

У випадку, коли кілька доріг зливаються в одну, можна припустити, що крайні ліві смуги дороги зʼєднуються з лівими смугами Role to, і що крайні праві смуги зʼєднуються з крайніми правими смугами Role to. Наприклад, якщо дві дороги з двома смугами кожна зливаються разом у дорогу з чотирма смугами, передбачається, що звʼязок буде 1:1|2:2 для дороги ліворуч, і 1:3|2:4 для дороги праворуч, і звʼязок тоді не потрібен.

Коли три чи більше доріг зʼєднуються в одній точці, дороги праворуч та ліворуч від Role from можуть мати певну звʼязаність з Role from, однак дороги між ними потребуватимуть явного позначення зʼєднаності смуг для уникнення двозначностей.

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

  • Кількість смуг Role from дорівнює кількості смуг у Role to.
  • Теґ placement=* може визначати звʼязаність смуг між двома відрізками по за перехрестями.
  • Кілька доріг, які зливаються разом, передбачають звʼязаність смуг ліворуч та праворуч у Role from залишаючись на своїх місцях у лінії Role to.


Псевдокод з точки зори споживачів даних

Споживачі даних повинні отримати звʼязок для смуг між двома відрізками в OSM наступним чином:

if (connectivityRelationExistsBetweenRoadsAtVia) {
    використовуємо звʼязок
} else if ((кількість смуг у лінії from) == (кількість смуг лінії to)) {
    використовуємо звичайне зʼєднання смуг 
} else if (значення placement ліній from/to дозволяють мати звʼязаність смуг AND тільки два відрізки зʼєднуються в точці via) {
    використовуємо placement ліній from/to включаючи стандартні значення placement
} else if (кілька доріг з одностороннім рухом зʼєднуються разом утворюючи єдину дорогу на виході) {
    крайня ліва смуга from переходить в крайню ліву смугу to
    крайня права смуга from переходить в крайню праву смугу to
    смуги в середині зʼєднуються з відповідним смугами to якщо їх кількість збігається
} else {
    звʼязок відсутній та звʼязаність смуг не можу бути визначена автоматично
}

Додаткові примітки

  • Члени Role via можуть бути відрізками way – дивіться цей приклад. Будь-яка кількість відрізків може мати роль Role via, але у випадках, коли ви вагаєтесь що використовувати точку чи лінію, робіть простіше – використовуйте точку.
  • Всі смуги перелічені в значені теґу turn:lanes у Role from та Role to можуть входити до складу звʼязка connectivity. Наприклад, якщо велосипедні доріжки позначені в теґу turn:lanes відрізків Role from та Role to, то вони повинні бути включені у відповідний звʼязок connectivity так, ніби вони були є звичайною смугою. Смуги для руху громадського транспорту – так само.
  • Цей звʼязок слід використовувати лише в місцях, де зʼєднаність смуг не є типовою – див. вище.
  • Смуги both_ways також підтримуються в цьому звʼязку: використовуйте значення bw замість номера смуги. Наприклад, теґ connectivity=bw:bw|1:1|2:2 говорить про те що смуги both_ways у Role from та Role to зʼєднані між собою, а смуга 1 та 2 зі смугою 1 та 2 відповідно.
  • Наступний синтаксис є помилковим – connectivity=1,2:1|3:2. Не використовуйте дві різні смуги Role from в одному значенні (1,2:1 – має смуги 1 та 2 одночасно). Використовуйте натомість – connectivity=1:1|2:1|3:2.
  • Ці звʼязки можна використовувати для доріг з двостороннім рухом без додаткових теґів. Вкажіть номер смуги відповідно до її напрямку.
  • Передбачається, що там де використовується звʼязок, на зʼєднанні відрізків не можлива зміна смуг. Наприклад, якщо лінія Role from та лінія Role to обидві мають по дві смуги – зміна смуг не передбачається, ви не можете перестрибнути з лівою смуги на праву в місці Role via.
  • Зʼєднання смуг, що діє за певної умови, або зʼєднання смуг, що змінюється в залежності від часу, мають мапитись з використанням type=connectivity та connectivity=*, де connectivity:conditional=* використовується, щоб перевизначити стандартне зʼєднання смуг, коли діє умова. Такі випадки досить рідкісні, тож вам майже не доведеться використовувати connectivity:conditional=*. Дивіться цей приклад на mapillary, щоб побачити цей модульний знак, що вказує рух по смугах, щоб перевірити, що таке можливе.
  • Цей звʼязок не вказує в якому напрямку "turn" виконується маневр з лінії from до лінії to – для цього потрібно використовувати теґ turn:lanes=* на відрізку лінії Role from, там де ця інформація знаходиться насправді. Інший варіант – це використання звʼязків type=manoeuvre чи type=maneuver, підтримка яких є в OSRM, але вони не є поширеними.
  • Якщо на відрізках Role from/Role to немає "lanes", або дорожньої розмітки, кількість смуг вважається 1 в термінах синтаксису connectivity=*, оскількі одна смуга дозволяє рух транспортних засобів.

Підтримка програмним забезпеченням

Втулок Lane Connectivity (вказаний як intersection в переліку втулків в JOSM) дозволяє візуально створювати звʼязки connectivity в JOSM. JOSM також може перевіряти їх правильність починаючи з випуску r16295.

Редактор iD має шаблон та поле для вводу звʼязків connectivity. У ньому відсутній редактор смуг, але ви з легкістю можете створити звʼязок connectivity, скориставшись редактором обмежень маневрів. Для цього виділіть точку зʼєднання двох відрізків, створіть звʼязок turn restriction з лініями Role from та Role to для потрібних вам ліній, оберіть створений звʼязок та змініть його на Connectivity, переконайтесь, що теґ restriction=* був вилучений. Такий підхід дозволяє встановити відповідні ролі Role from, Role via, та Role to членам звʼязку.

Рушій Valhalla працює зі старим, несумісним синтаксисом з цієї пропозиції. Цей тікет використовується для відстеження процесу переходу на затверджений тут синтаксис.

Дивіться також

  • Lanes – використання суфікса ":lanes"
  • lanes=* – до загальної кількості смуг не включаються велосмуги
  • Bus lanes – смуги призначені для руху громадського транспорту
  • Пропозиція щодо звʼязку connectivity