Czy identyfikatory OSM są unikalne dla wszystkich typów obiektów?

13

Czy identyfikatory OSM są unikalne dla wszystkich typów obiektów?

Oznacza to, czy identyfikator drogi może występować jako identyfikator relacji lub identyfikator węzła jako identyfikator drogi?

wutzebaer
źródło

Odpowiedzi:

16

Osm_id jest unikalny tylko w obrębie typu obiektu. Łatwo jest przetestować za pomocą poniższych linków

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

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

Obecne statystyki OSM pokazują te liczby:

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

Wiele najstarszych węzłów zostało już usuniętych i ogólnie nowe identyfikatory węzłów są znacznie większe niż nowe identyfikatory dróg i relacji. Z tego powodu coraz rzadziej można znaleźć te same osm_ids z małego wyciągu, ale wciąż może się to zdarzyć i użytkownik nie może ufać, że osm_ids są uniwersalne.

użytkownik30184
źródło
Hm, ale wydaje się, że ten identyfikator jest dostępny tylko jako relacja?
wutzebaer
Ponieważ przykłady są złe. Niemniej jednak identyfikator jest unikalny w ramach typu elementu.
scai
ok, skąd to wiesz? nie mogłem znaleźć żadnego przykładu w moim pliku osm ani żadnej dokumentacji na jego temat
wutzebaer
2
Zredagowałem swoją odpowiedź i poprawiłem przykłady, aby pokazać prawdziwy przypadek drogi / węzła, który istnieje dzisiaj i wyjaśniłem, dlaczego takie przypadki są raczej rzadkie w wyciągach z małego osm. Ostateczną dokumentacją jest schemat ruby ​​on rails wiki.openstreetmap.org/wiki/Rails_port/Database_schema
user30184
11

Każdy obiekt OSM jest zgodny z tym schematem kodowania.

  1. Rodzaj obiektu (węzeł / droga / relacja)
  2. ID
  3. Wersja obiektu

więc jeśli typ jest inny, wówczas dwa lub więcej obiektów może mieć ten sam identyfikator i będą odnosić się do różnych obiektów. Ale jeśli typ i identyfikator są takie same, a wersja jest inna, oznacza to różne wersje tego samego obiektu. W interfejsie API osm wersja jest opcjonalna, a jeśli nie zostanie określona, ​​zwracana jest wersja najwyższa.

neogeomat
źródło
6
Lepiej powiedzieć, że unikatowy obiekt osm można rozpoznać po pierwszych trzech. Podejrzewam, że edycja tagów tworzy nową wersję.
user30184
1
Dodawanie członków do sposobów i stosunków tworzy również nową wersję, ale ruchomych węzłów (nawet czyni prostą linię z nich) nie nie stworzyć nową wersję na drodze .
AndreJ
2
Tak, edycja tagów tworzy nową wersję i ta część jest wykonywana przez interfejs API osm. Jeśli chodzi o bazę danych, tagi są również częścią unikalnego identyfikatora. Ale używamy tylko interfejsu API, więc pierwsze trzy dadzą unikalny obiekt.
neogeomat
czy możesz podać mi przykład, w którym identyfikator jest używany dla dwóch typów obiektów jednocześnie? Nie mogłem znaleźć ... Czy jest na to jakaś dokumentacja?
wutzebaer
Przykład podano w innej odpowiedzi
poshan