小编luk*_*uke的帖子

如何从OSM XML planet文件中提取分层的城市/州/国家/地区数据?

我想编写一个脚本来解析OpenStreetMap(OSM)XML文件,并以分层方式构建城镇数据库.我希望结果数据集具有在美国可能如下所示的层次结构:

USA -> California -> San Francisco County -> San Francisco
Run Code Online (Sandbox Code Playgroud)

也许在英国这样:

United Kingdom -> England -> Middlesex -> London -> Soho
Run Code Online (Sandbox Code Playgroud)

输出将是一个JSON文档,它描述OSM文件中所有城市的层次结构,其结构与上面的示例类似.

我正在使用Python和"imposm"解析器库,我可以毫无问题地加载和解析文件; 我的问题是缺乏对OSM数据结构的理解:我不知道如何知道OSM数据中节点之间的父/子关系.例如,如果我找到"Soho"的节点,我怎么能把它绑回"威斯敏斯特市","大伦敦","米德尔塞克斯"和"英格兰"的节点?

我知道有些节点有一个"is_in"标签可能会提供一些这样的信息,但是

  • A)这是不一致的
  • B)它似乎是一个自由格式的文本字段,而不是指向OSM节点的链接(即is_in:"威斯敏斯特市"并没有给我任何指向威斯敏斯特节点的链接).

如果您对如何分层链接这些节点有任何建议,请告诉我.

openstreetmap

13
推荐指数
1
解决办法
4080
查看次数

标签 统计

openstreetmap ×1