コンテンツへスキップ
ブログに戻る
AI Segmentation
QGIS
チュートリアル

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

郊外の同じ屋根を並べた3枚:通常の空中写真、OpenStreetMapの太陽光発電所を疎い輪郭で重ねたもの、すべてのアレイを個別ポリゴンで検出したもの。

屋根上太陽光をで描くなら、まず他人が描いたものを使う。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単位で面積を取るからだ。

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.

学習用・検証用の公開データは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 PluginSCPメニューと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環境も要らない。

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とは打たない。後者は設備全体を尋ねるため、モデルは一様な1面か無しで答える。少ない実行例では24タイル中21が空だった。

最適: 地区規模の屋根上アレイ、どのマシンでも。

不向き: モジュール数。密なアレイは1面で返るため、QGISで割るか既知のモジュール寸法で割る。住宅用モジュールは約1.7 m×1.1 m。

価格: 月3 km²まで無料、カード不要。Proは月€39、VAT別。

動作: 欧州の自社サーバー。

導入: pluginマネージャーで、QGIS 3.22以降、後はパネルからサインイン。

5手法の比較表

QuickOSMRaster calculatorSCPDeepnessAI Segmentation
必要なバンド数なしNIRが有効4以上33
画像は手元に残るはいはいはいはいいいえ
GPUいいえいいえいいえ推奨いいえ
出力OSM polygonsRaster maskClass rasterPanel maskPolygon 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=plantplant:source=solarだ。モデルでは野立てにもsolar panelと打つ。各パネルを検出するのであり、敷地ではないからだ。

設置パネル数を数えられる?

画像からは数えられない。検出が出すのは外形と面積だ。モジュール数とkWはレジストリから取り、フランスではIRIS区止まりだ。

建物フットプリントのガイドが絞り込み手順を詳しく解説し、QGISでのSAM記事が得意な対象を扱う。QGIS AI hubがpluginを比べ、製品ページはAI Segmentationだ。