如何在 QGIS 中自動偵測建築物足跡
我在巴黎市中心的一個區域執行了自動偵測,一次就得到 635 個多邊形。決定保留哪 82 個花的時間比偵測本身更久,而這正是幾乎每篇教學都略過的第二部分。


簡短版。 要在
中自動偵測建築物足跡:從 plugin manager 安裝 AI 偵測 plugin,載入你的影像,畫出區域,為物件命名,然後執行。你會在專案 CRS 中得到一個多邊形 layer。接著依信心度和面積篩選原始輸出,因為回傳結果中有很大一部分並不是建築物。
什麼是建築物足跡
建築物與地面接觸處的輪廓,以平面多邊形表示。不是屋頂,不是地籍地塊,也不是地址點。
這裡之所以重要,是因為垂直影像給你的是屋頂。在接近天底角拍攝的五層樓 Haussmann 街廓中,偏移很小。但在高塔上就不是了。在向任何人承諾一個建築物足跡 layer 之前,值得先知道這一點。
先檢查開放資料集
很多工作其實不需要偵測任何東西。
- OpenStreetMap 在繪圖者活躍的地方非常出色,而且建築物帶有屬性。使用 QuickOSM 將它載入。
- Microsoft Global ML Building Footprints 包含超過十億棟機器擷取的建築物,在北美最強。
- Google Open Buildings 涵蓋 OSM 資料最稀疏的全球南方。

將其中一個資料集疊加到你的影像上。只有在涵蓋範圍有缺口、資料年份不對,或建築物足跡必須符合客戶交給你的特定正射影像時,你才需要繼續往下做。
五十棟以下,直接畫出來
手動數位化。免費、精確,而且在這個數量下我仍然會自己做。先開啟 snapping (Project -> Snapping Options, vertex and segment, topological editing on),否則你會花一下午刪除狹長碎片。
在第 60 棟左右,你會開始在第 6 棟絕不會偷懶的地方偷工減料,而自己沒有察覺。它已經在 layer 裡了。
自動偵測的方法
這裡的 plugin 是 AI Segmentation,它是我和共同創辦人在 TerraLab 打造的,所以請在知道工具來自誰的前提下閱讀這一節。它和其他 plugin 一樣從 plugin manager 安裝:不用手動下載,不需要 Python 環境,也不用專用顯示卡,因為模型在我們的伺服器上執行。支援 Windows、macOS 和 Linux。
畫出區域,輸入 buildings,按下 Detect。整個 prompt 就是這樣,如果你偏好,也可以使用自己的語言。結果會隨著圖塊逐一傳回,成為專案 CRS 中的一個多邊形 layer。

唯一值得學會的設定是 precision,也就是圖塊大小。小圖塊讓模型看得更近,這是小物件所需要的。大圖塊則提供情境,農地地塊需要的就是這個。圖塊也是計費單位:每個一個 credit。每個帳戶每月都有免費額度,不需要信用卡,而 Pro 會提高額度。偵測在歐洲伺服器上執行,我們不會用你的影像進行訓練;如果任何資料都不能離開你的電腦,還有小型本機模型可用。
接著,面板會在任何內容成為 layer 之前,引導你完成三個步驟:篩選要 Keep 的內容、Correct 模型漏掉的部分,並選擇輸出的 Shapes。完整指南 涵蓋這三個步驟。第一步是成敗關鍵,因此下一節就來談它。
篩選才是整個工作
原始偵測輸出是一組帶有信心分數的候選多邊形。在密集影像中,大多數候選項都很小且不確定。我把這次巴黎執行結果以兩個篩選器都完全放寬的方式匯出,因此每個候選項都進了 layer:1.18 km² 上共有 635 個多邊形。
回傳結果有一半比停車位還小:通風口、天窗、樓梯間房舍、庭院棚屋。它們都是影像中的真實物件,輪廓也正確,但沒有人會把它們稱為建築物足跡。
所以要進行篩選。移動面板中的兩個滑桿,或在屬性表中使用 Select by Expression 完成同樣的工作:
"area_m2" >= 50 AND "score" >= 0.5
這會留下 635 個中的 82 個多邊形,覆蓋總計 263,658 m² 中的 222,338 m²。與其相信我所選的閾值,不如自己移動它們。綠色代表通過你的篩選,白色則沒有。

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.
拖曳第一個滑桿時,注意第二個數字。丟掉 87% 的多邊形,只會損失 16% 的面積。剩下的都是你本來也得手動逐個刪除的雜訊,同時還會懷疑這個工具到底好不好用。
依工作調整兩者。工業棚屋測量可以把面積下限提高到 200 m²。繪製非正式聚落時,50 m² 會丟掉真實房屋,所以降到 15,改為更多依賴信心分數。
乾淨的結果長什麼樣子
巴黎是個困難案例。同一個工具用在西邊約 10 公里處的獨立住宅上:

85m²
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
同一個工具,同一座城市,沒有需要丟掉的東西。改變的是建成環境,而不是模型。
這裡會失效:密集且連續的街廓

每個多邊形都描繪出整個街廓的建成外框,貼合街道線並正確切出內院。適合建成區面積或不透水表面;如果你需要每個地址一個多邊形,就不對了。任何模型都無法從垂直影像中找出兩棟相連建築之間的共用牆,因為從上方看,什麼也沒有。
所以在歷史城市中心,如果要建立每個地址一個多邊形的 layer,我不會使用自動偵測。地籍資料加上手動修正,在這種情況下更勝一籌。
清理幾何
三個原生 QGIS 工具可以整理建築物足跡 layer,而且順序很重要,因為 Simplify 會移動你剛剛校正成直角的頂點。
- Simplify,在航拍影像上使用 0.5 m 容差。大幅減少頂點數量,但不會把邊界移動到你察覺得到的程度。
- Orthogonalize。將接近直角的角度對齊成方正。對開放資料或手動描繪的成果使用它,因為那裡通常還沒有把角度校正方正。
- 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

那 12% 不方正的角點,是相連露台。看看沿著街廓中央向下延伸的階梯狀邊緣。沒有任何角點工具能修正它,因為那些階梯是沿著真實屋頂線,而不是模型錯誤。
該使用哪種方法
| 開放資料集 | 手動數位化 | 自動偵測 | |
|---|---|---|---|
| 成本 | 免費 | 免費 | 免費方案,之後付費 |
| 設定 | 幾分鐘 | 無 | 幾分鐘 |
| 適合 | 已有良好涵蓋的區域 | 少於約 50 棟建築 | 數百至數千棟 |
| 符合你的影像 | 否 | 是 | 是 |
| 團隊間一致 | 是 | 否 | 是 |
| 密集連續街廓 | 視情況而定 | 是 | 僅街廓外框 |
| 可明確說明的來源 | 資料集與年份 | 你 | 你的影像,附帶信心分數 |
我常被問的問題
無人機影像也能用嗎? 比衛星影像更好。地面解析度比來源更重要:5 cm 正射影像比 30 cm 衛星場景提供更乾淨的邊界和更高的信心度。
需要 GPU 嗎? 不用。兩種模式預設都在我們的伺服器上執行,小型本機模型則在你自己的 CPU 上運作,速度較慢且準確度較低。如果你希望所有內容都留在自己的電腦上,Geo-SAM 和 samgeo 免費且表現不錯,但它們需要 NVIDIA 顯示卡。
執行一次要多少費用? 自動模式每個圖塊一個 credit,半自動模式每儲存一個物件一個 credit。每個帳戶每月都有免費額度,而本機模型完全不花錢。



