openstreetmap – 如何从OSM XML行星文件中提取层次化的城市/州/
我想编写一个解析OpenStreetMap(OSM)
XML文件的脚本,并以层次的方式构建城镇数据库.我希望生成的数据集具有在美国可能是这样的层次结构:
USA -> California -> San Francisco County -> San Francisco 也许在英国是这样的: United Kingdom -> England -> Middlesex -> London -> Soho 输出将是一个JSON文档,用于描述OSM文件中所有城市的层次结构,其结构如上所述. 我使用Python和“imposm”解析器库,我可以加载和解析文件没有问题;我的问题是对OSM数据的结构缺乏了解:我不知道如何知道OSM数据中的节点之间的父/子关系.例如,如果我找到“Soho”的节点,我该怎么把它重新连接到“威斯敏斯特城”,“大伦敦”,“米德尔塞克斯”和“英格兰”的节点? 我知道一些节点有一个“is_in”标签可能会给出一些这样的信息,但是 A)这是不一致的 如果您有任何建议如何分层地链接这些节点,请让我知道.
基本上OSM中的一切都是“自由”的.有标签的公约,但不能保证人们会坚持.所以你需要做一些数据清理和后处理来获得一切.
对于父子关系,除OSM之外没有硬连线关系: >一个或多个方式使用节点 OSM关系可用于定义层次关系,但是这些关系的定义非常通用.语义基于约定(通常在OSM Wiki页面上描述). 如果你正在寻找一个“is_in”的关系,我想你将需要使用几何方法建立它.不幸的是,您不能真正依靠OSM标记. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |