Les identifiants OSM sont-ils uniques sur tous les types d'objets?

13

Les ID OSM sont-ils uniques sur tous les types d'objets?

Autrement dit, un ID de chemin peut-il se produire comme ID de relation ou un ID de nœud comme ID de chemin?

wutzebaer
la source

Réponses:

16

Osm_id est unique uniquement dans le type d'objet. Il est facile de tester avec les liens suivants

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

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

Les statistiques OSM actuelles montrent ces chiffres:

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

Un grand nombre des nœuds les plus anciens ont déjà été supprimés et, en règle générale, les nouveaux identifiants de nœud sont beaucoup plus importants que les nouveaux identifiants de chemin et de relation. Pour cette raison, il est de plus en plus rare de trouver les mêmes osm_ids à partir d'un petit extrait, mais cela peut toujours se produire et l'utilisateur ne doit pas faire confiance aux osm_ids qui sont universellement uniques.

user30184
la source
Hm mais semble que cet id n'est disponible qu'en relation?
wutzebaer
Parce que les exemples sont mauvais. Néanmoins, l'ID est juste unique au sein du type d'élément.
scai
ok où savez-vous cela? je
n'ai
2
J'ai édité ma réponse et corrigé les exemples pour montrer un cas réel de chemin / nœud qui existe aujourd'hui et expliqué pourquoi de tels cas sont plutôt rares dans les petits extraits osm. La documentation ultime est le schéma ruby ​​on rails wiki.openstreetmap.org/wiki/Rails_port/Database_schema
user30184
11

Chaque objet OSM suit dans l'ordre ce schéma de codage.

  1. Type d'objet (nœud / chemin / relation)
  2. Id
  3. Version de l'objet

ainsi, si le type est différent, deux ou plusieurs objets peuvent avoir le même identifiant et se référer à des objets différents. Mais si le type et l'id sont identiques et que la version est différente, cela représente différentes versions du même objet. Dans l'api osm, la version est facultative et si elle n'est pas spécifiée, la version la plus élevée est renvoyée.

neogeomat
la source
6
Il pourrait être préférable de dire qu'un objet osm unique peut être identifié par les trois premiers. Je suppose que l'édition de balises crée une nouvelle version.
user30184
1
L'ajout de membres aux chemins et aux relations crée également une nouvelle version, mais le déplacement des nœuds (même en en faisant une ligne droite) ne crée pas de nouvelle version pour le chemin .
AndreJ
2
Oui, la modification des balises crée une nouvelle version et cette partie est effectuée par l'api osm. Quant à la base de données, les balises font également partie d'un identifiant unique. Mais nous n'utilisons que l'api, donc les trois premiers donneront un objet unique.
neogeomat
pourriez-vous me donner un exemple où un identifiant est utilisé pour deux types d'objets en même temps? Je n'ai pas pu en trouver ... Ou y a-t-il une documentation à ce sujet?
wutzebaer
L'exemple est donné dans l'autre réponse
poshan