QGISで太陽光パネル検出:5手法比較

屋根上太陽光を
で描くなら、まず他人が描いたものを使う。Vector > QuickOSM > QuickOSM…を開き、keyにgenerator:source、valueにsolarを入れて対象範囲で実行する。OpenStreetMapにはそのタグを持つ6,143,024オブジェクトがある、2026年9月3日時点。調査が進んだ町なら2分で終わる。カバレッジが薄い所は自分でアレイを検出し、バンド数とピクセルサイズで手法を選ぶ。
よくある間違い3つ
次の3つは繰り返し出てくるが、いずれも無駄な1日を生む。
"Use Sentinel-2." ピクセルは10 mで、パネルは1〜2 mしかないため、屋根全体が1ピクセルに入る。Sentinel-2は野立てのメガソーラーを見つけるが、屋根は見つけない。
"Classify your orthophoto with SCP." そのpluginのFAQ自体が否定している:"You cannot use orthophotos with less than 4 bands"。多くの人が持つRGBオルソやベースマップこそ、SCPが受け付けない入力だ。
"Count the panels once you have the detection." Clark and Pacificiは個々のモジュールが"difficult to distinguish even at 15.5 cm resolution"としている。画像からはアレイと面積が得られる。モジュール数とkWはレジストリから取る。
結論
| 入力 | 手法 | コスト |
|---|---|---|
| OpenStreetMapが整備済みの地域 | Method 1, QuickOSM | 無料 |
| 近赤外バンド付きマルチスペクトル画像 | Method 2, Raster > Raster Calculator… | 無料、QGISコア |
| 4バンド以上+学習エリアを描く時間がある | Method 3, Semi-Automatic Classification Plugin | 無料plugin |
| 20 cm級RGBオルソ+GPUか忍耐 | Method 4, Deepness+Solar PVモデル | 無料 |
| キャンバス表示できるあらゆるraster、どのマシンでも | Method 5, クラウドのセグメンテーションモデル | 月3 km²まで無料、その後€39 |
比較方法
評価軸は5つ:必要なバンド数、使えなくなる解像度、画像が自分のマシンを離れるか、初ポリゴンまでのコスト、出力がポリゴンかピクセルか。価格、pluginバージョン、タグ件数は2026年9月3日時点。5つのうち1つは私たちが作っており、Method 5だ。
1つの用途は別に任せる。国全体の導入容量なら電力レジストリがここにある全手法に勝つ。kWを知るのはレジストリであり、画像ではないからだ。
始める前に
地上解像度がすべてを決める。Bradbury et al.は参照PVデータセットを30 cmで作った、"solar panels are typically between 1 and 2 meters in length"のためで、各パネルに数ピクセルが載る。これで見えるのはアレイであり、中のモジュールではない。Clark and Pacificiは個々のパネルが"difficult to distinguish even at 15.5 cm resolution"とした。公開済み屋根上PV研究は10 cm〜31 cmにある。10 mのSentinel-2は野立て用であり、屋根には使わない。
投影CRSで作業する。下の2手順はlayer単位で面積を取るからだ。

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=plant+plant:source=solarで別クエリになる。これを忘れるとすべての野立てがlayerから漏れる。
Go to the registry for kilowatts
ドイツのMarktstammdatenregisterは日次XMLだが、30 kW以下は座標を伏せ、屋根上は郵便番号止まりになる。フランスのレジストリはIRIS区止まりで、36 kW未満は集計行に畳まれる。

学習用・検証用の公開データは3つ。Bradbury et al.はカリフォルニア4都市で19,863 PVポリゴンを30 cmで、CC0。BDAPPVはフランス28,807件とマスク付き、CC BY 4.0。DeepSolarは米国本土で1.47 million件を数えたが、公開は国勢調査区単位の件数でありポリゴンではない。
使う場合: 対象地域が調査済み、または形状より容量が要る場合。
見送る場合: カバレッジにムラがある場合。見て初めて分かる。
Method 2:raster calculatorでしきい値処理
Raster > Raster Calculator…、algorithm idはnative:rastercalc。パネルは暗く、近赤外では暗い屋根よりさらに暗いため、赤とNIRの正規化指標で多くのシーンは分離できる。その後gdal:sieveで斑点を消し、gdal:polygonizeでポリゴン化する。
RGBの3バンドでは失敗する。暗い屋根とパネルが同じ値を取るからだ。救いはたいていテクスチャだ。grass:r.textureは13種のGLCM指標を計算し、アレイはコントラストが高くinverse difference momentが低い。GRASSはWindowsインストーラーには同梱され、macOSバンドルには入らない。
使う場合: 近赤外バンド付きのクリーンな1シーンがある場合。
見送る場合: 画像がRGBの場合、または別日撮影のモザイクでしきい値を通す必要がある場合。
Method 3: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で分類する。QGIS 3.xが入れるのはバージョン8.5.0、GPL v3、2,644,482回ダウンロード。
そのFAQが多くの人の入力を否定する。"You cannot use orthophotos with less than 4 bands"。4未満ではアルゴリズムがクラスを分けられないからだ。
使う場合: 4バンド以上があり、再現性ある文書化できる分類が要る場合。
見送る場合: 入力がRGBオルソやベースマップの場合。
Method 4:Deepnessでローカルモデル
DeepnessはQGIS内でONNXモデルを動かす、無料でApache 2.0。そのモデルzooにはKleebauer et al.が学習しFraunhoferがホストするSolar PV Segmentationモデルが20 cm/pxで入る。オルソを指せばパネルマスクが出る。アカウント不要、画像はマシンを離れない。
難は速度だ。あるユーザーは同モデルで"80+ minutes for a digital Orthophoto tile (20 cm resultion, 5000 points in each direction)"をCPUで測り、そのissueはまだ開いたままだ。この先に保守の良い屋根上PVの公開モデルはない。
使う場合: 何もマシンの外に出せず、オルソが20 cm級の場合。
見送る場合: NVIDIAカードがなく、広域を覆う場合。
Method 5:クラウドのセグメンテーションモデル
セグメンテーションモデルはアレイの見た目を学習済みのため、Method 2とMethod 3では無理な暗い屋根との分離ができる。その1つを私たちが作っている、AI Segmentation。この節は自社ツールについての説明だ。
キャンバスに映るrasterにゾーンを描き、solar panelと打てば、アレイごとに見込みCRSのポリゴンで返り、面積とconfidence scoreが付く。モデルは欧州の自社サーバーで動くため、カードも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とは打たない。後者は設備全体を尋ねるため、モデルは一様な1面か無しで答える。少ない実行例では24タイル中21が空だった。
最適: 地区規模の屋根上アレイ、どのマシンでも。
不向き: モジュール数。密なアレイは1面で返るため、QGISで割るか既知のモジュール寸法で割る。住宅用モジュールは約1.7 m×1.1 m。
価格: 月3 km²まで無料、カード不要。Proは月€39、VAT別。
動作: 欧州の自社サーバー。
導入: pluginマネージャーで、QGIS 3.22以降、後はパネルからサインイン。
5手法の比較表
| QuickOSM | Raster calculator | SCP | Deepness | AI Segmentation | |
|---|---|---|---|---|---|
| 必要なバンド数 | なし | NIRが有効 | 4以上 | 3 | 3 |
| 画像は手元に残る | はい | はい | はい | はい | いいえ |
| GPU | いいえ | いいえ | いいえ | 推奨 | いいえ |
| 出力 | OSM polygons | Raster mask | Class raster | Panel mask | Polygon per array |
| コスト | 無料 | 無料 | 無料 | 無料 | 月3 km²まで無料、その後€39 |
覚えておくこと
まずOpenStreetMapを引く。調査済みの町は2分で終わり、現地を歩いたマッパーに検出は勝てない。
画像をマシンから出せないなら、DeepnessとそのローカルSolar PVモデルのみが選べる。
RGBベースマップではraster calculatorとSCPは使えない。どちらも値だけではパネルと暗い屋根を分けられないからだ。
30 cm級はアレイを解像し、中のモジュールは何も解像しない。面積を描き、画像からパネル数は数えない。
kWは電力レジストリから取り、写真からは取らない。仏独どちらのレジストリも小規模屋根の位置をぼかす。
Try it free in QGIS, no card needed
よくある質問
QGIS単体で太陽光パネルを検出できる?
いいえ。QGISコアにあるのはしきい値処理とポリゴン化であり、分光差が要るためRGBベースマップでは何も出ない。検出はpluginからであり、ローカルならDeepness、クラウドなら私たちのものだ。
必要な画像解像度は?
目安は30 cm級でアレイが見える、Bradbury et al.に倣う。個々のモジュールは15.5 cmでも難しく、パネル数を数えずアレイと面積を描く前提で組む。
パネルと暗い屋根を見分けるには?
3バンドでは値だけでは分けられない。近赤外バンド、grass:r.textureのようなテクスチャ指標、またはアレイの見た目を学んだモデルを使う。
野立てソーラーも見つかる?
はい。OpenStreetMapでは別クエリであり、power=plant+plant:source=solarだ。モデルでは野立てにもsolar panelと打つ。各パネルを検出するのであり、敷地ではないからだ。
設置パネル数を数えられる?
画像からは数えられない。検出が出すのは外形と面積だ。モジュール数とkWはレジストリから取り、フランスではIRIS区止まりだ。
建物フットプリントのガイドが絞り込み手順を詳しく解説し、QGISでのSAM記事が得意な対象を扱う。QGIS AI hubがpluginを比べ、製品ページはAI Segmentationだ。


