我想编写一个解析OpenStreetMap(OSM)
XML文件的脚本,并以层次的方式构建城镇数据库.我希望生成的数据集具有在美国可能是这样的层次结构:
原文链接:https://www.f2er.com/xml/292766.htmlUSA -> California -> San Francisco County -> San Francisco
也许在英国是这样的:
United Kingdom -> England -> Middlesex -> London -> Soho
输出将是一个JSON文档,用于描述OSM文件中所有城市的层次结构,其结构如上所述.
我使用Python和“imposm”解析器库,我可以加载和解析文件没有问题;我的问题是对OSM数据的结构缺乏了解:我不知道如何知道OSM数据中的节点之间的父/子关系.例如,如果我找到“Soho”的节点,我该怎么把它重新连接到“威斯敏斯特城”,“大伦敦”,“米德尔塞克斯”和“英格兰”的节点?
我知道一些节点有一个“is_in”标签可能会给出一些这样的信息,但是
A)这是不一致的
B)似乎是一个自由格式的文本字段,而不是指向OSM节点的链接(即is_in:“威斯敏斯特城市”不给我任何链接到威斯敏斯特节点).
如果您有任何建议如何分层地链接这些节点,请让我知道.