OSM ID在所有对象类型上是否唯一?


13

OSM ID在所有对象类型上是否唯一?

意思是,路标ID可以作为关系ID出现,还是节点ID可以作为路标ID?

Answers:


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

全部最旧的节点已被删除,通常新的节点ID比新的方式和关系ID大得多。因此,从一个小的提取物中找到相同的osm_id越来越少,但是它仍然可能发生,并且用户不能相信osm_id是通用的。


嗯,但似乎此ID仅作为关系可用?
wutzebaer 2014年

因为例子不好。但是,该ID 元素类型只是唯一的。
scai 2014年

好的,你在哪里知道的?我在osm文件中找不到任何示例,也找不到有关它的任何文档
wutzebaer 2014年

2
我编辑了答案,并更正了示例,以显示当今存在的真实方式/节点情况,并解释了为什么这种情况在小型osm提取物中很少见。最终文档是ruby on rails schema wiki.openstreetmap.org/wiki/Rails_port/Database_schema
user30184 2014年

11

每个OSM对象按顺序遵循此编码方案。

  1. 对象类型(节点/路径/关系)
  2. ID
  3. 对象版本

因此,如果类型不同,则两个或多个对象可以具有相同的ID,并且它们将引用不同的对象。但是,如果类型和ID相同且版本不同,则表示同一对象的不同版本。在osm api中,版本是可选的,如果未指定,则返回最高版本。


6
最好说前三个可以识别一个唯一的osm对象。我想编辑标签会创建一个新版本。
user30184 2014年

1
向路和关系添加成员也会创建一个新版本,但是移动节点(甚至使它们成直线)也不会为该创建一个新版本。
AndreJ 2014年

2
是的,编辑标签会创建一个新版本,该部分由osm api完成。至于数据库,标签也是唯一ID的一部分。但是我们仅使用api,因此前三个将提供唯一的对象。
neogeomat

您能举一个例子,其中一个ID同时用于两种对象类型吗?我找不到任何...或是否有任何相关文档?
wutzebaer 2014年

该示例在另一个答案中给出
poshan 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.