跳至內容
AI Segmentation
QGIS
教學

QGIS 建物偵測與建物輪廓萃取:3 種方法

發布於 更新於

要在 QGIS 裡偵測建物輪廓,您有三條路:下載開放資料集、在自己的影像上跑 AI 偵測外掛,或手動數化。最快的是第二種。從外掛管理員安裝外掛,載入您的影像,框選一個範圍,輸入 buildings,按下「偵測物件」,多邊形圖層就會落在您的專案 CRS 裡。

篩選是工作的另一半。跑出來的結果有很大一部分不是建築,所以要用信心分數和面積把原始輸出砍掉。我在巴黎市中心跑了一次,得到 635 個多邊形,而決定留下哪 82 個,花的時間比偵測本身還久。

0:00 / 0:00
一個區域、一個單字、848 個建物。真實執行,加速 3 倍,沒有剪輯。
您的情況方法時間
OpenStreetMap、Microsoft 或 Google 已經覆蓋的區域方法 1:下載開放建物輪廓幾分鐘
數百到數千棟建築,在客戶指定的那張影像上方法 2:自動偵測(我們的,雲端)848 棟 57 秒,再加篩選
五十棟以下建築,或需要一門牌一多邊形的歷史中心方法 3:手動數化看您畫多快

永遠先看開放資料。只有覆蓋有破洞、年份不對,或輪廓必須跟客戶給的那張正射影像對齊時,才往下走。

方法 1:下載開放建物輪廓

您需要 QGIS 3.22 或更新版、一份您信得過的影像圖層,以及方法 2 用的網路連線。三種方法都不需要獨立顯示卡。

很多案子根本不需要偵測。三個開放資料集加起來覆蓋全球大部分地區,但在同一個街區,它們的棟數可以差到數千棟。

挑選適合所在區域的資料集

OpenStreetMap在貢獻者活躍的地方品質很好,建築還帶屬性。Microsoft Global ML Building Footprints有超過十億棟機器萃取的建築,在北美最強。Google Open Buildings覆蓋全球南方,那裡 OSM 最稀疏。

對照您的影像載入其中一個

用QuickOSM把 OSM 拉進來。

放大檢視邊緣

看一眼邊緣,就知道可以停在這裡,還是要繼續往下看。

羅安達同一個密集街區的三張圖,底圖為 Google Satellite 影像,綠色為建物輪廓。OpenStreetMap 一棟都沒有,Microsoft 涵蓋大部分,Google Open Buildings 幾乎全部涵蓋。
羅安達同一個 1 km²,底圖為 Google Satellite 影像。OpenStreetMap 在這裡沒有任何建物,Microsoft 收錄 3,140 個,Google Open Buildings 收錄 4,468 個。這只是一個街區,不是排名:請查看各資料集在您自己的區域收錄了什麼。

適合情況: 該區已經被畫得很好,且您能接受該資料集的年份和授權。

跳過時機: 覆蓋有破洞、年份不對,或輪廓必須跟某一張正射影像對齊。

方法 2:自動偵測

建物輪廓是建築貼地的外框,畫成一個平面多邊形。不是屋頂,不是地籍宗地,不是地址點。這裡重要,因為垂直影像給您的是屋頂:五層樓的 Haussmann 街區用近乎正射的角度拍,偏移很小,高塔就不一樣了。承諾要交建物輪廓圖層之前先知道這件事,更長的版本在建物輪廓是什麼。

自動偵測模型讀您的影像,把建築外框當多邊形回傳,每個多邊形帶一個信心分數。我們自己做了一個,AI Segmentation。這一節講的是我們自己的工具。

它跟其他外掛一樣從外掛管理員安裝:不用手動下載,不用弄 Python 環境,不用獨立顯示卡,因為模型跑在我們的伺服器上。Windows、macOS、Linux 都可以。

自動建物偵測前後的巴黎密集街區 (after)
自動建物偵測前後的巴黎密集街區 (before)
影像偵測結果
拖動比較
在 Google Satellite 影像上對巴黎市中心做一次自動偵測。每個多邊形各有自己的顏色,相鄰的建物才分得開。拖曳滑桿即可比較。

安裝並選擇影像圖層

從外掛管理員安裝,打開面板,選您要判讀的網格圖層。

QGIS 中的 AI Segmentation 面板,可切換半自動與自動模式
自動模式:選擇影像圖層,畫出區域,輸入物件名稱。

畫出區域並輸入物件名稱

框選一個範圍,輸入 buildings,按下「偵測物件」。這就是整個 prompt,您想用自己的語言寫也可以。結果會一塊一塊串流回來,成為專案 CRS 裡的一個多邊形圖層。

物件很小時,調整精細度

唯一值得學的設定是精細度,也就是圖磚大小。小圖磚讓模型看很近,小物件需要這個。大圖磚給它脈絡,農地坵塊需要這個。

篩選回傳的結果

任何東西變成圖層之前,面板會帶您走三步:篩選要保留的、修正模型漏掉的、選輸出的形狀。第一步決定成敗,下面整節講它。

清理幾何圖形

Simplify、orthogonalize、delete holes,照這個順序,只在每一步真的有用時用。三個工具和順序的理由在下面。

一次執行算您框住的地面面積。每個帳號每個月都有免費額度,不用綁卡,Pro 可以拉高。偵測跑在歐洲伺服器,我們不用您的影像訓練,如果什麼都不能離開您的電腦,也有一個小的本機模型。完整指南把「保留」、「修正」、「形狀」全部講完。

篩選才是整份工作

原始偵測輸出是一堆帶信心分數的候選多邊形。在密集的影像上,大部分又小又不確定。這次巴黎的執行我把兩個過濾器都放到最寬,讓每個候選都進圖層:1.18 km² 裡 635 個多邊形。

1 m²101001 00010 000 m²50 m²
635 個偵測結果全數依面積分組,使用對數尺度。有兩個高峰:5 m² 以下是雜訊,160 m² 以上是真正的建物。50 m² 這條線落在兩者之間的低谷,所以它不是隨意取的數字。中位數 3.2 m²,最大 13,528 m²,信心度中位數 0.26。

跑回來的一半比一個停車位還小:通風口、天窗、樓梯間、庭院小棚。都是影像上真實存在的東西,框得也對,但沒有人說的建物輪廓是指這些。

所以要篩。在面板上拖兩個滑桿,或用屬性表格的 Select by Expression 做一樣的事:

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

這樣會留下635 個中的 82 個多邊形,面積從總共 263,658 m² 留下 222,338 m²。門檻不要只聽我的,自己拖拖看。綠色是您的過濾器留下的,白色不是。

巴黎密集街區的航照影像,上面疊加了偵測到的建物多邊形

82 / 635個多邊形保留 (13%)

84%的建成面積 (222,338 m²)

屬性表格裡同樣的 635 個偵測結果。把信心度降到零,庭院小棚與天窗就會回來。

拖第一個的時候盯著第二個數字看。丟掉 87% 的多邊形,只花掉 16% 的面積,剩下的是雜訊,反正您本來也要一個一個手動刪,還會一邊懷疑工具到底行不行。

兩個門檻都要跟著案子調。調查工業倉庫,面積下限可以推到 200 m²。畫非正式住區,50 m² 會丟掉真房子,降到 15,改靠信心分數。

乾淨的結果長什麼樣子

巴黎是很硬的案例。同一個工具往西約 10 公里,面對獨棟住宅:

巴黎郊區的獨棟與雙拼住宅,每棟房屋以各自的顏色填滿
獨棟住宅,已開啟檢視篩選。每棟房子一個多邊形,幾乎沒有需要丟掉的。

85m²

多邊形面積中位數

巴黎那次執行:3.2 m²

0.79

信心度中位數

巴黎那次執行:0.26

251個多邊形

保留,共回傳 251 個

巴黎那次執行:635 個中保留 82 個

同一個工具,同一個城市,幾乎沒有東西要丟。變的是建成地景,不是模型。

會失敗的地方:連續密集街區

奧斯曼式街廓的近景,每個街廓是一個沿著街緣描出的彩色多邊形,庭院已挖除
輪廓精準貼合街緣並挖除庭院,但不會把街廓拆成一棟一棟有門牌的建物。

每個多邊形描的是整個街區的建築外框,貼著街廓線,庭院正確挖掉。算建成區或不透水面很好用,要一門牌一多邊形就不對。沒有任何讀垂直影像的模型能找到兩棟相連建築之間的共用牆,因為從上面看,那裡根本沒有東西可以看。

幾何清理

三個 QGIS 原生工具整理建物輪廓圖層,順序重要,因為 simplify 會動到您剛拉直的頂點。

  1. Simplify,航照影像用 0.5 m 容差。頂點數大砍,邊界位移小到您不會發現。
  2. Orthogonalize。把接近直角的角吸成直角。開放資料和手繪成果用它,因為那些角還沒被拉直過。
  3. Delete holes,只有您想要實心輪廓才用。巴黎這個結果不要用:那些洞是庭院,是對的。

在偵測出來的圖層上,第 2 步幾乎是空轉。我沒有用猜的,直接量過:拿 190 棟偵測建築跑 Orthogonalize,比對全部 1,845 個角的前後。

87.9%

的角已在直角 1° 以內

尚未執行任何處理時

87.9%

執行 Orthogonalize 之後

同樣的 1,845 個角

1.7cm

頂點位移中位數

最大為 9.1 cm

航照影像上偵測到的建物輪廓近景,角落呈直角相接
同樣的偵測結果,拉近來看。角落一開始就是方的,所以清理步驟沒有東西可以再吸附。

不正交的那 12% 是連棟透天。看街區中間那條階梯狀邊緣就知道。沒有角工具修得好,因為那些階梯跟的是真實屋頂線,不是建模誤差。

適合情況: 數百到數千棟建築,在指定的影像上,或好幾個人必須用同一套方式產出同一個圖層。

跳過時機: 在歷史市中心需要一門牌一多邊形。我不會在那裡用自動偵測,地籍資料加手動修正會贏。

在 QGIS 免費試用 AI Agent,不需信用卡

方法 3:手動數化

五十棟以下,自己畫。免費、精準,這個數量我到現在還是會自己畫。

開啟接合

Project -> Snapping Options,vertex 加 segment,開啟 topological editing。不開的話,您會花整個下午刪碎片。

描圖時,留意自己漸漸走樣

畫到第 60 棟左右,您會開始走捷徑,第 6 棟時您絕對不會這樣畫,而您自己不會發現。誤差已經進圖層了。

適合情況: 大約五十棟以下,或在密集的歷史中心需要一門牌一多邊形。

跳過時機: 數量跑到數百棟,或好幾個人要用同一套方式產出同一個圖層。

重點回顧

開放資料集自動偵測手動數化
成本免費免費額度,之後付費免費
設定幾分鐘幾分鐘無
適合已覆蓋良好的區域數百到數千棟約 50 棟以下
是否貼合您的影像否是是
團隊一致性是是否
密集連續街區視情況只有街區外框是
可交代的來源資料集與年份您的影像,附信心分數您本人

先查開放資料集。同一個街區它們可以差到數千棟,所以拿它們的邊緣跟您的影像對一下,就知道要不要繼續。

必須跟客戶正射影像對齊的輪廓,不管覆蓋多好,都不選開放資料集。

偵測的大部分工夫在篩選:巴黎市中心 635 個留 82 個,保住 84% 的建築面積。

垂直影像在相連建築的地方,給不出一門牌一多邊形,花多少錢都一樣。去接合地籍資料。

超過五十棟左右,手動數化會默默走樣。

常見問題

無人機影像可以用嗎?

比衛星更好用。地面解析度比來源重要:5 cm 正射影像的邊界和信心分數,會比 30 cm 衛星場景乾淨得多。

需要 GPU 嗎?

不用。兩種模式預設都跑在我們的伺服器上,小的本機模型跑您自己的 CPU,比較慢也比較不準。如果您要全部留在本機,Geo-SAM和samgeo免費而且很好,它們會想要一張 NVIDIA 卡。

跑一次多少錢?

自動偵測算您框住的地面面積,雲端 AI 按存檔算一個物件。半自動模式在您自己的電腦上跑免費。每個帳號每個月都有免費額度。

可以一門牌一多邊形嗎?

在建築相連的市中心,垂直影像做不到。模型回傳的是整個街區的建築外框,庭院有挖掉,算建成區是對的,算門牌是錯的。去接合地籍資料。

開放資料集先從哪個開始?

您的區域有活躍的 OSM 貢獻者,就先用 OpenStreetMap。沒有的地方落差很大:羅安達那個 1 km² 街區,OSM 一棟都沒有,Microsoft 收錄 3,140 棟,Google Open Buildings 收錄 4,468 棟。

什麼軟體可以為都市計畫偵測建築物輪廓?

做規劃研究時,先從免費的 QGIS 開始:載入開放的建築輪廓資料(OpenStreetMap、Microsoft、Google Open Buildings),再對照最新影像檢查。對於缺漏或過時的區域,像 AI Segmentation 這樣的自動偵測外掛可以依據你自己的正射影像繪製建築物,讓圖層與你的影像日期一致。ArcGIS Pro 也有預訓練的建築物模型,但需要付費授權,還要有 GPU 才跑得快。要完成整張地圖,從資料到帶有樣式的列印版面,AI Agent 只要一句話就能在 QGIS 中完成這些步驟。

屋頂和地面的落差全文,讀建物輪廓是什麼。已分類網格資料的情況,直接向量化比任何模型都好用,讀QGIS 網格轉向量。同樣的「框選區域加篩選」方法也能找出那些屋頂上的太陽能板:QGIS 太陽能板偵測會帶您走一遍。若要在新的區域重複這套偵測與篩選流程,又不想逐一點擊,AI Agent 能在 QGIS 中用一句指令完成。棕地在偵測結果中常是殘留的水泥地面與棚屋,而不是乾淨的屋頂,綠地與棕地一文說明兩者從空中看起來各是什麼樣子。QGIS AI 中心列出我們做的其他東西。

立即使用我們的免費工具完成

Building footprint downloader

開啟免費工具

在 QGIS 裡開口就能完成

AI Agent 會在你自己的 QGIS 專案中,執行你描述的任務。免費使用,不需信用卡。

免費試用 AI Agent
由以下作者撰寫Yvann Barbot
·3 min read