QGIS 建築輪廓萃取:3 種方法
發布於 更新於
要在 QGIS 裡偵測建築足跡,你有三條路:下載開放資料集、在自己的影像上跑 AI 偵測 plugin,或手動數化。最快的是第二種。從 plugin manager 安裝 plugin,載入你的影像,框選一個範圍,輸入 buildings,按下 Detect,polygon layer 就會落在你的 project CRS 裡。
篩選是工作的另一半。跑出來的結果有很大一部分不是建築,所以要用信心分數和面積把原始輸出砍掉。我在巴黎市中心跑了一次,得到 635 個多邊形,而決定留下哪 82 個,花的時候比偵測本身還久。
| 你的情況 | 方法 | 時間 |
|---|---|---|
| OpenStreetMap、Microsoft 或 Google 已經覆蓋的區域 | 方法 1:下載開放足跡 | 幾分鐘 |
| 數百到數千棟建築,在客戶指定的那張影像上 | 方法 2:自動偵測(我們的,雲端) | 848 棟 57 秒,再加篩選 |
| 五十棟以下建築,或需要一門牌一多邊形的歷史中心 | 方法 3:手動數化 | 看你畫多快 |
永遠先看開放資料。只有覆蓋有破洞、年份不對,或足跡必須跟客戶給的那張正射影像對齊時,才往下走。
方法 1:下載開放足跡
你需要 QGIS 3.22 或更新版、一份你信得過的影像 layer,以及方法 2 用的網路連線。三種方法都不需要獨立顯示卡。
很多案子根本不需要偵測。三個開放資料集加起來覆蓋全球大部分地區,但在同一個街區,它們的棟數可以差到數千棟。
Pick the dataset for your area
OpenStreetMap在 mapper 活躍的地方品質很好,建築還帶屬性。Microsoft Global ML Building Footprints有超過十億棟機器萃取的建築,在北美最強。Google Open Buildings覆蓋全球南方,那裡 OSM 最稀疏。
Load one against your imagery
用QuickOSM把 OSM 拉進來。
Zoom in and look at the edges
看一眼邊緣,就知道可以停在這裡,還是要繼續往下看。

適合情況: 該區已經被畫得很好,且你能接受該資料集的年份和授權。
跳過時機: 覆蓋有破洞、年份不對,或足跡必須跟某一張正射影像對齊。
方法 2:自動偵測
建築足跡是建築貼地的外框,畫成一個平面多邊形。不是屋頂,不是地籍宗地,不是地址點。這裡重要,因為垂直影像給你的是屋頂:五層樓的 Haussmann 街區用近乎正射的角度拍,偏移很小,高塔就不一樣了。承諾要交 footprint layer 之前先知道這件事,更長的版本在建築足跡是什麼。
自動偵測模型讀你的影像,把建築外框當多邊形回傳,每個多邊形帶一個信心分數。我們自己做了一個,AI Segmentation。這一節講的是我們自己的工具。
它跟其他 plugin 一樣從 plugin manager 安裝:不用手動下載,不用弄 Python 環境,不用獨立顯示卡,因為模型跑在我們的伺服器上。Windows、macOS、Linux 都可以。


Install it and pick your imagery layer
從 plugin manager 安裝,打開面板,選你要判讀的 raster。

Draw a zone and name the object
框選一個範圍,輸入 buildings,按下 Detect。這就是整個 prompt,你想用自己的語言寫也可以。結果會一塊一塊串流回來,成為 project CRS 裡的一個 polygon layer。
Set the precision when the objects are small
唯一值得學的設定是 precision,也就是切片大小。小切片讓模型看很近,小物件需要這個。大切片給它脈絡,農地坵塊需要這個。
Filter what came back
任何東西變成 layer 之前,面板會帶你走三步:篩選要Keep的、Correct模型漏掉的、選輸出Shapes。第一步決定成敗,下面整節講它。
Clean the geometry
Simplify、orthogonalize、delete holes,照這個順序,只在每一步真的有用時用。三個工具和順序的理由在下面。
一次 run 算你框住的地面面積。每個帳號每個月都有免費額度,不用綁卡,Pro 可以拉高。偵測跑在歐洲伺服器,我們不用你的影像訓練,如果什麼都不能離開你的機器,也有一個小的本機模型。完整指南把 Keep、Correct、Shapes 全部講完。
篩選才是整份工作
原始偵測輸出是一堆帶信心分數的候選多邊形。在密集的影像上,大部分又小又不確定。這次巴黎的 run 我把兩個過濾器全開,讓每個候選都進 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
同一個工具,同一個城市,幾乎沒有東西要丟。變的是建成地景,不是模型。
會失敗的地方:連續密集街區

每個多邊形描的是整個街區的建築外框,貼著街廓線,庭院正確挖掉。算建成區或不透水面很好用,要一門牌一多邊形就不對。沒有任何讀垂直影像的模型能找到兩棟相連建築之間的共用牆,因為從上面看,那裡根本沒有東西可以看。
幾何清理
三個 QGIS 原生工具整理 footprint 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% 是連棟透天。看街區中間那條階梯狀邊緣就知道。沒有角工具修得好,因為那些階梯跟的是真實屋頂線,不是建模誤差。
適合情況: 數百到數千棟建築,在指定的影像上,或好幾個人必須用同一套方式產出同一個 layer。
跳過時機: 在歷史市中心需要一門牌一多邊形。我不會在那裡用自動偵測,地籍資料加手動修正會贏。
Try it free in QGIS, no card needed
方法 3:手動數化
五十棟以下,自己畫。免費、精準,這個數量我到現在還是會自己畫。
Turn on snapping
Project -> Snapping Options,vertex 加 segment,開啟 topological editing。不開的話,你會花整個下午刪碎片。
Trace, and watch yourself drift
畫到第 60 棟左右,你會開始走捷徑,第 6 棟時你絕對不會這樣畫,而你自己不會發現。誤差已經進 layer 了。
適合情況: 大約五十棟以下,或在密集的歷史中心需要一門牌一多邊形。
跳過時機: 數量跑到數百棟,或好幾個人要用同一套方式產出同一個 layer。
重點回顧
| 開放資料集 | 自動偵測 | 手動數化 | |
|---|---|---|---|
| 成本 | 免費 | 免費額度,之後付費 | 免費 |
| 設定 | 幾分鐘 | 幾分鐘 | 無 |
| 適合 | 已覆蓋良好的區域 | 數百到數千棟 | 約 50 棟以下 |
| 是否貼合你的影像 | 否 | 是 | 是 |
| 團隊一致性 | 是 | 是 | 否 |
| 密集連續街區 | 視情況 | 只有街區外框 | 是 |
| 可交代的來源 | 資料集與年份 | 你的影像,附信心分數 | 你本人 |
先查開放資料集。同一個街區它們可以差到數千棟,所以拿它們的邊緣跟你的影像對一下,就知道要不要繼續。
必須跟客戶正射影像對齊的足跡,不管覆蓋多好,都不選開放資料集。
偵測的大部分工夫在篩選:巴黎市中心 635 個留 82 個,保住 84% 的建築面積。
垂直影像在相連建築的地方,給不出一門牌一多邊形,花多少錢都一樣。去接合地籍資料。
超過五十棟左右,手動數化會默默走樣。
常見問題
無人機影像可以用嗎?
比衛星更好用。地面解析度比來源重要:5 cm 正射影像的邊界和信心分數,會比 30 cm 衛星場景乾淨得多。
需要 GPU 嗎?
跑一次多少錢?
自動偵測算你框住的地面面積,Cloud AI 按存檔算一個物件。Semi-Auto 在你自己機器上跑免費。每個帳號每個月都有免費額度。
可以一門牌一多邊形嗎?
在建築相連的市中心,垂直影像做不到。模型回傳的是整個街區的建築外框,庭院有挖掉,算建成區是對的,算門牌是錯的。去接合地籍資料。
開放資料集先從哪個開始?
你的區域有活躍 mapper 就先用 OpenStreetMap。沒有的地方落差很大:那 1 km² 的 Luanda,OSM 一棟都沒有,Microsoft 找到 3,140 棟,Google Open Buildings 找到 4,468 棟。
屋頂和地面的落差全文,讀建築足跡是什麼。classified-raster 的情況,polygonize 比任何模型都好用,讀QGIS raster 轉向量。QGIS AI hub列出我們做的其他東西。
裡偵測建築足跡,你有三條路:下載開放資料集、在自己的影像上跑 AI 偵測 plugin,或手動數化。最快的是第二種。從 plugin manager 安裝 plugin,載入你的影像,框選一個範圍,輸入 


