QGIS 建筑物轮廓提取:3 种方法对比
发布于 更新于
要在 QGIS 中检测建筑物轮廓,有三条路线:下载开源数据集、在自己的影像上运行 AI 检测插件,或手动数字化。最快的是第二条。从插件管理器安装插件,加载影像,画一个区域,输入 buildings,点击 Detect,一个多边形图层就会落入您的工程 CRS。
过滤是工作的另一半。返回结果中有很大一部分不是建筑物,所以要按置信度和面积削减原始输出。我在巴黎市中心运行了一次,得到 635 个多边形,决定保留哪 82 个所花的时间比检测本身还长。
| 您的输入 | 方法 | 时间 |
|---|---|---|
| OpenStreetMap、Microsoft 或 Google 已经覆盖的区域 | 方法 1:下载开源轮廓 | 几分钟 |
| 几百到几千栋建筑物,且必须使用交给您的那套影像 | 方法 2:自动检测(我们的,云端) | 57 秒检出 848 栋,然后是过滤 |
| 不到五十栋建筑物,或需要按地址逐栋划分的历史中心 | 方法 3:手动数字化 | 取决于您的速度 |
永远先看开源数据。只有当覆盖有缺口、年代不对,或轮廓必须与客户给定的那套正射影像对齐时,才继续往下走。
方法 1:下载开源轮廓
您需要 QGIS 3.22 或更新版本、一套您信任的影像图层,以及用于方法 2 的网络连接。三种方法都不需要独立显卡。
很多任务根本不需要检测。三个开源数据集加起来覆盖了地球大部分地区,在同一个街区上它们之间能差出几千栋建筑。
按所在区域选择数据集
OpenStreetMap 在制图者活跃的地方非常好,而且建筑带有属性。Microsoft Global ML Building Footprints 有超过十亿栋机器提取的建筑,在北美最强。Google Open Buildings 覆盖全球南方,那里 OSM 最稀疏。如果想在加载之前先看看它们各自在您所在区域有什么,可以在我们的免费建筑物轮廓下载器中画一个框,并把想要的那一个下载为 GeoJSON。
对照您的影像加载一个
用 QuickOSM 把 OSM 拉进来。
放大并查看边缘
看一眼边缘,就能决定是停在这里还是继续往下读。

适合使用: 该区域已有较好的制图覆盖,您能接受数据集的年代和许可。
可以跳过: 覆盖有缺口、年代不对,或轮廓必须与某一套特定正射影像对齐。
方法 2:自动检测
建筑物轮廓是建筑物与地面交界处的外轮廓,是一个平面多边形。不是屋顶,不是地块,不是地址点。这在这里很重要,因为垂直影像给您的是屋顶:在接近天底拍摄的五层奥斯曼街区上偏移很小,在高塔上则不是。在向任何人承诺建筑物轮廓图层之前,都要明白这一点,更长的解释见什么是建筑物轮廓。
自动检测模型读取您的影像,以多边形形式返回建筑物轮廓,每个都带有置信度分数。我们做的就是其中一个,AI Segmentation。本节讲的是我们自己的工具。
它和其它工具一样从插件管理器安装:不用手动下载,不用配置 Python 环境,不用独立显卡,因为模型跑在我们的服务器上。Windows、macOS 和 Linux 都可用。


安装并选择影像图层
从插件管理器安装插件,打开面板,选择要读取的栅格。

画一个区域并说出对象名称
画一个区域,输入 buildings,点击 Detect。整个提示词就是这样,也可以用您自己的语言。结果按分块流式返回,成为工程 CRS 中的一个多边形图层。
对象较小时设置精度
唯一值得学的设置是精度,也就是分块大小。小分块让模型看得更近,小目标需要这个。大分块给它更多上下文,农场大地块需要这个。
过滤返回的结果
在成为图层之前,面板会带您走三步:过滤要保留的内容,修正模型漏掉的部分,选择输出形状。第一步决定成败,下一节单独讲。
清理几何
按顺序做简化、正交化和删除孔洞,只在每一步真正有用时做。三者的工具和顺序原因见下文。
一次运行按覆盖的地面计费。每个账户每月有免费额度,无需信用卡,Pro 可以提高额度。检测跑在欧洲服务器上,我们不会用您的影像训练,如果数据不能离机,还有一个小的本地模型。完整指南中讲透了保留、修正和形状。
过滤就是全部工作
原始检测输出是一组带置信度分数的候选多边形。在密集影像上,大多又小又不确定。我把这次巴黎运行的两个过滤器全放开导出,让每个候选都进入图层:1.18 km² 上共 635 个多边形。
返回结果的一半比停车位还小:通风口、天窗、楼梯间、庭院棚屋。影像上真实存在,勾画也正确,但没人会把它们叫建筑物轮廓。
所以要过滤。在面板里拖两个滑块,或用 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 km 的独栋住宅区的效果:

85m²
多边形面积中位数
巴黎的运行:3.2 m²
0.79
置信度中位数
巴黎的运行:0.26
251个多边形
保留,共返回 251 个
巴黎的运行:635 个中保留 82 个
同一个工具,同一个城市,几乎不用扔。变的是建成肌理,不是模型。
断点:密集连片街区

每个多边形描的是整个街区的建成包络,紧贴街线,正确挖除庭院。做建成区或不透水面很好,按地址要逐栋多边形则不行。从垂直影像读取的任何模型都找不到相邻建筑之间的共用墙,因为从上往下看那里什么都看不到。
清理几何
三个 QGIS 原生工具可以整理建筑物轮廓图层,顺序很重要,因为简化会移动您刚拉直的顶点。
- Simplify,航空影像上容差 0.5 m。顶点数大幅削减,边界移动肉眼不可见。
- Orthogonalize。把接近直角的角拉直。用在开源数据或手绘成果上,那里还没人拉直过。
- Delete holes,只在想要实心轮廓时用。巴黎这个结果不要用:那些洞是庭院,是对的。
在检测得到的图层上,第 2 步接近空操作。我没有凭空假设,而是实测过:对 190 栋检测到的建筑物运行 Orthogonalize,对比前后全部 1,845 个角。
87.9%
的角已在直角 1° 以内
运行任何处理之前
87.9%
运行 Orthogonalize 之后
同样的 1,845 个角
1.7cm
顶点位移中位数
最大为 9.1 cm

不成直角的 12% 是联排。看街区中间的阶梯状边缘。任何角工具都修不了它,因为那些台阶跟着真实屋顶线走,不是建模误差。
适合使用: 几百到几千栋建筑物,影像必须对齐,或多人必须用同样方式产出同一个图层。
可以跳过: 在历史市中心需要按地址逐栋划分。我不会在那里用自动检测,地籍数据加手动修正更合适。
方法 3:手动数字化
不到五十栋建筑,直接画。免费、精确,这个量级我自己也会手画。
打开捕捉
Project -> Snapping Options,顶点和线段,打开拓扑编辑。不开的话,一下午都在删碎条。
描绘,并留意自己的走形
画到第 60 栋左右,您开始走捷径,这在第 6 栋时绝不会发生,而且您自己察觉不到。它已经进图层了。
适合使用: 大约五十栋以下,或在密集历史中心需要按地址逐栋划分。
可以跳过: 数量达到几百栋,或多个人必须用同样方式产出同一个图层。
记住什么
| 开源数据集 | 自动检测 | 手动数字化 | |
|---|---|---|---|
| 成本 | 免费 | 免费额度,之后付费 | 免费 |
| 准备 | 几分钟 | 几分钟 | 无 |
| 适合 | 已有较好覆盖的区域 | 几百到几千栋 | 约 50 栋以下 |
| 与您的影像对齐 | 否 | 是 | 是 |
| 团队多人一致 | 是 | 是 | 否 |
| 密集连片街区 | 视数据而定 | 只有街区包络 | 是 |
| 可说明的来源 | 数据集和年代 | 您的影像,带置信度分数 | 您本人 |
先查开源数据集。在同一个街区上它们能差出几千栋建筑,所以对照您的影像看一眼边缘,就能决定是否继续。
必须与客户正射影像对齐的轮廓,无论覆盖多好,都排除开源数据集。
检测的主要工作是过滤:巴黎市中心 635 个中保留 82 个,占建成面积的 84%。
在相连建筑处,垂直影像给不出按地址逐栋的多边形,花多少钱都不行。去关联地籍数据。
超过五十栋左右,手动数字化会悄悄走形而不自知。
常见问题
无人机影像可用吗?
比卫星更好用。地面分辨率比来源更重要:5 cm 正射影像的边界更干净、置信度更高,比 30 cm 的卫星场景好。
需要 GPU 吗?
一次运行多少钱?
自动模式按区域覆盖的地面计费,云端 AI 每次保存计一个对象。自己机器上的半自动模式免费。每个账户每月有免费额度。
能按地址逐栋划分吗?
在建筑相连的市中心,从垂直影像做不到。模型返回的是整个街区的建成包络,庭院已挖除,做建成区是对的,做地址是错的。去关联地籍数据。
开源数据集从哪个开始?
有活跃制图者的区域从 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 专题页列出了我们做的其余产品。

中检测建筑物轮廓,有三条路线:下载开源数据集、在自己的影像上运行 AI 检测插件,或手动数字化。最快的是第二条。从插件管理器安装插件,加载影像,画一个区域,输入 


