Uk:Елементи

From OpenStreetMap Wiki
Jump to navigation Jump to search

Елементи (або примітиви даних) є основними компонентами концептуальної моделі даних подання реального світу в OpenStreetMap. Вони складаються з:

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

Всі перелічені елементи можуть мати один або кілька теґів (які описують зміст конкретного елемента).

Точка (Node) node

Основна стаття: Uk:Node

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

Точки можуть використовуватись для визначення самостійних точкових об’єктів. Наприклад: лавка в парку чи колодязь.

Точки також використовуються для визначення форми ліній. Точки, що складають лінію часто не мають власних теґів. Проте є специфічні моменти, коли теґи до таких точок потрібно додавати. Наприклад, highway=traffic_signals використовується для світлофорів на лінії дороги, а power=tower позначає опору лінії електропередач.

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

Лінія (Way) way closed way area

Основна стаття: Uk:Way

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

Лініями також позначають межі полігонів, таких як будівлі та ліси. В такому випадку перша та остання точки матимуть однакові координати. Це називається — "замкнена лінія" closed way

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

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

Зв’язок (Relation) relation

Основна стаття: Uk:Relation

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

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

Таким чином, зв’язки можуть мати різні значення. Чим є зв’язок, визначається його теґами. Як правило, зв’язок матиме теґ 'type'. Інші теґи зв’язка потрібно інтерпретувати у світлі значення теґу type.

Зв’язок переважно є впорядкованим переліком точок, ліній та інших зв’язків. Ці об’єкти є членами зв’язку.

Кожен елемент зв’язку може мати власну роль. Наприклад, зв’язок заборони повороту має членів з ролями "from" та "to", що зазначають можливість повороту в той чи інший бік.

Поодинокий елемент, такий як якась певна лінія, може з’являтись у зв’язку кілька разів.

Теґ tag

Основна стаття: Uk:Tags

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

Теґ складається з пари двох текстових полів вільного формату: 'ключа' та 'значення'. Кожне з цих полів може складатись з 255 символів юнікоду. Наприклад, highway=residential використовується для позначення дороги, основним призначенням якої є надання можливості людям дістатись їх домівки. Один елемент не може мати два теґи з однаковим 'ключем', 'ключі' мають бути унікальними. Наприклад, ви не можете позначити один об’єкт теґами amenity=restaurant та amenity=bar одночасно.

Не існує сталого словника теґів, але існує багато домовленостей, задокументований в цій вікі (почніть з вивчення сторінки Об’єкти мапи). Про статистику застосування певного теґу можна дізнатись за допомоги Taginfo. Якщо існує більше ніж один спосіб позначити певний об’єкт, краще використовувати той, що є найбільш поширеним.

Не всі елементи мають теґи. Точки, якщо вони є елементами ліній, переважно не мають теґів. Лінії та точки також можуть не мати теґів, якщо вони є членами зв’язків.

Загальні атрибути

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

назва значення опис
id integer

(64-bit)

Використовується для ідентифікації елементів. Типи елементів мають власні простори ID, тож може існувати точка з id=100 разом з лінією з id=100, які навряд чи можуть бути пов’язані або бути географічно поруч.

Для наявних в базі даних елементів використовуються позитивні значення (більші за нуль). Навіть після модифікації або вилучення елемента його id залишається за ним. Від’ємні id (менші за нуль) є зарезервованими (область їх застосування обмежується поточним набором правок та не зберігається в базі) та використовуються лише під час надсилання даних до бази OSM для ідентифікації новостворених об’єктів та посилання на них в інших новостворених об’єктах (під час збереження сервер замінює від’ємні id, що надсилаються програмами-редакторами, на постійні позитивні для кожного об’єкту та проводить відповідні зміни для всіх пов’язаних об’єктів).

user string Містить ім’я учасника, який останнім змінював об’єкт (подається лише для інформації та може бути порожнім). Учасники в змозі змінювати власні ім’я в будь-який момент (наявні в базі елементи посилатимуться на нове ім’я без додаткових дій з боку учасника).
uid integer Числовий ідентифікатор учасника, який останнім змінював об’єкт. Цей ідентифікатор є незмінним.
timestamp W3C Date and Time Formats Час внесення останніх змін (напр. "2016-12-31T23:59:59.999Z").
visible "true"
"false"
Показує чи об’єкт позначено вилученим у базі даних, якщо visible="false" – інформація про об’єкт виводиться тільки у відповідь на запити до історії об’єкта.
version integer Версія об’єкта. Новостворені об’єкти мають версію 1, яка збільшується з кожним завантаженням змін об’єкта на сервер. Сервер може відкинути нову версію об’єкта якщо, версія що надсилається не збігається з версією в базі даних на сервері.
changeset integer Набір змін в якому об’єкти були створені або змінені. (рекомендується підтримка 64-bit в застосунках для тривалої сумісності з базою OSM. Якщо застосунки тільки отримують дані з бази, без надсилання змін до неї, вони можуть ігнорувати цей атрибут).

Звичайно, на додачу ми зберігаємо теґи, а також повну історію редагування кожного елемента.

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