QGISで太陽光パネルを検出する5つの方法
公開日 更新日

屋根上の太陽光パネルをQGISで地図にするなら、まず他の人がすでに描いたデータを使います。「ベクタ」→「QuickOSM」→「QuickOSM…」を開き、keyにgenerator:source、valueにsolarを入れて、対象範囲で実行します。OpenStreetMapにはこのタグを持つ6,143,024個のオブジェクトがあり(2026年9月3日時点)、調査が進んだ町なら2分で終わります。カバレッジが薄い地域では自分でアレイを検出することになり、手法はバンド数とピクセルサイズで決まります。
| 入力 | 手法 | コスト |
|---|---|---|
| OpenStreetMapが整備済みの地域 | 方法1:QuickOSM | 無料 |
| マップキャンバスに表示できるラスタならどれでも、どのコンピュータでも | 方法2:クラウドのセグメンテーションモデル | 月1.5km²まで無料、その後€39 |
| 近赤外バンド付きのマルチスペクトル画像 | 方法3:「ラスタ」→「ラスタ計算機」 | 無料、QGISコア |
| 4バンド以上、かつ学習用の範囲を描く時間がある | 方法4:Semi-Automatic Classification Plugin | 無料のプラグイン |
| 20cm前後のRGBオルソ画像、GPUか辛抱強さ | 方法5:Deepness+Solar PVモデル | 無料 |
価格、プラグインのバージョン、タグの件数は、すべて2026年9月3日時点です。
方法1:すでにある地図データを使う
QGISは3.0で独自のOSMダウンローダを廃止し、QuickOSMを案内しています。まずこれをインストールします。
発電設備を検索する
「ベクタ」→「QuickOSM」→「QuickOSM…」でkeyにgenerator:source、valueにsolarを入れ、範囲か地名を指定して実行します。屋根上のアレイはpower=generatorを持ち、多くはgenerator:method=photovoltaicも持っています。
発電所は別に検索する
野立てのメガソーラーはpower=plant+plant:source=solarでタグ付けされており、別のクエリになります。これを忘れると、野立てがすべてレイヤから漏れます。
kWはレジストリで確認する
ドイツのMarktstammdatenregisterは日次のXMLで提供されますが、30kW以下の設備は座標が伏せられ、屋根上のものは郵便番号の単位までしかわかりません。フランスのレジストリはIRIS区止まりで、36kW未満は集計行にまとめられています。

学習用や検証用に使える公開データは3つあります。Bradbury et al.はカリフォルニアの4都市で、注釈付きの19,863個のPVポリゴンを30cmで公開しており、ライセンスはCC0です。BDAPPVはフランスの28,807件の設備とマスクを含み、CC BY 4.0です。DeepSolarは米国本土で147万件のシステムを数えましたが、公開されたのは国勢調査区ごとの件数で、ポリゴンではありません。
使う場合: 対象地域が調査済みの場合、または形状より容量が必要な場合。
見送る場合: カバレッジにムラがある場合。ムラは見て初めてわかります。
方法2:クラウドのセグメンテーションモデル
セグメンテーションモデルはアレイの見た目を学習済みのため、方法3や方法4では難しい、暗い屋根との分離ができます。その1つを私たちが開発しています。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,931m²になりました。
solar panelと入力し、solar farmとは入力しないでください。後者は設備全体を尋ねる指示になるため、モデルは一様な1つの面を返すか、何も返しません。実行例は少ないものの、24タイル中21タイルが空でした。
最適: 地区規模の屋根上アレイを、どのコンピュータでも。
不向き: モジュール数。密なアレイは1つの面として返るため、QGISで分割するか、既知のモジュール寸法で割ります。住宅用モジュールは約1.7m×1.1mです。
価格: 月1.5km²まで無料、カード不要。Proは月€39(税抜)。Proを7日間無料でお試しいただけます。カードを登録し、期間が終わる前に解約すれば、料金は請求されません。
実行環境: 欧州にある当社のサーバー。
インストール: プラグインマネージャからインストールします(QGIS 3.22以降)。その後はパネルからログインします。
方法3:ラスタ計算機でしきい値処理
投影座標系のCRSで作業してください。以下の2つの手順は、レイヤの単位で面積を取るためです。

「ラスタ」→「ラスタ計算機」を開きます。アルゴリズムIDはnative:rastercalcです。パネルは暗く、近赤外では暗い屋根よりさらに暗くなるため、赤とNIRの正規化指標で多くのシーンを分離できます。その後、gdal:sieveで斑点を除き、gdal:polygonizeでポリゴン化します。
RGBの3バンドでは、暗い屋根とパネルが同じ値になるため、この方法は失敗します。たいていはテクスチャが救いになります。grass:r.textureは13種のGLCM指標を計算し、アレイはコントラストが高く、逆差分モーメントが低くなります。GRASSはWindowsのインストーラには同梱されますが、macOSのバンドルには入っていません。
使う場合: 近赤外バンド付きの、きれいな1シーンがある場合。
見送る場合: 画像が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のいずれかで分類します。QGIS 3.xでインストールされるのはバージョン8.5.0で、GPL v3、ダウンロード数は2,644,482回です。
そのFAQは、多くの人が使う入力をはっきり除外しています。「You cannot use orthophotos with less than 4 bands」。4バンド未満では、アルゴリズムがクラスを分けられないためです。
使う場合: 4バンド以上があり、再現できる形で文書化された分類が必要な場合。
見送る場合: 入力がRGBオルソ画像やベースマップの場合。
方法5:Deepnessでローカルモデルを使う
地上解像度がすべてを決めます。Bradbury et al.は、「solar panels are typically between 1 and 2 meters in length」であるため、基準となるPVデータセットを30cmで作成しました。これで各パネルに数ピクセルが載ります。解像できるのはアレイであり、その中のモジュールではありません。Clark and Pacificiは、個々のパネルは「difficult to distinguish even at 15.5 cm resolution」としています。公開されている屋根上PVの研究は、10cm〜31cmの範囲にあります。10mのSentinel-2は野立て向けで、屋根には使いません。
DeepnessはQGIS内でONNXモデルを実行するプラグインで、無料、Apache 2.0です。モデルZOOには、Kleebauer et al.が学習しFraunhoferがホストするSolar PV Segmentationモデルが20cm/pxで入っています。オルソ画像を指定するとパネルのマスクが得られます。アカウントは不要で、画像がお使いのコンピュータの外に出ることもありません。
課題は速度です。あるユーザーは同じモデルをCPUで計測し、「80+ minutes for a digital Orthophoto tile (20 cm resultion, 5000 points in each direction)」と報告しました。そのissueは今も未解決です。このモデルのほかに、保守の行き届いた屋根上PVの公開モデルはありません。
使う場合: 画像をコンピュータの外に出せず、オルソ画像が20cm前後の場合。
見送る場合: NVIDIAカードがなく、広い地区を対象にする場合。
5手法の比較表
| QuickOSM | AI Segmentation | ラスタ計算機 | SCP | Deepness | |
|---|---|---|---|---|---|
| 必要なバンド数 | なし | 3 | NIRが有効 | 4以上 | 3 |
| 画像は手元に残る | はい | いいえ | はい | はい | はい |
| GPU | いいえ | いいえ | いいえ | いいえ | 推奨 |
| 出力 | OSMのポリゴン | アレイごとのポリゴン | ラスタマスク | クラスのラスタ | パネルのマスク |
| コスト | 無料 | 月1.5km²まで無料、その後€39 | 無料 | 無料 | 無料 |
覚えておくこと
まずOpenStreetMapを引きます。調査済みの町は2分で終わり、現地を歩いたマッパーに検出は勝てません。
画像をコンピュータから出せない場合は、DeepnessとそのローカルのSolar PVモデルなら、すべてお使いのコンピュータ上で処理できます。
RGBのベースマップでは、ラスタ計算機もSCPも使えません。どちらも値だけではパネルと暗い屋根を分けられないからです。
30cm前後ならアレイは解像できますが、その中のモジュールはどの解像度でも解像できません。面積を描き、画像からパネル数は数えないでください。
kWは電力のレジストリから取り、写真からは取りません。フランスとドイツのどちらのレジストリも、小規模な屋根上設備の位置をぼかしています。
よくある質問
QGIS単体で太陽光パネルを検出できますか?
いいえ。QGISコアにあるのはしきい値処理とポリゴン化で、どちらも分光的な差が必要なため、RGBのベースマップでは何も得られません。検出はプラグインで行い、ローカルならDeepness、クラウドなら当社のものを使います。
必要な画像解像度はどれくらいですか?
目安は30cm前後で、アレイが見えます。Bradbury et al.に倣った基準です。個々のモジュールは15.5cmでも見分けにくいため、パネルの数を数えるのではなく、アレイと面積を描く前提で組んでください。
パネルと暗い屋根を見分けるにはどうすればよいですか?
3バンドでは、値だけでは見分けられません。近赤外バンド、grass:r.textureのようなテクスチャ指標、またはアレイの見た目を学習したモデルを使います。
野立ての太陽光発電所も見つかりますか?
はい。OpenStreetMapでは別のクエリになり、power=plant+plant:source=solarを使います。モデルでは、野立てにもsolar panelと入力します。モデルは各パネルを検出するのであり、敷地全体を検出するのではないからです。
設置されているパネルの数を数えられますか?
画像からは数えられません。検出で得られるのは外形と面積です。モジュール数とkWはレジストリから取り、フランスではIRIS区止まりです。
建物フットプリントのガイドでは絞り込みの手順を詳しく解説し、QGISでのSAMの記事では、これらのモデルが得意な対象を扱っています。検出と面積の集計を、プラグインを手で操作する代わりに1つの指示でまとめて実行したい場合は、AI Agentが同じQGISプロジェクトの中で行います。QGIS AIハブではプラグインを比較しており、製品ページはAI Segmentationです。
で地図にするなら、まず他の人がすでに描いたデータを使います。「ベクタ」→「QuickOSM」→「QuickOSM…」を開き、keyに

