如何在Python中从.osm.pbf文件中提取数据

5
我已经从http://download.geofabrik.de/europe.html下载了英国.osm.pbf文件,我想提取每个节点的纬度和经度信息,是否可以实现?如果能以某种python格式获取它,那就太好了。
1个回答

5
你可以使用pyosmium来解析.osm.pbf文件。
这个简单的例子只打印了每个带有name tag的节点的位置和名称。
import osmium
import sys

class NamesHandler(osmium.SimpleHandler):
    def node(self, n):
        if 'name' in n.tags:
            print(f'{n.location}: ' + n.tags['name'])

def main(osmfile):
    NamesHandler().apply_file(osmfile)
    return 0

if __name__ == '__main__':
    if len(sys.argv) != 2:
        print("Usage: python %s <osmfile>" % sys.argv[0])
        sys.exit(-1)

    exit(main(sys.argv[1]))

当然,根据您的用例,您可能希望对数据进行更复杂的处理。请查看文档以获取基本用法教程和参考,以及pyosmium GitHub存储库的README以获取安装说明。

我应该把文件位置放在这里? - DRobins
@DRobins,通过这个小例子脚本,文件作为命令行参数提供。在最后一行中从sys.argv[1]获取,传递给main函数,最终传递给处理程序的apply_file函数。只有最后一步是pyosmium特定的,其余部分只是为了让示例脚本能够执行。 - Tordanik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接