QGIS 光伏板识别与屋顶光伏提取:5 种方法
发布于 更新于

要在QGIS中绘制屋顶光伏,先从别人已经绘好的数据开始。打开 Vector > QuickOSM > QuickOSM…,在 key 框中填入 generator:source,在 value 框中填入 solar,在您的区域上运行。OpenStreetMap 带有该标签的对象有 6,143,024 个,读取于 2026 年 9 月 3 日,因此在调查完善的城镇,两分钟即可完成。覆盖稀疏的地方需要您自己检测阵列,具体方法取决于您的波段和像素尺寸。
| 您的输入 | 方法 | 花费 |
|---|---|---|
| OpenStreetMap 已经调查完善的区域 | 方法 1,QuickOSM | 免费 |
| 画布上显示的任何栅格,任何机器 | 方法 2,云端分割模型 | 每月免费 1.5 km²,之后 €39 |
| 带近红外波段的多光谱影像 | 方法 3,Raster > Raster Calculator… | 免费,QGIS 核心 |
| 四个或更多波段,且有时间画训练区 | 方法 4,Semi-Automatic Classification Plugin | 免费插件 |
| 20 cm 左右的 RGB 正射影像,且有 GPU 或耐心 | 方法 5,Deepness 加其 Solar PV 模型 | 免费 |
价格、插件版本和标签计数均读取于 2026 年 9 月 3 日。
方法 1:拿现成的测绘成果
QGIS 在 3.0 中移除了自带的 OSM 下载器,并指向 QuickOSM,所以先装它。
查询发电设备
Vector > QuickOSM > QuickOSM…,key 填 generator:source,value 填 solar,按您的范围或地名运行。屋顶阵列带有 power=generator,常带 generator:method=photovoltaic。
单独查询电站
地面电站标注为 power=plant 加 plant:source=solar,是另一个查询。漏掉它,您的图层里会缺掉所有电站。
到登记库查千瓦数
德国 Marktstammdatenregister 每天以 XML 发布,但 30 kW 及以下的机组隐去坐标,屋顶只能落到邮编。法国登记库止于 IRIS 区,36 kW 以下全部折叠为汇总行。

三个开放数据集可用作训练数据或基准。Bradbury 等,四个加州城市 30 cm 上 19,863 个标注 PV 多边形,CC0。BDAPPV,28,807 个法国安装含掩膜,CC BY 4.0。DeepSolar 数出美国本土 147 万套系统,但发布的是人口普查区计数,不是多边形。
用它,当: 有人调查过您的区域,或您要的是容量而不是形状。
不用它,当: 覆盖零散,而这只有看了才知道。
方法 2:云端分割模型
分割模型学过阵列的样子,所以在方法 3 和方法 4 分不开深色屋顶的地方,它能分开。我们构建其中之一,AI Segmentation。本节讲我们自己的工具。
在画布显示的任何栅格上画一个区域,输入 solar panel,每个阵列以项目 CRS 下的多边形返回,带面积和置信度分数。模型跑在我们在欧洲的服务器上,所以不需要显卡,也不需要 Python 环境。

在 2026 年 7 月 5 日到 9 月 1 日之间,我们团队之外的 47 人运行 solar panel 104 次,15.6% 的分块返回为空。在 96 次导出运行中,模型找到 40,088 个候选,他们保留 14,245 个,即 35.5%,覆盖 496,931 m² 板子。
输入 solar panel,不要输入 solar farm。后者要的是整个场站,模型会回答一个均匀面或空白。在现有少量运行中,它让 24 个分块中的 21 个为空。
最适合: 在任何机器上,做一个区范围的屋顶阵列。
不适合: 数组件。密集阵列返回为一个面,所以在 QGIS 里拆分,或除以您已知的组件占地。住宅组件约 1.7 m 乘 1.1 m。
价格: 每月 1.5 km² 免费,无需卡。Pro 为每月 €39,不含增值税。免费试用 Pro 7 天:绑定银行卡,试用期结束前取消则不会扣费。
运行在: 我们的服务器,在欧洲。
安装: 插件管理器,QGIS 3.22 或更高,然后从面板登录。
方法 3:在栅格计算器里做阈值分割
在投影坐标系下工作,因为下面有两步要按图层单位取面积。

Raster > Raster Calculator…,算法 id 为 native:rastercalc。板子发暗,在近红外中比深色屋顶暗得多,所以红光和 NIR 波段之间的归一化指数在大多数场景都能分开。然后 gdal:sieve 去掉斑点,gdal:polygonize 生成多边形。
在三波段 RGB 上这会失败,因为深色屋顶和板子的值重合。常用补救是纹理。grass:r.texture 计算 13 种 GLCM 测度,阵列在对比度上偏高、在逆差距矩上偏低。GRASS 随 Windows 安装包一起发布,不随 macOS 包发布。
用它,当: 您有近红外波段,且是单一干净场景。
不用它,当: 影像是 RGB,或阈值要在不同日期拍摄的镶嵌图中通用。
方法 4:用 SCP 做监督分类
Semi-Automatic Classification Plugin 会增加 SCP 菜单和 SCP Dock。建 Band set,在板子和每种易混物上画 ROI,然后用 Maximum Likelihood、Minimum Distance、Spectral Angle Mapping、Random Forest、Support Vector Machine 或 Multi-layer Perceptron 分类。8.5.0 是 QGIS 3.x 会装到的版本,GPL v3,下载 2,644,482 次。
它自己的 FAQ 排除了大多数人手里的输入。“You cannot use orthophotos with less than 4 bands”,因为低于四个波段算法分不开类别。
用它,当: 您有四个或更多波段,想要可重复、可记录的分类。
不用它,当: 您的输入是 RGB 正射影像或底图。
方法 5:在 Deepness 里跑本地模型
地面分辨率决定一切。Bradbury 等人在 30 cm 上构建参考 PV 数据集,因为“solar panels are typically between 1 and 2 meters in length”,这样每块板上有几个像素。这能分辨阵列,分辨不了里面的组件。Clark 和 Pacifici 发现单个面板“difficult to distinguish even at 15.5 cm resolution”。已发表的屋顶 PV 工作集中在 10 cm 到 31 cm 之间。10 m 的 Sentinel-2 只做电站,从不做屋顶。
Deepness 在 QGIS 内跑 ONNX 模型,免费,Apache 2.0,它的模型库自带 Solar PV Segmentation 模型,20 cm/px,由 Kleebauer 等训练、Fraunhofer 托管。指向您的正射影像即可得到板子掩膜,无需账号,什么都不离开本机。
速度是短板。有用户测过同一模型:“80+ minutes for a digital Orthophoto tile (20 cm resultion, 5000 points in each direction)”,在 CPU 上,该 issue 仍未关闭。除此之外,没有维护良好的开放屋顶 PV 模型。
用它,当: 什么都不能离开本机,且您的正射接近 20 cm。
不用它,当: 您没有 NVIDIA 卡,却要覆盖一个区。
五种方法并排对比
| QuickOSM | AI Segmentation | 栅格计算器 | SCP | Deepness | |
|---|---|---|---|---|---|
| 所需波段 | 无 | 三个 | NIR 有帮助 | 四个或更多 | 三个 |
| 影像留在本地 | 是 | 否 | 是 | 是 | 是 |
| GPU | 否 | 否 | 否 | 否 | 推荐 |
| 输出 | OSM 多边形 | 每个阵列一个多边形 | 栅格掩膜 | 类别栅格 | 板子掩膜 |
| 花费 | 免费 | 免费额度,之后 €39 | 免费 | 免费 | 免费 |
记住什么
先查 OpenStreetMap,因为调查完善的城镇两分钟收工,没有检测能胜过到过现场的绘图者。
如果影像不能离开本机,Deepness 和它的本地 Solar PV 模型可以把一切都留在您的机器上。
在 RGB 底图上,栅格计算器和 SCP 出局,因为两者都不能仅按值把板子和深色屋顶分开。
30 cm 左右能分辨阵列,没有分辨率能分辨里面的组件,所以只画面积,永远不要从影像数板子。
千瓦数来自公用事业登记库,永远不是来自图片,而法国和德国登记库都会模糊小型屋顶机组的位置。
大家常问的问题
QGIS 能自己检测太阳能板吗?
不行。QGIS 核心只有阈值分割和栅格转矢量,需要光谱差异,所以 RGB 底图给不了您任何东西。检测来自插件,本地用 Deepness,云端用我们的。
需要什么分辨率的影像?
按 Bradbury 等,30 cm 左右能分辨阵列。单个组件在 15.5 cm 下仍然难分,所以按阵列和面积规划,不要数板子。
如何区分太阳能板和深色屋顶?
在三波段上,仅按值分不开。用近红外波段、用 grass:r.texture 这类纹理测度,或用学过阵列样子的模型。
地面光伏电站也能找到吗?
能,在 OpenStreetMap 中是另一个查询,power=plant 加 plant:source=solar。用模型时,电站也输入 solar panel,因为它检测每块板子,而不是场站。
能数出装了多少块板吗?
不能从影像数。检测给出轮廓和面积,组件数量和千瓦数来自登记库,而在法国只到 IRIS 区。
建筑物轮廓提取指南 完整讲了过滤步骤,QGIS 中的 SAM 一文 讲了这类模型擅长找哪些对象。若想把检测和面积统计合成一条指令一次完成,而不是手动逐步操作插件,AI Agent 可以在同一个 QGIS 工程内完成。QGIS AI 中心 对比了各插件,产品页是 AI Segmentation。
中绘制屋顶光伏,先从别人已经绘好的数据开始。打开 

