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

QGISで建物フットプリントを自動検出する方法

0:00 / 0:00
1つの範囲、1つの単語、848棟。実際の処理を3xに高速化。カットなし。

私はパリ中心部のゾーンで自動検出を実行し、1回の処理で635個のポリゴンが返ってきました。残す82個を決めるほうが検出そのものより時間がかかり、ほぼすべてのチュートリアルが省いているのはこの2つ目の作業です。

Dense Parisian city blocks before and after automatic building detection (after)
Dense Parisian city blocks before and after automatic building detection (before)
ImageryDetected
ドラッグして比較
One automatic pass over central Paris, on Google Satellite imagery. Every polygon gets its own colour so neighbours stay separate. Drag the handle to compare.

要約。 で建物フットプリントを自動検出するには、plugin managerからAI検出pluginをインストールし、画像を読み込み、範囲を描き、対象物に名前を付けて実行します。プロジェクトのCRSにあるポリゴンlayerが得られます。その後、信頼度と面積で生の出力をフィルタリングします。返ってくるもののかなりの割合は建物ではないからです。

建物フットプリントとは

建物が地面と接する部分の輪郭を、平らなポリゴンとして表したものです。屋根でも、区画でも、住所ポイントでもありません。

ここで重要なのは、垂直画像から得られるのは屋根だからです。5階建てのオスマン様式の街区をほぼ真上から撮影した場合、ずれは小さいでしょう。高層タワーではそうはいきません。フットプリントlayerを約束する前に知っておく価値があります。

まずオープンデータを確認する

多くの仕事では、何も検出する必要がありません。

  • OpenStreetMapは、マッパーが活発な地域なら非常に優れており、建物には属性も付いています。QuickOSMで読み込めます。
  • Microsoft Global ML Building Footprintsは、機械抽出された10億を超える建物を収録しており、北米で特に強力です。
  • Google Open Buildingsは、OSMのカバレッジが最も薄いグローバルサウスをカバーしています。
Three panels of the same dense Luanda neighbourhood on Google Satellite imagery, with building footprints in green. OpenStreetMap shows none, Microsoft covers most, Google Open Buildings covers nearly all.
The same 1 km² of Luanda, on Google Satellite imagery. OpenStreetMap maps no buildings here, Microsoft finds 3,140, Google Open Buildings 4,468. Over a dense African neighbourhood the dataset you reach for decides whether you get everything or nothing.

いずれか1つを画像に重ねます。カバレッジに穴がある、撮影時期が合わない、またはクライアントから渡された特定のオルソフォトとフットプリントを一致させる必要がある場合にだけ、次へ進みます。

50棟未満なら、手で描く

手動でデジタイズします。無料で正確。この規模なら、私なら今でも自分でやります。まずスナップをオンにしてください(Project -> Snapping Options、vertexとsegment、topological editing on)。そうしないと、午後いっぱい細長い隙間を削除することになります。

60棟目あたりから、6棟目なら決してしなかったような手抜きを始めますが、それに気づきません。すでにlayerに入っているからです。

自動で行う方法

ここで使うpluginは AI Segmentation です。私と共同創業者がTerraLabで開発しているものなので、誰のツールかを踏まえてこのセクションを読んでください。他のpluginと同じくplugin managerからインストールできます。手動でのダウンロードも、Python環境も、専用グラフィックスカードも必要ありません。モデルは私たちのサーバーで動きます。Windows、macOS、Linuxに対応しています。

範囲を描き、buildingsと入力して、Detectを押します。それがpromptのすべてで、好みの言語で構いません。結果はタイル単位で順に返り、プロジェクトのCRSにある1つのポリゴンlayerになります。

The AI Segmentation panel in QGIS with the Semi-Auto and Automatic switch
Automatic mode: pick the imagery layer, draw a zone, name the object.

覚えておく価値がある設定はprecisionで、これはタイルサイズです。小さいタイルならモデルが近くを見られるため、小さな対象物に向いています。大きいタイルなら文脈が得られるため、農地の区画に向いています。タイルが料金単位でもあり、1枚につき1クレジットです。各アカウントには毎月無料枠があり、カードは不要で、Proがその枠を引き上げます。検出は欧州のサーバーで実行され、画像を学習に使うことはありません。何もマシンの外に出せない場合に備えて、小さなローカルモデルもあります。

その後、パネルでは何かがlayerになる前に3つの手順を案内します。残すものを Keep にフィルタリングし、モデルが見落としたものを Correct し、出力 Shapes を選びます。完全ガイドですべてを説明しています。最初の手順が勝負を決めるため、次のセクションで扱います。

フィルタリングが作業の中心

生の検出出力は、信頼度スコア付きの候補ポリゴンの集合です。密集した画像では、その大半が小さく不確かです。今回のパリの実行では両方のフィルタを完全に開いて書き出したため、すべての候補がlayerに入りました。1.18 km²に635ポリゴンです。

1 m²101001 00010 000 m²50 m²
Every one of the 635 detections, binned by area on a log scale. Two humps: noise under 5 m², real buildings above 160 m². The 50 m² line falls in the valley between them, which is why it is not an arbitrary number. Median 3.2 m², largest 13,528 m², median confidence 0.26.

返ってきたものの半分は駐車スペースより小さいものです。換気口、天窓、階段室の小屋、囲まれた中庭の物置。画像上には実在するものを正しく輪郭化していますが、誰も建物フットプリントと呼ぶものではありません。

そのためフィルタリングします。パネルの2つのスライダーを動かすか、属性テーブルでSelect by Expressionを使って同じ処理を行います。

"area_m2" >= 50 AND "score" >= 0.5

これで635個中82個のポリゴンが残り、合計263,658 m²のうち222,338 m²をカバーします。しきい値を私の言葉だけで決めず、自分で動かしてみてください。緑はフィルタを通過し、白は通過しません。

Aerial imagery of dense Parisian blocks with detected building polygons drawn over it

82 / 635polygons kept (13%)

84%of the built area (222,338 m²)

The same 635 detections the attribute table holds. Drop the confidence to zero and the courtyard sheds and skylights come back.

1つ目をドラッグする間、2つ目の数字を見てください。ポリゴンの87%を捨てても、面積の16%しか失いません。残りは、ツールが役に立つかどうかを考えながら、1つずつ手で削除することになったノイズです。

仕事に合わせて両方を調整します。工業用倉庫の調査なら、面積の下限を200 m²まで上げられます。インフォーマル居住地をマッピングする場合、50 m²では実在する住宅まで捨ててしまうので、15まで下げ、代わりに信頼度スコアを重視します。

きれいな結果とは

パリは難しいケースです。同じツールを約10 km西の戸建て住宅で使うと:

Detached and semi-detached houses in a Paris suburb, each house filled with its own colour
Detached housing, review filter on. One polygon per house, almost nothing to throw away.

85

median polygon area

Paris run: 3.2 m²

0.79

median confidence

Paris run: 0.26

251polygons

kept, out of 251 returned

Paris run: 82 out of 635

同じツール、同じ都市で、捨てるものはありません。変わったのはモデルではなく、建物の密集のしかたです。

ここで破綻する: 連続した高密度ブロック

Close view of Haussmann blocks, each block one coloured polygon following the street edge with courtyards cut out
The outline follows the street edge precisely and cuts out the courtyards. What it does not do is split the block into individual addressed buildings.

各ポリゴンは街区全体の建物の外形をたどり、道路線に沿いながら中庭を正確に切り抜きます。建物面積や不透水面には適していますが、住所ごとに1つのポリゴンが必要なら不適切です。垂直画像を読むモデルでも、隣接する2つの建物の境界壁を見つけることはできません。上から見て、そこには何も見えないからです。

だから、歴史的な都心部で住所ごとのlayerを作るために自動検出は使いません。そこでは地籍データに手動修正を加える方法が勝ちます。

ジオメトリを整える

3つのネイティブQGISツールでフットプリントlayerを整えられます。順番が重要なのは、Simplifyが直角に整えたばかりの頂点を動かすからです。

  1. Simplify。航空画像上で許容値0.5 m。頂点数を大きく減らし、気づくほど境界を動かしません。
  2. Orthogonalize。ほぼ直角の角を直角に整えます。まだ角が整っていないオープンデータや手描きの作業で使います。
  3. Delete holes。塗りつぶしたフットプリントが必要な場合のみ使います。パリの結果では使いません。穴は中庭で、正しいからです。

検出済みlayerでは、2番目の手順はほぼ何もしません。推測せずに測定しました。検出された190棟にOrthogonalizeを実行し、1,845個すべての角を前後で比較しました。

87.9%

corners already within 1° of square

before running anything

87.9%

after Orthogonalize

the same 1,845 corners

1.7cm

median vertex shift

9.1 cm at the worst

Close view of detected building outlines on aerial imagery, corners meeting at right angles
The same detections, close in. The corners arrive square, so the cleanup step has nothing left to snap.

直角でない12%は、連続したテラスハウスです。街区の中央を下る段差のある縁を見てください。これは実際の屋根の線に沿った段差で、モデリングエラーではないため、どんな角ツールでも直せません。

どの方法を使うか

オープンデータ手動デジタイズ自動検出
コスト無料無料無料枠、その後は有料
準備数分なし数分
得意な用途すでに十分カバーされている区域約50棟未満数百から数千棟
画像との一致いいえはいはい
チーム間で一貫はいいいえはい
連続した高密度ブロックさまざまはい街区の外形のみ
明示できる出典データセットと撮影時期あなたあなたの画像、信頼度スコア付き

よく聞かれる質問

ドローン画像で使えますか?
衛星画像より向いています。ソースより地上解像度が重要です。5 cmのオルソフォトは、30 cmの衛星シーンより境界がきれいで信頼度も高くなります。

GPUは必要ですか?
いいえ。どちらのモードもデフォルトでは私たちのサーバーで動き、小さなローカルモデルは自分のCPUで動きますが、速度も精度も劣ります。すべてをマシン内に留めたいなら、Geo-SAMsamgeoは無料で性能も良く、NVIDIAカードを必要とします。

1回の処理にはいくらかかりますか?
自動モードではタイル1枚につき1クレジット、セミオートでは保存したオブジェクト1つにつき1クレジットです。各アカウントには毎月無料枠があり、ローカルモデルは完全に無料です。

Try it free in QGIS, no card needed