我想编写一个脚本来解析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)这是不一致的,并且
B)它似乎是一个自由格式的文本字段,而不是指向OSM节点的链接(即is_in:“威斯敏斯特市”不会给我任何指向威斯敏斯特节点的链接)。
请让我知道是否有任何建议,如何将这些节点按层次链接起来。