Uk:Один об’єкт — один елемент в OSM

From OpenStreetMap Wiki
Jump to navigation Jump to search

Один об’єкт — один елемент в OSM — одна з рекомендованих практик. Це означає, що один об’єкт реального світу треба мапити тільки одним елементом OSM.

Об’єкти мапи

Загальні правила

Елемент OSM повинен представляти тільки один об’єкт реального світу:

  • Об’єкт, який містить будівлі на території (наприклад: школа), треба мапити як земельну ділянку окреслену полігоном з полігонами будівель в середині. Теґи потрібно додавати до полігону земельної ділянки, а не будівлям, попри те що будівлі можуть бути різними (будівлі на території школи можна вважати частиною школи з точки зору топологічної вкладеності даних).
  • Об’єкт, що є будівлею, форма і положення якого відомі, повинен бути полігоном з відповідними теґами.
  • Об’єкт, положення якого відомо, але форма якого або невідома, або не має значення, має бути точковим об’єктом з відповідними теґами.
  • Об’єкт, який складається з інших елементів, зазвичай позначається за допомогою зв’язку. Знов таки, теґи такого об’єкта потрібно додавати до зв’язку, а не до членів зв’язку. Якщо теґи не розповсюджуються на всіх членів зв’язку – в такому випадку кожен член позначається власними теґами. Наприклад: relation:route використовується для позначення туристичних маршрутів, маршрутів громадського транспорту, або інших маршрутів, які проходять по лініях позначених теґами highway=* або railway=*, для залізниць.

Один об’єкт – один елемент OSM

В ідеалі, кожен елемент OSM чи об’єкт має представляти лише один об’єкт реального світу та позначатись відповідними основними теґами.

  • Додаткові атрибути або властивості об’єкта мають додаватись до того ж самого елемента, що містить основні теґи об’єкта.
  • Наприклад, ви можете використовувати основний теґ leisure=picnic_site для позначення місця для пікніка разом з додатковим теґом drinking_water=yes, замість того щоб використовувати інший основний теґ amenity=drinking_water для позначення місця з питною водою. Якщо ви бажаєте докладно замапити положення місця з питною водою на місці для пікніка, скористайтесь для цього окремою точкою, якій і додайте основний теґ amenity=drinking_water.

Приклади невдалих випадків

  • Полігон будівлі, що представляє об’єкт певного призначення, з точковим об’єктом в середині, що використовують ті ж самі теґи та представляють один й той же об’єкт реального світу. Перенесіть теґи з точки на будівлю і вилучіть точку.
  • Полігон, що представляє територію, на якій знаходиться один полігон будівлі, що позначені одними й тими ж теґами. Перенесіть теґи на зовнішній об’єкт, лишивши на полігоні будівлі тільки теґи, що стосуються лише будівлі.
  • Замкнена лінія, що містить теґи двох об’єктів, один з яких є зазвичай лінійним об’єктом, наприклад, жива огорожа позначена теґом barrier=hedge, та інший, що являє собою територію, наприклад, територію школи amenity=school. В такому випадку виникає певна неоднозначність, чи треба огорожу позначати окремою лінією, а щодо теґів – то не зрозуміло до яких об’єктів їх треба застосовувати. Щоб розв’язати цю неоднозначність створіть для території школи зв’язок, членом якого буде огорожа. Огорожа, як лінійний об’єкт матиме власні теґи на лінії огорожі, а теги, що стосуються позначення території школи додайте до зв’язку.

Випадки, коли потрібно показати кілька елементів

  • Більше ніж два схожих об’єкти на одній території, наприклад дві школи на спільній території. Зазвичай, якщо школи є окремими, вони повинні мати окремі території, але якщо вони відрізняються лише будівлями, територію треба позначити відповідним теґом landuse=, а будівлі — позначити кожну окремо.
  • Будинки багатоцільового призначення. Будівлю потрібно позначити теґом building=*:
    • Якщо будівля має чітку основну ознаку, що може водночас містити в собі інші об’єкти, основне призначення будівлі позначається на її контурі (полігоні), об’єкти в середині позначаються точками чи полігонами, що відповідають об’єктам в середині будівлі, наприклад: ресторан в готелі, чи магазини в торговому центрі.
    • Якщо будівля не є окремим основним об’єктом, який містить в середині інші об’єкти, всі об’єкти мають позначатись в середині периметру будівлі, наприклад: будівля що містить кілька магазинів, кожен з яких має власний вхід.
    • Об’єкти в середині будинків можуть позначатись точками та (мульти)полігонами. Додатково, ознайомтесь зі схемою Simple Indoor Tagging, яка призначена для докладного позначення внутрішніх планів будівель.
  • Річки показуються полігонами з теґами waterway=riverbank або natural=water + water=river, що позначають водну поверхню, та лінією з теґом waterway=river та назвою в значенні теґа name=* для позначення річища. Такий підхід дозволяє спростити показ та роботу з річками на великих масштабах, там де достатньо показу річок у вигляді лінійних об’єктів.
  • Села позначаються точкою з теґом place=village, що ставиться в центрі населеного пункту, територія житлової забудови позначається полігоном чи кількома полігонами з теґом landuse=residential. Крім того, територія всього населеного пункту окреслюється (мульти)полігоном, з тим самим значенням теґів place=* та name=* що й на точці. Наявність полігонів населених пунктів дозволяє спростити процес геокодування, в той час як наявність окремих точок дозволяє зменшити обсяг даних, коли вам не потрібна докладна деталізація.

Використання кількох теґів

Деякі об’єкти мають кілька різних варіантів позначення. Так, waterway=riverbank або natural=water + water=river використовуються для позначення водної поверхні річок і означають одне й те саме.

Таке подвійне теґування не суперечить цьому конкретному правилу, "один об’єкт світу – один об’єкт OSM". В залежності від ситуації таке подвійне теґування може бути прийнятними, може використовуватись одночасно, або бути явно небажаним. Теґи contact:phone=* + phone=* з однаковим значенням задовільнять прихильників обох схем, і не мають жодної причини для відкидання того чи іншого способу теґування. Але за наявності стандартного теґу буде нормально, якщо буде усунуто його дублювання. Так у випадку amenity=police + emoji_encoded_tag=:cop:, другий теґ можна без вагань вилучити, це лише призведе до покращення даних OpenStreetMap.

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

  • Relation:multipolygon — спосіб позначення складних полігонів (поширений приклад: об’єкти розділені дорогою)
  • Relation:site, якщо об’єкт не може бути представлений простим мультиполігоном (об’єкти розпорошені по місцевості чи регіону)
  • building:part=* — описує спосіб позначення складних будинків