如何使用 Python 和 Osmium 从 .osm.pbf 文件按标签过滤 OpenStreetmap 节点

在我们之前的文章如何使用 Python 和 osmium 读取 .osm.pbf 文件的最小示例中,我们研究了如何读取 .osm.pbf 文件并计算所有节点、路径和关系。

今天,我们将研究如何使用 osmium 处理 .osm.pbf 文件按标签过滤特定节点。在此示例中,我们将过滤 power: tower 并计算能找到多少节点

osmhandler.apply_file(“germany-latest.osm.pbf”)

find_power_tower.py
#!/usr/bin/env python3
import osmium as osm

class FindPowerTowerHandler(osm.SimpleHandler):
    def __init__(self):
        osm.SimpleHandler.__init__(self)
        self.count = 0

    def node(self, node):
        if node.tags.get("power") == "tower":
            self.count += 1

osmhandler = FindPowerTowerHandler()
osmhandler.apply_file("germany-latest.osm.pbf")

print(f'power=tower 节点数: {osmhandler.node_count}')

另请参见如何使用 Python 和 Osmium 从 .osm.pbf 文件按标签过滤 OpenStreetmap 路径


Check out similar posts by category: Geography, OpenStreetMap, Python