Uk:Proposed features/Street area

From OpenStreetMap Wiki
Jump to navigation Jump to search
Street area
Proposal status: Abandoned (inactive)
Proposed by: Marek_kleciak
Tagging: area:highway=*
Applies to: area node
Definition: позначення доріг як полігонів та мапіг додаткових деталей
Statistics:

Draft started: 2011-05-13
RFC start: 2015-08-15

Вступ

Вулиці повинні бути представлені у вигляді:

1. Поліліній – для прокладання маршрутів.

2. Полігонів – для візуалізації та вдосконаленого прокладання маршрутів через полігони (поточний стандарт у комп’ютерних іграх.)

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


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

MarekExampleStreetAreaInOSM.jpg

Загальний підхід для розрахунку поверхі доріг - графічне відображення середніх ліній доріг у різних рендерерах: ширина залежить від катергорії дороги. Якщо ширина дороги змінюється, особливо поблизу складних перехресть, така глобальна залежність не може точно відображати реальність:

StreetsGeneralisedLevel.JPG

Теґування

Поточна практика highway=* + area=yes може бути розширена до креслення площини вулиці area з теґами:

Ключ Значення Елементи Коментар Фото
area:highway value area Значення такі ж, як значення теґу highway=* у лінії цієї дороги; значення, відсортовані у порядку зменшення важливості:

motorway, trunk, primary, secondary, tertiary, unclassified, residential, road, living_street, pedestrian, raceway, motorway_link, trunk_link, primary_link, secondary_link, tertiary_link, service, cycleway, footway, track, bridleway, path, construction, proposed, steps, bus_guideway, escape

Подробиці
area:highway road area Для доріг, тип яких невідомий; подібно до highway=road
Road.png
junction=* yes

roundabout y_junction

area Ділянки перехресть: area:highway=значення теґу highway дороги з найбільшим пріорітетом з junction=yes/roundabout/y_junction
area:highway traffic_island area Додатково surface=* або, наприклад, landuse=grass
area:highway bus_stop area Ділянки зупинок тільки для автобусів
Průmyslová str3, Prague Štěrboholy.jpg
area:highway bus area Смуги тільки для автобусів
Buslane 2.jpg
area:highway taxi_stop area Ділянки зупинок тільки для таксі
Hong Kong Taxi - 1-12-2006 - Shatin Taxi Stand.jpg
area:highway emergency area Острівці безпеци, як на цьому фото праворуч

Під час рендерінгу смуг всередині смугастих ділянок (острівців безпеки) area:highway=emergency рендерери повинні враховувати будь-який теґ direction=* на цих ділянках. Дозволеними значеннями є кути і сторони світу

Zeichen 298 - Sperrflächen, StVO 1970.svg
area:highway shoulder area Узбіччя, наприклад на автомагістралях. Дивись  Узбіччя або пропозицію
area:highway steps area Серединна лінія сходів: highway=steps, для рендерінгу напрямку: incline=up або incline=down
Ділянки смуг (наприклад, area:highway=bus і area:highway=shoulder) повинні бути всередині полігону дороги (area:highway=*), до якої вони належать. Кожна з паралельних доріг (наприклад, автошляхи з роздільними проїжджими частинами, велодоріжки (якщо намальовані окремими лініями)) повинна мати свою власну поверхню (area:highway=*)
area:highway pedestrian area Може використовуватись тільки з лініями highway=pedestrian, комбінація з area=yes некорректна

Див. також #Примітка щодо area=yes

area:highway footway area Ділянки тротуарів; подібно до highway=footway
Bicycle barrier 2.JPG
area:highway cycleway area Ділянки велодоріжок; подібно до highway=cycleway
Bikeway, Bicycle path - sign C13 marked beginning of bikeway, Poland, Sosnowiec.jpg
area:highway escape area Подібно до highway=escape
A7-Notbremsweg.jpg
area:highway passing_place area Подібно до highway=passing_place
Ausweichstelle.jpg
area:highway turning_circle area Подібно до highway=turning_circle
Turning circle.jpg
area:highway turning_loop area Подібно до highway=turning_loop
Turning circle - geograph.org.uk - 991834.jpg
man_made bridge area Для поверхонь мостів використовуйте, будь ласка, існуючу схему теґування: man_made=bridge
amenity parking_space area Місця для паркування вздовж вулиці
Переходи
highway footway way з footway=crossing може використовуватись для рендерінгу пішохідних переходів

Приклад.

Zebra-crossing sm.jpg
footway crossing area з direction=* може використовуватись для рендерінгу пішохідних переходів

Приклад.

Zebra-crossing sm.jpg
highway cycleway way з cycleway=crossing може використовуватись для рендерінгу велосипедних переходів

Приклад.

Корисно також збирати інформацію про тип дороги для area:highway=footway/cycleway, тому що ця інформація може використовуватись для рендерінгу.

Що, безумовно, не обов'язково? Назва вулиці (name=*), кількість смуг для руху, поверхня, проходимість, максимальна швидкість, адреса й т.д. Ці параметри є на лінії з теґом highway=* і можуть бути взяті звідти.

Примітка щодо area=yes

Не використовуйте area:highway=* для площ і подібних об'єктів. Вони описуються теґами highway=* та area=yes, а комбінація area:highway=* з area=yes є некорректною. Використовуйте area:highway=* тільки для того, щоб накреслити площину лінійної вулиці, де лінія позначена теґом highway=* без area=yes. Це стосується найчастіше, але не виключно, highway=pedestrian і highway=footway.

Примітка щодо name=*

Не використовуйте name=* з area:highway=*, тому що це призводить до відображення непотрібних надписів. Назви зазначаються на вулицях.

Докладний опис

Загальний підхід

Вулиці представлені тільки полілініями (серединними лініями вулиці).

StreetsLogicalLevel.JPG

Мінуси:

  • Поверхня дороги не може бути коректно показана на мапі.
  • Правила рендерінгу можуть покладатись тільки на припущення про ширину дороги width=*, lanes=*.
  • Повинні застосовуватись узагальнення. Розширене теґування є складністю для початківців.
  • Помилки із неправильним вводом ширини видно після рендерінгу.
  • Рендерінг на докладний масштабах незадовільний.

Вулиці, як полігони

Принцип водопроводу

MarekPlumberPrinciple.jpg Поверхня ділиться на "звичайні" частки вулиць (труби) і на частки "перехресть" (муфти).

Цей принцип повинен застосуватись, коли 3 чи більше полілінії зустрічаються в одній точці (перехрестя).

Використання "Принципу водопроводу" для мапінгу є головною відмінністю від подібної пропозиції:

http://wiki.openstreetmap.org/wiki/Proposed_features/area:highway

У випадку перетину двох або більше доріг з різними типами, наприклад третинної та місцевої, area:highway=* отримує значення теґу highway=* найбільш пріорітетної дороги. До нього додається теґ junction=yes.

Винятки

Виділення певних перехресть є необов’язковим. Наприклад, в межах міст: перетини службових доріг (highway=service) з дорогами інших типів. Так само і за межами міст – перетини highway=track з іншими дорогами (наприклад, highway=tertiary) й тому подібне.

Причини для використання "принципу водопроводу"

Більш гнучкі можливості рендерінгу, особливо для:

  • Пішохідної навігації.
  • Пришвидшення 3D рендерінгу. Розділення великих полігонів на менші частини = менше великих елементів в кеші = швидша візуалізація в застосунках в реальному часі в 3D.
  • Більш детальні мапи: навігація зі справжнім виглядом перехресть.
  • Оптимізація для 3d моделей ландшафту використовуючи ділянки перехресть. Перехрестя все ще є горизонтальними.

(Полігони перехресть у більшості випадків є пласкими та горизонтальними. Цей факт може використовуватись для більш реалістичної 3D візуалізації).

  • Кращі голосові підказки у навігаційних системах. Виділення територій перехресть допомагає зменшити кількість голосових повідомлень.

Рендерінг мостів

(Див також man_made=bridge)

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

F3DBbridgeOldApproach.JPG

Поточний підхід (малюнок вище): багато окремих ліній, що є вимогою для вірного прокладання маршрутів. "Неправильний" вигляд на докладних рівнях масштабування.

F3DBbridgeTopViev.JPG

Підхід з полігонами: Показ справжнього вигляду мосту на докладних рівнях масштабування. Також можливе використання як частини для 3D конструювання мосту. Дивіться: [1]

Міст є полігоном, який включає ділянки інших шляхів:

MarekDrawingOfBridgeAsAreaHighway.jpg

Це дозволить в майбутньому використовувати полігони мостів, man_made=bridge для потреб 3D рендерінгу.

Приклад

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

  • проїжджа частина
  • перехресття (проїжджа частина)
  • розділові ділянки (рух не можливий)
  • розділові ділянки (острівки безпеки - рух фізично можливий, але заборонений)
  • спеціальні ділянки (для стоянки)
  • спеціальні ділянки (для таксі, автобусів)

MarekStreetsasfacesWithPointsLegend2.jpg

Смугаста ділянка з direction=45

Рендерінг острівців безпеки

Під час рендерінгу смуг всередині смугастих ділянок (острівців безпеки area:highway=emergency)рендерери повинні враховувати будь-який теґ direction=* на цих ділянках. Дозволеними значеннями є кути і сторони світу.

Використання принципу водопроводу для оптимізації рендерінгу

Точки логічного з’єднання

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

StreetsasfacesconnectionModified.jpg

Точки, розташовані на осьовій лінії вулиці, далі по тексту К (на малюнку вище – лінії позначені червоним), також належать полігону area:highway=* та позначаються теґом crossing:end=yes у випадках, якщо вони не мають інших теґів, наприклад highway=stop.

Як позначати на мапі

Більше прикладів тут.

Стисло про рендерінг смуг

Приклад:

K1:

crossing: yes

left:solid_line

right:solid_line


K2:

crossing: yes

left:none

right:solid_line

Позначення left: та right: або none означає, зо ліворуч та праворуч від точки K для рендерінгу використовується той самий колір/текстуру що й для вулиці. Тобто лінії розмітки не показуються для цих векторів.

Kpoints2.jpg

Припускаючи що кількість смуг для доріг (tertiary, secondary, primary, residential і т.д.) між точками K1 та K2 є відомою, дорога може бути зображена шляхом апроксимації її контуру для показу смуг. Ось приклад для дороги з 6-ти смуг

Зауважте: Орієнтація "червоної лінії" праворуч та ліворуч від точки "K" може не дорівнювати 90°. Напрямок показує справжнє положення СТОП-лінії на поверхні дороги.

Kpoints3.jpg

Зелені лінії не показуються при рендерінгу дороги: вони використовуються лише для відтворення форми смуг та ілюструють принцип відтворення!

Цей приклад показує, чому так важливо розділяти вулиці, особливо Y-подібні перехрестя на окремі ділянки. "Територія перехресть" – місце де не відтворюються лінії розмітки, тому що дві чи більше лінії проходять через ту саму ділянку.

Розділення доріг на ділянки

Легенда:

  • блакитна точка = Точка з’єднання ліній
  • чорна точка = Точка логічного з’єднання полігонів - точка "K" (обов’язкова!)
  • блакитна лінія = серединна лінія дороги
  • червона лінія = замкнений контур вулиці чи перехрестя

MarekJunctionLegend.jpg

O та T - перехрестя:

MarekOandTjunction.jpg

Y - перехрестя з острівцем безпеки:

MarekCrossingYjunction.jpg

X - перехрестя:

MarekXjunction.jpg

Перехрестя доріг з роздільними смугами руху з газоном посередині:

MarekdDoubleXjunctionWithGrassInTheMiddle.jpg

Необхідні обмеження

  • Дві суміжні ділянки доріг повинні мати принаймі одну спільну точку K
  • Осьова лінія вулиці повинна мати принаймі дві спільних з контуром area:highway=* точки K

Теґування точки K

Точку К часто пов’язують з highway=stop або highway=traffic_signals. Якщо в цьому місті знаходиться СТОП-лінія: highway=traffic_signals + traffic_signals=stop_line

  • Якщо в цьому місці немає знаку СТОП або світлофору але є СТОП-лінія використовуйте:

road_marking=stop_line + stop_line=yes/solid_line/giveway, наприклад stop_line=giveway

  • Якщо немає СТОП-лінії: точка К лишається без теґів
Теґ Використовується Тип Значення Опис
highway=stop обов’язково node yes Точка, в який починається або закінчується перехрестя.
left=* можливо node none, solid_line, giveway_line, інші, в залежності від місцевих вимог, значення Тип лінії, що міститься на межі перехрестя ліворуч від серединної лінії на вулиці, дивлячись у бік перехрестя
right=* можливо node none, solid_line, giveway_line, інші, в залежності від місцевих вимог, значення Тип лінії, що міститься на межі перехрестя праворуч від серединної лінії на вулиці, дивлячись у бік перехрестя

Теґування пішохідних переходів

highway=footway

footway=crossing

необов’язково bicycle=yes

Примітка: тільки пішохідні переходи в середині area:highway=* повині позначатись додатковим тегом footway=crossing

Типи ліній, що будуть показані відповідно до теґування точки K

MarekLineSolid.jpg

  • stop_line=giveway - стоп лінія разом із розміткою "дати дорогу" (в залежності від країни, наприклад так у Польщі)

StopAndGiveWayLine.JPG

Примітка: Деякі країни мають особливі правила, щодо розмітки перехресть (напр. колір). Такі правила можуть бути додані до переліку вище та використовуватись для більш точного показу на мапі.

Точки праворуч та ліворуч вид точки K на контурі дороги ПОВИННІ бути елементами зовнішнього контуру.

П: Чому треба ставити спільну точку K для лінії і контуру дороги? Чи вона буде визначати, що лінія буде показана під відповідним кутом?

В: Доволі часто на перетинах доріг, стоп лінія креслиться не під прямим кутом, тож у такий спосіб можна отримати вірну візуалізацію цієї лінії на мапі.

Розмітка смуг вздовж дороги

Нанесення смуг описується у: [Motorway_with_links_and_destinations]

Приклади:

  • double_line - подвійна суцільна лінія

MarekLineDoubleSolid.jpg

  • solid_dashed_line - суцільна разом із пунктирною лінії (аналогічно в дзеркальному вигляді)

MarekLineSolidDashed.jpg

  • dashed_line - пунктирна лінія

MarekLineDashed.jpg

Рендерінг

Спираючись на відому кількістю смуг, що вказані у властивостях полілінії, інформацію про контур дороги (може бути зазначена відповідними теґами, напр: outline=solid line, outline=dashed line) ми можемо отримати реалістичний вигляд поверхні дороги разом із розміткою під час рендерінгу.

Передумовою для цього є відповідне позначення точки K. Таке позначення буде припиняти креслення контуру між точками K-1 та K+1 та замінювати його одим чи оома теґами, що призначені точці K.

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

Простий приклад

RenderingMockupPlumberPrinciple.JPG Контури RenderingMockupPlumberPrincipleKtagging.JPG теґування: точка K

з червоними лініями з обох боків = solid_line позначає highway=stop, точка K із зеленими лініями з обох боків = коли їй не призначено жодного теґу.

RenderingMockupPlumberPrincipleRendered.JPG приклад рендерінгу

Більш складний приклад

MarekMockupHamburgBurgstrasse.jpg

Останній рендерінг тієї ж самої ділянки (Hamburg Burgstrasse)

MarekExampleBurgstraße.jpg

Зверніть увагу: точка К на прикладі вище має однакові значення для лівого і правого боків, за винятком stop-точки на T-подібному перехресті праворуч знизу або зліва вгорі.

Ця точка повинна позначатись right=solid_line. left=none не є обов’язковим,

погляд з іншого боку: мені відомо про такий випадок, і це не помилка, тут нічого не пропущено.

Ділянки area:highway=traffic_island додатково позначаються pattern=hatched.

Теґування точки K. Коментарі

Немає теґування для Left: чи Right:: відсутність особливостей розмітки праворуч/ліворуч від K. Поверхні мають таке ж забарвлення, як і інші ділянки дороги.

Рендерінг мап, створених mkgmap (для Garmin)

Приклад стилю полігонів mkgmap для Openfietsmap (cycling map):

area:highway=bridge | man_made=bridge | building=bridge [0x0e default_name="bridge" resolution 23]

area:highway=* [0x0e resolution 23]

Area highway OFM.jpg

Keizer Traianusplein, Nijmegen

Див. також


area:highway=* landuse=highway

Приклади рендерігу, що вже існують

Проблеми генералізації

Ситуація на малюнку не може бути вирішена, тільки використовуючи задану ширину дороги. MarekCrossingDillema1.jpg