跳至內容
AI Segmentation
QGIS
教學

QGIS 太陽能板辨識:5 種方法

同一郊區屋頂的三格對比:原始航拍影像、繪有 OpenStreetMap 太陽能發電設施稀疏外框的屋頂,以及每個陣列都被偵測為獨立多邊形的屋頂。

要在 裡繪製屋頂太陽能,先從別人已繪好的開始。開啟 Vector > QuickOSM > QuickOSM…,在 key 欄填入 generator:source,value 欄填入 solar,對你的範圍執行。OpenStreetMap 帶有 6,143,024 個該標籤物件,2026 年 9 月 3 日讀取,因此在調查完善的城鎮兩分鐘即完成。覆蓋稀疏處則自行偵測陣列,方法取決於你的波段與像素尺寸。

網路常見的三個錯誤

以下三種說法一再出現,每一種都會讓你浪費一天才發現不對。

"用 Sentinel-2。" 它的像素是 10 m,一塊面板長 1 到 2 m,所以整個屋頂都落在一個像素裡。Sentinel-2 找得到地面型電站,找不到屋頂。

"用 SCP 分類你的正射影像。" 這個 plugin 自己的 FAQ 已排除這點:"You cannot use orthophotos with less than 4 bands"。多數人手上是 RGB 正射影像或底圖,而這正是 SCP 無法處理的唯一輸入。

"偵測完再數面板數量。" Clark and Pacifici 發現單一模組"即使在 15.5 cm 解析度下仍難以區分"。影像給你的是陣列與面積。模組數量與瓩數來自登記資料。

簡短答案

你的輸入方法費用
OpenStreetMap 已調查完善的區域Method 1, QuickOSMFree
具近紅外波段的多光譜影像Method 2, Raster > Raster Calculator…Free, core QGIS
四個波段以上,且有時間繪製訓練區Method 3, Semi-Automatic Classification PluginFree plugin
接近 20 cm 的 RGB 正射影像,且有 GPU 或耐心Method 4, Deepness plus its Solar PV modelFree
畫布顯示的任何 raster,在任何電腦上Method 5, a cloud segmentation modelFree 3 km² a month, then €39

我如何比較這五種方法

五個標準:所需波段、方法失效的解析度下限、影像是否離開你的電腦、產出第一個多邊形前的費用,以及輸出是多邊形還是像素。價格、plugin 版本與標籤數量均於 2026 年 9 月 3 日讀取。五種之中我們打造其中一種,即 Method 5。

有一件事我交給別處。針對全國裝置容量,公用事業登記資料勝過這裡每種方法,因為它知道瓩數,而影像永遠不會知道。

開始之前

地面解析度決定一切。Bradbury 等人以 30 cm 建立參考 PV 資料集,因為"太陽能板通常長 1 到 2 公尺",讓每塊板上有數個像素。這能解出陣列,而非其中的模組。Clark and Pacifici 發現單一面板"即使在 15.5 cm 解析度下仍難以區分"。已發表的屋頂 PV 研究介於 10 cm 到 31 cm 之間。10 m 的 Sentinel-2 只適用電站,永遠不適用屋頂。

使用投影 CRS 作業,因為下面有兩個步驟以 layer units 計算面積。

Four crops of aerial imagery side by side, labelled: a real rooftop PV array, a dark flat roof, a run of roof skylights, and a solar thermal collector panel.
Four crops at the same scale. Only the first is photovoltaic. Every automatic method here confuses at least two of the other three.

Method 1:使用已繪製的資料

QGIS 在 3.0 移除自帶的 OSM 下載器,改指向 QuickOSM,所以先安裝它。

Query the generators

Vector > QuickOSM > QuickOSM…,key 填 generator:source,value 填 solar,對你的範圍或命名區域執行。屋頂陣列帶有 power=generator,常帶有 generator:method=photovoltaic

Query the plants separately

地面型電站標為 power=plantplant:source=solar,是不同的查詢。漏掉它,你的 layer 就會缺掉所有電站。

Go to the registry for kilowatts

德國的 Marktstammdatenregister 以 XML 每日發布,但 30 kW 以下機組隱去座標,所以屋頂只落到郵遞區號。法國的登記資料止於 IRIS 區,36 kW 以下全部併入彙總列。

The QuickOSM dialog in QGIS with key generator:source and value solar, and the resulting solar generator polygons drawn over aerial imagery of a small town.
One QuickOSM query, key generator:source, value solar. Where a local mapper has been through, this is the whole job.

三個開放資料集可用作訓練資料或基準。Bradbury 等人,加州四城 19,863 個已標註 PV 多邊形,30 cm,CC0。BDAPPV,28,807 個法國案場含遮罩,CC BY 4.0。DeepSolar 數出美國本土 147 萬套系統,但發布的是普查區計數,而非多邊形。

適用時機: 有人已調查過你的區域,或你要的是容量而非形狀。

略過時機: 覆蓋零散,而這只有看了才知道。

Method 2:用 raster 計算器取門檻

Raster > Raster Calculator…,algorithm id native:rastercalc。面板偏暗,在近紅外比深色屋頂暗得多,因此紅光與 NIR 波段間的正規化指數在多數場景可分開兩者。接著以 gdal:sieve 去除碎斑,再以 gdal:polygonize 轉成多邊形。

在 RGB 三波段上這會失敗,因為深色屋頂與面板數值重疊。質地是常用解法。grass:r.texture 計算十三種 GLCM 量測,陣列在對比度高分、在逆差矩低分。GRASS 隨 Windows 安裝包提供,macOS 包則無。

適用時機: 你有近紅外波段,且是單一乾淨場景。

略過時機: 影像是 RGB,或門檻須跨多日拍攝的鑲嵌圖成立。

Method 3:用 SCP 做監督式分類

Semi-Automatic Classification Plugin 會加入 SCP 選單與 SCP Dock。建立 Band set,在面板與每種易混物上繪製 ROIs,再以 Maximum Likelihood、Minimum Distance、Spectral Angle Mapping、Random Forest、Support Vector Machine 或 Multi-layer Perceptron 分類。QGIS 3.x 安裝的是 8.5.0 版,GPL v3,已下載 2,644,482 次。

它自己的 FAQ 排除了多數人手上的輸入。"You cannot use orthophotos with less than 4 bands",因為低於四個波段演算法無法分開類別。

適用時機: 你有四個波段以上,且想要可重複、有記錄的分類。

略過時機: 輸入是 RGB 正射影像或底圖。

Method 4:在 Deepness 跑本機模型

Deepness 在 QGIS 內跑 ONNX 模型,免費且 Apache 2.0,其 model zoo 內建 Solar PV Segmentation 模型,20 cm/px,由 Kleebauer 等人訓練、Fraunhofer 託管。指向你的正射影像即得面板遮罩,不需帳號,資料不離開你的電腦。

速度是代價。有使用者在 CPU 上實測該模型"80+ minutes for a digital Orthophoto tile (20 cm resultion, 5000 points in each direction)",該 issue 仍未關閉。除此之外,沒有維護良好的開放屋頂 PV 模型。

適用時機: 資料不得離開電腦,且正射影像接近 20 cm。

略過時機: 沒有 NVIDIA 卡,卻要覆蓋一整個區域。

Method 5:雲端分割模型

分割模型已學會陣列的外觀,因此能在 Method 2 與 Method 3 無法區分之處,把陣列與深色屋頂分開。我們打造其中一種,即 AI Segmentation。本節談的是我們自己的工具。

在畫布顯示的任何 raster 上框出區域,輸入 solar panel,每個陣列即以專案 CRS 的多邊形返回,附面積與信心分數。模型跑在我們位於歐洲的伺服器上,不需顯卡,也不需 Python 環境。

A farm building roof on aerial imagery in QGIS, with five separate solar panel groups each outlined as its own coloured polygon and the bare roof between them untouched.
One run on a farm roof. Five array groups, each its own polygon, the bare roof between them left alone.

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 by 1.1 m。

價格: 每月免費 3 km²,不需卡。Pro 每月 €39,未稅。

執行環境: 我們在歐洲的伺服器。

安裝: 經 plugin manager,QGIS 3.22 或更新,再從面板登入。

五種方法並排比較

QuickOSMRaster calculatorSCPDeepnessAI Segmentation
所需波段需 NIR四個以上三個三個
影像是否留在本機
GPU建議
輸出OSM polygonsRaster maskClass rasterPanel maskPolygon per array
費用免費免費免費免費免費額度,之後 €39

重點回顧

先查 OpenStreetMap,因為調查完善的城鎮兩分鐘即完成,沒有任何偵測勝過到過現場的圖客。

若影像不得離開電腦,你只剩 Deepness 及其本機 Solar PV 模型可用。

在 RGB 底圖上,raster calculator 與 SCP 出局,因為兩者都無法僅以數值區分面板與深色屋頂。

約 30 cm 可解出陣列,但解不出其中模組,所以只圖面積,永不從影像數面板。

瓩數來自公用事業登記資料,永不來自圖片,而法國與德國登記資料都會模糊小型屋頂機組的位置。

Try it free in QGIS, no card needed

常見問題

QGIS 能自己偵測太陽能板嗎?

不行。核心 QGIS 只有門檻與多邊形化,需要光譜差異,所以 RGB 底圖給不了你東西。偵測來自 plugin,本機用 Deepness,雲端用我們的。

需要什麼影像解析度?

約 30 cm 可解出陣列,依 Bradbury 等人。單一模組即使在 15.5 cm 下仍難分辨,所以規劃上圖陣列與面積,而非數面板。

如何區分太陽能板與深色屋頂?

在三波段上,僅以數值無法區分。使用近紅外波段、如 grass:r.texture 的質地量測,或已學會陣列外觀的模型。

地面型太陽能電站也找得到嗎?

可以,在 OpenStreetMap 中它們是獨立查詢,power=plantplant:source=solar。用模型時,電站也輸入 solar panel,因為它偵測每塊面板,而非整個場址。

能算出裝了幾塊面板嗎?

不能從影像。偵測給的是外框與面積。模組數量與瓩數來自登記資料,在法國止於 IRIS 區。

想走完整過濾步驟,見建築足跡指南SAM in QGIS 文章說明這些模型擅長找哪些物件。QGIS AI 中心比較各 plugin,產品頁見 AI Segmentation