รหัส OSM แตกต่างจากประเภทวัตถุทั้งหมดหรือไม่


13

OSM IDs ไม่ซ้ำกันกับทุกประเภทวัตถุหรือไม่

หมายความว่าจะมีวิธีที่ ID เกิดขึ้นเป็นความสัมพันธ์ -ID หรือโหนด -ID เป็นวิธีที่ ID?

คำตอบ:


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

เพราะตัวอย่างไม่ดี อย่างไรก็ตาม ID นั้นไม่ซ้ำกันภายในประเภทองค์ประกอบ
scai

ตกลงคุณรู้เรื่องอะไรอยู่ที่ไหน ฉันไม่สามารถหาค่าตัวอย่างเช่นในไฟล์ OSM ของฉันหรือเอกสารใด ๆ เกี่ยวกับเรื่องนี้
wutzebaer

2
ฉันแก้ไขคำตอบของฉันและแก้ไขตัวอย่างเพื่อแสดงกรณีจริง / โหนดที่มีอยู่ในวันนี้และอธิบายว่าทำไมกรณีดังกล่าวค่อนข้างแปลกในสารสกัด osm ขนาดเล็ก เอกสารที่ดีที่สุดคือ ruby ​​on rails schema wiki.openstreetmap.org/wiki/Rails_port/Database_schema
30184

11

วัตถุ OSM ทุกตัวตามโครงร่างการเข้ารหัสนี้ตามลำดับ

  1. ประเภทของวัตถุ (โหนด / วิธี / ความสัมพันธ์)
  2. Id
  3. รุ่นของวัตถุ

ดังนั้นหากประเภทนั้นแตกต่างกันวัตถุสองตัวขึ้นไปสามารถมีรหัสเดียวกันและพวกเขาจะอ้างถึงวัตถุที่แตกต่างกัน แต่ถ้าประเภทและรหัสเหมือนกันและรุ่นแตกต่างจากนั้นก็แสดงถึงรุ่นที่แตกต่างกันของวัตถุเดียวกัน ใน osm api เวอร์ชันเป็นทางเลือกและหากไม่ได้ระบุไว้เวอร์ชันสูงสุดจะถูกส่งคืน


6
อาจเป็นการดีกว่าถ้าจะบอกว่าวัตถุสามตัวแรกนั้นสามารถระบุได้ในสามตัวแรก ฉันคิดว่าการแก้ไขแท็กจะสร้างเวอร์ชันใหม่
30184

1
การเพิ่มสมาชิกให้กับวิธีและความสัมพันธ์ยังสร้างเวอร์ชันใหม่ แต่การย้ายโหนด (แม้กระทั่งการสร้างเส้นตรง) ไม่ได้สร้างเวอร์ชันใหม่สำหรับวิธีนี้
AndreJ

2
ใช่การแก้ไขแท็กสร้างเวอร์ชันใหม่และส่วนนั้นทำโดย osm api สำหรับฐานข้อมูลแท็กยังเป็นส่วนหนึ่งของ id ที่ไม่ซ้ำกัน แต่เราใช้เพียง api ดังนั้นสามตัวแรกจะให้วัตถุที่ไม่ซ้ำกัน
neogeomat

คุณสามารถยกตัวอย่างที่ใช้รหัสสำหรับวัตถุสองชนิดในเวลาเดียวกันได้หรือไม่ ฉันไม่พบ ... หรือมีเอกสารเกี่ยวกับเรื่องนี้หรือไม่?
wutzebaer

ตัวอย่างมีให้ในคำตอบอื่น ๆ
poshan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.