Uk:Лінія

From OpenStreetMap Wiki
Jump to navigation Jump to search
Mf way.svg

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

Станом на липень 2022 OpenStreetMap містить більше ніж 823 мільйони ліній.

Типи ліній

Відкрита лінія лінія

Відкрита лінія — лінія, що описує лінійні об’єкти, у яких початкова та кінцева точки не збігаються. Багато доріг, водних потоків, залізничних колій є відкритими лініями, у яких точка початку та точка кінця знаходяться в різних місцях;

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

Замкнена лінія замкнена лінія

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

Наступні замкнені лінії інтерпретуються як замкнені полілінії:

  • highway=* — Замкнена лінія використовується для позначення руху по колу, кільцевих пішохідних доріжок.
  • barrier=* — Замкнена лінія може позначати огорожу, наприклад тин чи стіну, які повністю оточують маєток.

Замкненні лінії, позначені теґом area=yes мають завжди інтерпретуватись як полігони (але в більшості випадків цей теґ не потрібен, див. розділ нижче).

В запитах Overpass QL використовується параметр/оператор is_closed дивOverpass_QL#Geometry_Related_Operators та Overpass_API/Overpass_API_by_Example#Limit_results_to_areas_only

Полігон полігон

Основна стаття: Полігон

Полігон — ділянка місцевості обмежена замкненою лінією. Для більшості замкнених ліній, вважається що вони є полігонами, навіть без застосування теґу area=yes (дивись вище про деякі винятки). Приклад полігонів позначених замкненими лініями:

  • leisure=park — позначає периметр парку.
  • amenity=school — позначає периметр території школи.

До теґів, які можуть використовуватись для позначення полілінй потрібно додавати теґ area=yes, якщо потрібно позначити ділянку місцевості. Наприклад:

  • highway=pedestrian + area=yes, для позначення пішохідного майдану. Для уникнення помилок в маршрутизації замість такого варіанту краще використовувати area:highway=pedestrian.

Полігони також можуть бути описані за допомогою однієї чи більше ліній, які належать до мультиполігону, який є зв’язком.

Відмінності між представленням лінійних та полігональних об'єктів

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

  • дороги в реальному житті крім напрямку мають й таку характеристику, як ширина, яка може плавно змінюватись на різних ділянках дороги, але лінійне представлення не має геометричного представлення у точках node зміни ширини натомість можливо лише застосування теґу із зазначенням середньої ширини до всієї лінії. Тому при використанні лінійного представлення дороги мапер має вибрати центральну лінію, для якої можуть бути різні варіанти, особливо коли сам об’єкт є асиметричним у своєму поперечному перерізі (варіанти: центр проїжджої частини чи центр проїзної частини + тротуар або розташування дорожньої розмітки на проїжджій частині).
  • Іншим прикладом специфічних властивостей лінійного представлення є те, що на перетині гравійної доріжки з асфальтованою дорогою, де сам перехід є асфальтовим, лінійне представлення гравійної доріжки продовжується над перехрестям, ніби перехід може бути гравійним так само.
  • Лінійні представлення доріг також мають тенденцію залишатись в OpenStreetMap, тоді як у реальному світі дорога на короткий час фізично перестає існувати як окрема сутність і залишається лише як функціональний зв’язок, наприклад дорога, що перетинає потік у брод через берег річки без додаткової інфраструктури або каменів, де простір між камінням може бути більшим, ніж самі камені.

Полігональне представлення area натомість дозволяє точно показати форму об'єкта, місця в яких контур змінюється задаються положенням точок node і таким чином точно показують форму дорожнього полотна. Однак там де закінчується полігональне представлення дороги (приклад з бродом) лінійне представлення дозволяє показати продовження шляху через камені.

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

Комбінації замкнених поліліній та полігонів

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

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

  • highway=primary + junction=roundabout, обидва теґи інтерпретують позначений об’єкт як замкнену лінію, а
  • landuse=grass, інтерпретується як полігон обмежений цією лінією.

Однак, краще використовувати два окремі об'єкти, один для позначення газону, а інший для позначення кругового руху.

Приклади

Вулиця, як ліній об’єкт

Звичайна вулиця з одностороннім рухом може бути позначена, як highway=residential + name=Clipstone Street + oneway=yes

  <way id="5090250" visible="true" timestamp="2009-01-19T19:07:25Z" version="8" changeset="816806" user="Blumpsy" uid="64226">
    <nd ref="822403"/>
    <nd ref="21533912"/>
    <nd ref="821601"/>
    <nd ref="21533910"/>
    <nd ref="135791608"/>
    <nd ref="333725784"/>
    <nd ref="333725781"/>
    <nd ref="333725774"/>
    <nd ref="333725776"/>
    <nd ref="823771"/>
    <tag k="highway" v="residential"/>
    <tag k="name" v="Clipstone Street"/>
    <tag k="oneway" v="yes"/>
  </way>

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

Примітки щодо обчислення відстаней

В OpenStreetMap лінія визначається послідовністю точок. Лінія складається з відрізків, що їх утворюють пари точок. Кожен відрізок представляє найкоротшу відстань між цими двома токами (без врахування впливу рельєфу), тобто використовується  Геодезична лінія на  поверхні Землі. Форма землі може бути сферою (як у Web Mercator; див. Сферична тригонометрія) або еліпсоїдом для більшої точності (див. Геодезичні лінії на еліпсоїді). Основним ефектом для кінцевого користувача та програміста буде:

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

Фактичні точки OSM мають бути досить близько одна до одної, щоб не викликати таких хвилювань, хоча вимірювання площі – це інша історія. Більшість алгоритмів можна знайти у втулку JOSM – JOSM/Plugins/measurement.