Чи унікальні ідентифікатори OSM для всіх типів об’єктів?


13

Чи є ідентифікатори OSM унікальними для всіх типів об’єктів?

Значить, чи може ідентифікатор шляху виникати як ідентифікатор відношення або ідентифікатор вузла як ідентифікатор шляху?

Відповіді:


16

Osm_id унікальний лише в об'єктному типі. Це легко перевірити за наступними посиланнями

http://www.openstreetmap.org/way/40000000

http://www.openstreetmap.org/node/40000000

Поточна статистика OSM показує ці цифри:

Number of nodes     2412050198
Number of ways      241029453
Number of relations 2658037

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


Гм, але здається, цей ідентифікатор доступний лише як відношення?
wutzebaer

Бо приклади погані. Тим не менш, ідентифікатор просто унікальний у межах елемента.
scai

добре, звідки ви це знаєте? я не міг знайти жодного прикладу у своєму файлі osm, ані будь-якої документації про нього
wutzebaer

2
Я відредагував свою відповідь і виправив приклади, щоб показати реальний випадок / випадок вузла, який існує сьогодні, і пояснив, чому подібні випадки є досить рідкісними випадками у невеликих витягах з осму. Кінцевою документацією є схема рубіну на рейках wiki.openstreetmap.org/wiki/Rails_port/Database_schema
користувач30184

11

Кожен об’єкт OSM дотримується цієї схеми кодування в порядку.

  1. Тип об'єкта (вузол / спосіб / відношення)
  2. Id
  3. Версія об'єкта

тому якщо тип різний, то два або більше об'єктів можуть мати однаковий ідентифікатор, і вони будуть посилатися на різні об'єкти. Але якщо тип і id однакові, а версія відрізняється, то вони представляють різні версії одного об’єкта. У osm api версія необов'язкова, а якщо не вказана, то повертається найвища версія.


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

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

2
Так, редагування тегів створює нову версію, і цю частину виконує osm api. Що стосується бази даних, теги також є частиною унікального ідентифікатора. Але ми використовуємо лише api, тому перші три дадуть унікальний об’єкт.
neogeomat

ви можете надати мені приклад, коли ідентифікатор використовується одночасно для двох типів об'єкта? Я не зміг знайти жодного ... Або є документація про це?
wutzebaer

Приклад наведено в іншій відповіді
пошан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.