Являются ли идентификаторы 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
Я отредактировал свой ответ и исправил примеры, чтобы показать реальный пример пути / узла, который существует сегодня, и объяснил, почему такие случаи довольно редко встречаются в небольших экстрактах osm. Окончательная документация - схема ruby ​​on rails. Wiki.openstreetmap.org/wiki/Rails_port/Database_schema.
— user30184

11

Каждый объект OSM следует этой схеме кодирования по порядку.

  1. Тип объекта (узел / путь / отношение)
  2. Я бы
  3. Версия объекта

так что если тип отличается, то два или более объектов могут иметь одинаковый идентификатор, и они будут ссылаться на разные объекты. Но если type и id одинаковы, а version отличается, то он представляет разные версии одного и того же объекта. В osm api версия является необязательной, и если она не указана, возвращается самая высокая версия.


6
Лучше сказать, что по первым трем можно идентифицировать уникальный объект osm. Я полагаю, что редактирование тегов создает новую версию.
— user30184

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

2
Да, редактирование тегов создает новую версию, и эта часть выполняется API OSM. Что касается базы данных, теги также являются частью уникального идентификатора. Но мы используем только API, поэтому первые три дают уникальный объект.
— Неогеомат

Не могли бы вы привести пример, когда идентификатор используется для двух типов объектов одновременно? Я не смог найти ... Или есть документация по этому поводу?
— wutzebaer

Пример приведен в другом ответе
— пошан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.