QGISでプールを検出する5つの方法

でプールを検出するには、まずOpenStreetMapを確認する:Vector > QuickOSM > QuickOSM…、キーleisure、値swimming_pool。地図が薄い地域では、raster計算機で青のしきい値を取るか、segmentationモデルを実行する。地上解像度がどれを使うかを決める。
ネット上の解説が間違っている点
フォーラムやチュートリアルで繰り返される3つの回答があり、それぞれが1日の無駄になる。
**「Sentinel-2にNDWIをかけてプールを数える。」**グリーンとNIRは10m、SWIRは20mで来るが、新設の埋め込み式プールは29〜30m²だ。画素の3分の1である。郊外にMNDWIをかけると、町の端の貯水池だけが返り、庭のプールは何も出ない。
**「青でしきい値を取ればプールが取れる。」**色のルールは色しか読まない。青い金属屋根も薪の上の防水シートも通るし、暗いライナーのプールも藻で緑のプールも落ちるし、カバー付きプールは画像にそもそも写らない。
**「検出結果がリストになる。」**フランス税務当局はIGNの航空写真でこれを実行しても、なお全所有者に書簡を送った。検出結果は候補であり、それを区画と氏名に結合すると個人データになる。
短い答え
| 入力 | 手法 | コスト |
|---|---|---|
| OSMマッパーが活発な地域 | 方法1、QuickOSMでleisure=swimming_pool | 無料、1クエリ |
| 5〜30cmのRGBオルソフォト | 方法2、raster計算機での色しきい値 | 無料、コアQGIS内 |
| 近赤外またはSWIRバンド付き画像 | 方法3、水指数の後にしきい値 | 無料、衛星では庭プールに盲目 |
| マルチスペクトル画像と半日 | 方法4、SCPまたはdzetsaka | 無料のplugin、訓練エリアを描く時間 |
| RGBオルソフォトと数百のプール | 方法5、segmentationモデル | 無料のpluginは自作モデルかGPUが必要。クラウドのpluginは無料枠の後にサブスクリプション |
比較方法
5つの基準:入力、画像が自分のマシンを離れるか、手で確認する出力の量、コスト、導入の手間。すべてのバージョン、価格、メニューパスは2026年9月3日にQGIS 3.44マニュアルと各ツールの文書に当たった。無料の手法はフランス郊外のオルソフォトと同ブロックのSentinel-2シーンで実行した。
私たちはこの5つのうち1つを作っている。それが方法5だ。公表精度の数字に誰かが署名する一斉調査には、代わりにMapflowを使うこと。専用のSwimming poolsモデルがあり、オンデマンドで、F1が0.95超と添えられている。私たちはプールの数字を公表していない。
始める前に
面積でフィルタする3つの手順があるので、投影CRSで作業すること。それから解像度を確認する。フランスのプール連盟によれば新設の埋め込み式プールは29〜30m²で、10cmオルソフォトでは3,000画素、10mのSentinel-2バンドでは1画素の3分の1だ。
フランス税務当局はIGNの航空写真でこれを運用している。Foncier innovantパイロットは2022年分として9県で20,356件のプールに課税し、9.8百万ユーロになり、2023年の全国パスでは課税台帳にない課税対象プールが150,000件見つかった。それぞれが所有者への書簡を経ている。
方法1:すでに描かれたプールを取ってくる
OpenStreetMapにはleisure=swimming_poolとタグされた3,036,801オブジェクトがあり、そのうち2,731,704件は実ジオメトリを持つウェイである(2026年9月3日のtaginfo)。
Open QuickOSM and query
Vector > QuickOSM > QuickOSM…、これはOverpass APIに問い合わせる。キーleisure、値swimming_pool、キャンバスの範囲または地名の管理区域で。
Keep polygons, filter to gardens
ノードとして描かれたプールには面積がないので、ポリゴンのlayerを取る。これらのプールのうち1,808,809件にはaccess=privateも付いており、裏庭プールのフィルタになる。
leisure=swimming_areaは別物である:湖や海で泳ぐために指定された場所だ。

**使う場合:**公共・商業プールが必要なとき。
**使わない場合:**誰も申告しなかったものを見つける仕事のとき。
方法2:raster計算機で青のしきい値を取る
コアQGISに最も近い方法だ。Raster > Raster Calculator…を開くと、バンドはlayer_name@band_numberである。RGBオルソフォトでは、明るく彩度の高い青が残る:
("ortho@3" > 90) AND ("ortho@3" - "ortho@1" > 25) AND ("ortho@3" - "ortho@2" > 10)
これらの数値は私のもので、20cmオルソフォトから来た。プール画素を20、屋根画素を20サンプルしてから動かすこと。
Raster > Conversion > Polygonize (Raster to Vector)でポリゴン化し、native:extractbyexpressionでフィルタする:サイズは$area > 6 AND $area < 400、形状はQGISにコンパクトネス関数がないため自作の比4 * pi() * $area / ($perimeter ^ 2) > 0.5。

RGB値は日射角と露出で動くので、1つのフライトラインで調整したしきい値は次のラインで壊れる。色相と彩度の方が持ちが良く、Processing Toolboxのモジュールi.rgb.his経由で使う。これは「transforms raster maps from RGB (Red-Green-Blue) color space to HIS (Hue-Intensity-Saturation) color space」を行う。
どちらのルールも青い物の何かを知らない。
- **影。**日陰の屋根斜面は暗い青に読める。下限を上げると木の下のプールを失う。
- **青い屋根と防水シート。**明るく、青く、しばしば形も合っている。
- **暗底と緑のプール。**黒いライナーはアスファルトに、藻は芝生に読める。私のルールは両方を逃した。
- **カバー付きプール。**画像にそもそもない。

**使う場合:**手で確認する単一で均一なオルソフォトのとき。
**使わない場合:**複数フライトのモザイクのとき。
方法3:バンドがある画像での水指数
水は近赤外をほぼ完全に吸収するので、NIRでは黒くなり、青い屋根は明るいまま残る。
- NDWI、McFeeters 1996:
(Green - NIR) / (Green + NIR)。Sentinel-2では(B3 - B8) / (B3 + B8)。 - MNDWI、Xu 2006:
(Green - SWIR) / (Green + SWIR)。Sentinel-2では(B3 - B11) / (B3 + B11)。NIRをSWIRに替えると市街地が抑えられ、郊外ではそれが要点になる。
ゼロ超でしきい値を取り、ポリゴン化し、方法2と同様にフィルタする。Rodríguez-CuencaとAlonsoは2014年にこの仕事向けのNormalized Difference Swimming Pools Indexを調整した。
Sentinel-2はB3とB8が10m、B11が20mなので、30m²のプールは庭から分離しない。住宅ブロックへのMNDWIは町の端の貯水池だけを返し、他は何も返さない。

**使う場合:**オルソフォトに50cmかそれより細かいNIRバンドがあるとき。色より明らかに勝る。
**使わない場合:**3バンドRGBのとき、またはSentinel-2で庭プールが欲しいとき。
方法4:自分の画像で分類器を訓練する
分類器は描いた例からプール画素を学ぶので、固定しきい値が壊れるモザイクでも持つ。
Semi-Automatic Classification Plugin by Luca Congedoが通常の選択肢だ。SCPドックで訓練入力(.scpx)を作り、ROIを描き、メインウィンドウでSCP > Band processing > Classificationを実行する。Minimum DistanceからRandom Forestまで6アルゴリズム。バージョン9.0.4は2026年7月11日に出たがQGIS最小バージョンを3.99と宣言しているので、QGIS 3.xには8.5.0が入る。
dzetsaka 5.0.11、by Nicolas Karasiakは軽い:11分類器があり、そのGaussian Mixture Modelはscikit-learnなしで動く。
青屋根クラスと影クラスも描くこと。分類器は見せたものしか除外しない。

**使う場合:**複数フライトや季節で、ワークフローを再利用するとき。
**使わない場合:**1枚のオルソフォトの1回きり。どちらも画素を分類するだけで物体ではないので、やはりポリゴン化とフィルタが必要だ。
方法5:segmentationモデル
segmentationモデルは形と文脈を読むので、同色の防水シートとプールを分けられる。私たちはその1つを作っている、AI Segmentation。この節は自社ツールについてだ。
Install and sign in
Plugin manager、QGIS 3.22以降。GPUもモデル重みも不要。アカウント、無料枠、その後は月39ユーロ(税別)。
Draw a zone, type the word, filter
Type swimming pool and run. Polygons come back in the project CRS with area, perimeter and a confidence score. Sort, then delete what is wrong.
実行時に読む調整テーブルからの2つの数値。プールの実行はタイル最大300mで約0.13m/画素を求める。それより粗いとプールがテラスに滲むからだ。レビューはswimming poolで信頼度0.20から開き、buildingの0.30より低い。プールのマスクは屋根より点が低く出るからだ。

1つの限界:カバー付きプールはモデルに届かないので、取り逃す。両クラウドモードはEU内の当社サーバーに画像を送る。

この仕事をする他の4つ(2026年9月3日読み)。
| ツール | 導入物 | GPU | アカウント | 画像がマシンを離れるか | プール対応 | コスト |
|---|---|---|---|---|---|---|
| Deepness | Plugin manager、そのPythonパッケージ、ONNXモデル | 任意、CPUで動く | 不要 | いいえ | 渡したモデルの通り | 無料 |
| Geo-SAM | Plugin manager、依存関係、モデル重み | 任意 | 不要 | いいえ | 1クリックまたはボックスで1物体 | 無料 |
| samgeo | Pythonパッケージ、QGISパネルなし | 推奨 | 不要 | いいえ | スクリプト可、プールクラスなし | 無料 |
| Mapflow | Plugin manager | 不要 | 要 | はい | Swimming poolsモデル、オンデマンド | クレジット、有料 |
| AI Segmentation (ours) | Plugin manager | 不要 | 要 | 両クラウドモードではい、ローカルモデルではいいえ | Type swimming pool | 無料枠、その後は月39ユーロ(税別) |
**使う場合:**手で囲むには多すぎるプール数があるとき。
**使わない場合:**画像をマシンから出せないとき。DeepnessまたはGeo-SAMを使うこと。
5手法を並べる
| 手持ち | 手法 |
|---|---|
| よく描かれた町、公共プールで足りる | 方法1、QuickOSM |
| 30cmより細かいRGBオルソフォト1枚 | 方法2、色しきい値の後にフィルタ |
| NIRバンド付きオルソフォト | 方法3、NDWI |
| Sentinel-2など10mのもの | 庭プールにはどれも不可。より細かい画像を取ること |
| 複数フライト、繰り返すワークフロー | 方法4、SCPまたはdzetsaka |
| 数百のプールと誤検出に付き合う気がない | 方法5、segmentationモデル |
覚えること
最初に解像度が決め、次にバンド、次に吸収できる手確認の量が決める。
30m²のプールは10mでは庭から分離しないので、裏庭プールにSentinel-2は指数を問わず違うセンサーだ。
色しきい値は街区の青い物を全部返すので、結果を見る前に面積とコンパクトネスでフィルタすること。
カバー付きプールは画像にないので、このページのどの手法も見つけられず、価格もそれを変えない。
検出結果は候補だ。何を実行しても、layerに誰かが動く前に信頼度の低い10ポリゴンを開くこと。
Try it free in QGIS, no card needed
よくある質問
QGIS単体でプールを検出できるか?
機能としてはない。コアQGISが出せるのはraster計算機、ポリゴン化、ベクトルフィルタであり、方法2のことだ。物体としてプールを認めるにはpluginが要る。
Sentinel-2画像で裏庭プールを見つけられるか?
いいえ。グリーンとNIRは10mバンド、SWIRは20mなので、30m²のプールは画素の3分の1だ。30cmかそれより良い航空画像を使うこと。
青い屋根がプールとして戻り続けるのはなぜか?
塗装金属屋根はプールの水より明るく青く、色ルールは色しか読まない。面積とコンパクトネスでフィルタし、NDWIに移るか、モデルを使うこと。
航空画像からプールを検出するのは合法か?
検出結果を区画と所有者名に結合すると個人データになり、EUではGDPRの下で法的根拠が要る。税務当局は法律に書かれた根拠を持つ。民間企業は通常持たないので、結合の前にデータ保護責任者に聞くこと。モデルの出力を請求前の最終手順にしないこと。
どの精度を見込むべきか?
1つの数字は嘘になる。画像と季節で動くからだ。20cmの開いたプールはよく返り、カバー付きプールはここにある全手法が逃し、青い屋根は手で消すものだ。
フィルタ手順の全文はdetecting building footprints in QGISを読むこと。マスク裏の掃除はraster to vector in QGIS。残りはQGIS AI hubにある。


