用 QGIS 从 OSM 提取电线和变电站数据
本文以“变电站(substation)”和“电线(line)”为例,演示如何在 QGIS 中利用表达式,从 OSM 数据里筛选出特定类型、特定电压等级的电力设施。
准备工作:数据 & 工具
软件准备
- QGIS(建议 3.x 版本)
- 已安装好中文界面(可选)
获取 OSM 数据
常见做法有两种:
- 到类似 Geofabrik、BBBike 等网站下载对应区域的 OSM 数据(
.pbf、.osm或已转好的gpkg/shp)。 - 使用 QGIS 插件(例如 QuickOSM)在线抓取特定区域的 OSM 数据。
本教程默认你已经有一份包含电力设施信息的 OSM 矢量数据,并且在 QGIS 中能看到属性字段里有 other_tags 这一列。

认识 other_tags 字段
在很多 OSM 转换后的数据里,最常用的主标签(如 highway、building)会被单独拆出来,剩余的就被塞进一个类似 other_tags 的字段中。
这个字段通常是一个字符串,里面长得像这样(示意):
"power"=>"substation","voltage"=>"110000","name"=>"XXX变电站"
后面我们所有的筛选表达式,都是围绕这个大字符串做 LIKE 匹配。
在 QGIS 中使用“按表达式选择”
不管是提取变电站还是电线,操作步骤基本一样:
- 在图层面板中选中你的 OSM 图层(例如
osm_power)。 - 右键 → 打开属性表。
- 在属性表左上角点击下拉菜单,选择 按表达式选择要素…。

接下来,就可以在“表达式”框中输入筛选条件了。
提取变电站(substation)
提取所有变电站
表达式如下(注意这里用的是英文直引号):
"other_tags" LIKE '%"power"=>"substation"%'
含义:只要 other_tags 字段里包含 "power"=>"substation" 这段文本,就视为变电站。
- 将上面表达式粘贴到“表达式”框。
- 点击 选择要素。
- 属性表中就会高亮出所有被选中的变电站要素。
如需单独保存变电站图层:
- 在图层面板中,右键原始图层 → 导出 → 将所选要素另存为…。
- 选择输出格式(例如 GeoPackage 或 Shapefile),命名为
substation_all。
提取 110 kV 变电站
如果在数据中,电压值以 110000(单位:V)出现在 other_tags 里,可以用:
"other_tags" LIKE '%"power"=>"substation"%'
AND "other_tags" LIKE '%110000%'
逻辑很直接:
- 第一部分:先锁定“是变电站”的记录;
- 第二部分:再过滤出“包含 110000(即 110 kV)”的记录。
跟刚才一样,可以把选中的要素另存为一个新图层,例如 substation_110kv,方便后续制图或分析。
同时提取 110 kV 和 220 kV 变电站
如果你想把 110 kV 和 220 kV 的变电站一次性挑出来,可以在表达式里加上括号和 OR:
"other_tags" LIKE '%"power"=>"substation"%'
AND (
"other_tags" LIKE '%110000%'
OR "other_tags" LIKE '%220000%'
)
这里建议格式化一下表达式(像上面这样分行),更方便以后维护。
之后同样可导出为 substation_110_220kv 图层。
提取电线(输电线,line)
电线在 OSM 中通常用 power=line 标注。思路几乎一模一样,只是把 substation 换成 line。
提取所有电线
"other_tags" LIKE '%"power"=>"line"%'
执行后,你会得到图层中所有有 power=line 标记的线要素。
建议同样导出成单独图层,例如:power_line_all。
提取 110 kV 电线
"other_tags" LIKE '%"power"=>"line"%'
AND "other_tags" LIKE '%110000%'
解释:
- 第一部分:只保留电线;
- 第二部分:只要这条电线关联的标签里有
110000,就认为是 110 kV 线路。
提取 110 kV 和 220 kV 电线
"other_tags" LIKE '%"power"=>"line"%'
AND (
"other_tags" LIKE '%110000%'
OR "other_tags" LIKE '%220000%'
)
这样即可一次性选出常见的 110 / 220 kV 输电线,为后续做分级符号化、线路走向分析或与负荷中心叠加分析做准备。
把筛选结果变成可用图层
无论是变电站还是电线,用表达式选出之后,通常会有两个常见动作:
-
导出为新图层
- 图层右键 → 导出 → 将所选要素另存为…
- 选择格式、投影,命个清晰一点的名字(比如
power_substation_110_220kv.gpkg)。
-
设置样式
- 变电站(点/面):可以用不同电压等级设置不同颜色或符号大小。
- 电线(线):按电压等级分级渲染,电压越高,线条越粗或颜色越醒目。
同样的方法提取其他类型的 OSM 数据
虽然这次讲的是“电线”和“变电站”,但思路其实可以套用到几乎所有 OSM 要素上:
- 把
"power"=>"substation"换成"power"=>"generator",你就可以筛选发电机组; - 把
"power"=>"line"换成"highway"=>"primary",就变成提取主干道路; - 再结合电压、容量、材料等字段,就可以做更精细的分类。
简单总结一下这套流程:
- 在 OSM 数据里找到你感兴趣的 key/value(如
power=substation)。 - 看它是在独立字段里,还是被打包进
other_tags里。 - 用 QGIS 的“按表达式选择”,结合
LIKE、AND、OR写出筛选条件。 - 把选中的要素导出为独立图层,配好样式,就可以快乐出图了。