我想编写一个脚本来解析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"标签可能会提供一些这样的信息,但是
如果您对如何分层链接这些节点有任何建议,请告诉我.
Igo*_*ejc 15
基本上一切都是OSM中的"自由形式".有关于标记的约定,但不能保证人们会坚持使用它们.因此,您需要进行一些数据清理和后处理才能获得一致的信息.
至于父子关系,OSM中没有硬连线关系,除了:
OSM关系可用于定义层次关系,但这些关系的定义方式非常通用.语义基于约定(通常在OSM Wiki页面上描述).
如果您正在寻找"is_in"关系,我认为您需要使用几何方法来建立它.不幸的是,你不能仅仅依靠OSM标记.
| 归档时间: |
|
| 查看次数: |
4080 次 |
| 最近记录: |