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.