SAM大模型分割地图?具体流程是如何?
SAM大模型分割地图?具体流程是如何? 这个问题,通常出现在两类场景:一是想从遥感影像、航拍正射影像中快速提取建筑、水体、道路等地物;二是想把已经配准好的地图截图、影像底图或专题图,半自动分割成可编辑的矢量边界。本文以 GIS 实操视角,说明如何用 SAM(Segment Anything Model)完成地图分割,并把结果整理成 QGIS、ArcGIS Pro 或 Python GIS 可以继续使用的数据。
引言:SAM大模型分割地图适合解决什么问题
SAM 是 Meta 发布的通用图像分割模型,它的特点是可以通过点、框、掩膜等提示方式,在图像中分割出目标对象。对 GIS 用户来说,SAM大模型分割地图并不是直接替代传统遥感分类、监督分类或目标检测,而是更适合做“交互式快速提取”和“半自动边界生成”。
典型应用包括:
- 从无人机正射影像中快速圈出建筑物、水塘、裸地、树冠等对象。
- 在老地图、扫描图或专题图中提取颜色明显的面状区域。
- 辅助制作训练样本,用于后续深度学习分类或目标检测。
- 在 QGIS 或 ArcGIS Pro 中对 SAM 生成的掩膜结果进行矢量化和清理。
需要注意的是,SAM 本质上是图像分割模型。它认识的是像素纹理和边界,不理解坐标系、投影、拓扑关系和地物语义。因此,在 GIS 工作流里,SAM 分割结果还需要经过地理配准、栅格掩膜、矢量化、拓扑修复和属性整理,才能变成可用的空间数据。

背景:为什么地图分割不能只看模型效果
很多初学者第一次使用 SAM 分割地图时,会把重点放在“分得像不像”。但在 GIS 项目里,真正的问题通常是“分割结果能不能用”。一个看起来边界不错的结果,如果没有空间参考、没有正确的像元大小、边界碎片过多,仍然无法进入正式制图或空间分析流程。
GIS 场景下的 SAM 地图分割至少要关注四件事:
- 图像是否有空间参考:GeoTIFF、正射影像通常带坐标信息;普通 PNG、JPG 地图截图通常不带坐标信息。
- 分割对象是否清晰:SAM 更擅长处理边界明显、纹理连续的对象,对混合像元、阴影、低分辨率影像效果会下降。
- 输出结果是什么:SAM 通常输出掩膜,即像素级黑白区域,不会直接输出 Shapefile、GeoPackage 或 GeoJSON。
- 后处理是否充分:掩膜需要清理噪声、填洞、平滑边界、矢量化,并检查拓扑错误。
因此,本文推荐把 SAM 看成 GIS 数据生产链条中的一个环节,而不是一个“一键出图斑”的完整系统。
原理:SAM地图分割结果在 GIS 中如何理解
SAM 的输出通常可以理解为一个二值掩膜。目标区域的像元值为 1,非目标区域的像元值为 0。对于 GIS 软件来说,这个掩膜本质上就是一幅栅格图层。
如果输入是一幅带空间参考的 GeoTIFF,理论上可以将 SAM 输出的掩膜重新写成同样坐标系、同样仿射变换参数的 GeoTIFF。这样,掩膜就可以在 QGIS 或 ArcGIS Pro 中准确叠加到原始影像上。
如果输入是普通截图,例如浏览器地图截图、论文图片、扫描地图截图,那么 SAM 输出的掩膜也只是普通像素坐标。此时必须先进行地理配准,或者在后续把结果配准到真实坐标空间,否则无法用于面积计算、距离量测和空间叠加分析。
从 GIS 角度看,SAM大模型分割地图的核心流程可以概括为:
- 准备带空间参考或可配准的地图影像。
- 使用 SAM 根据点选、框选或自动模式生成分割掩膜。
- 将掩膜保存为带空间参考的栅格数据。
- 在 QGIS、ArcGIS Pro 或 Python 中进行栅格转面。
- 清理碎斑、修复拓扑、补充属性字段。
- 通过叠加原图、抽查样本和面积统计验证结果。
步骤:SAM大模型分割地图的具体流程
步骤一:准备地图影像或遥感影像
优先使用 GeoTIFF、COG、正射影像或其他带空间参考的栅格数据。如果只有 PNG、JPG 或截图,应先判断它是否需要配准。
准备数据时建议检查:
- 图像分辨率是否足够,目标对象边界是否清楚。
- 图像是否存在明显压缩块、阴影、云雾或水印。
- 坐标系是否正确,例如 EPSG:4326、EPSG:3857 或本地投影坐标系。
- 像元大小是否适合目标对象,不能指望用很粗的影像分割很小的地物。
在 QGIS 中,可以右键栅格图层,查看“属性”中的坐标参考系统、范围和像元大小。在 ArcGIS Pro 中,可以在图层属性的 Source 信息里查看空间参考和栅格分辨率。
步骤二:选择 SAM 使用方式
目前常见的 SAM 使用方式有三类:
- 在线 Demo:适合快速体验,但不适合涉密数据或大批量影像。
- 本地 Python 脚本:适合 GIS 工程化处理,可保留坐标信息并批处理。
- QGIS 或第三方插件工作流:适合不想写太多代码的用户,但要注意插件版本和模型依赖。
如果你要做正式 GIS 数据生产,建议使用本地 Python 方式。因为只有这样更容易控制输入影像、掩膜输出、坐标参考、批处理范围和后处理逻辑。
步骤三:用提示方式生成分割掩膜
SAM 分割通常依赖提示信息。常用提示包括点、框和自动分割。
| 提示方式 | 适用场景 | 注意事项 |
|---|---|---|
| 点选提示 | 单个建筑、水体、地块等对象 | 点要落在目标内部,必要时增加反向点排除背景 |
| 框选提示 | 目标大致范围明确的对象 | 框太大容易包含相邻对象,框太小可能切断边界 |
| 自动分割 | 批量发现影像中的候选对象 | 容易产生大量碎片,需要严格后处理 |
对于 GIS 制图,建议先从框选或点选开始,不建议一上来就全图自动分割。原因是地图影像里往往有道路、阴影、标注、边界线、符号和纹理,自动分割会生成很多并不需要的对象。
步骤四:保存掩膜并保留空间参考
如果原始输入是 GeoTIFF,推荐把 SAM 输出的掩膜写回 GeoTIFF,并继承原图的 transform、crs、width、height 等信息。下面是一个简化的 Python 思路,适合理解流程:
import rasterio
import numpy as np
src_path = "input_ortho.tif"
mask_path = "sam_mask.tif"
# 假设 mask 是 SAM 输出的二维数组,目标区域为 1,背景为 0
# mask = ...
with rasterio.open(src_path) as src:
profile = src.profile.copy()
profile.update(
count=1,
dtype=rasterio.uint8,
nodata=0,
compress="lzw"
)
with rasterio.open(mask_path, "w", **profile) as dst:
dst.write(mask.astype(np.uint8), 1)
这里的关键不是代码本身,而是空间参考继承。只要掩膜的行列数、像元大小、仿射变换和坐标系与原图一致,就能在 GIS 软件中正确叠加。
步骤五:在 QGIS 中将 SAM 掩膜矢量化
在 QGIS 中可以按照以下方式处理 SAM 地图分割结果:
- 加载原始影像和 SAM 掩膜 GeoTIFF。
- 检查两者是否完全重合。
- 打开“处理工具箱”。
- 使用“栅格像元转多边形”或 Polygonize 工具。
- 选择掩膜图层作为输入,字段可使用像元值字段。
- 输出为 GeoPackage,便于后续编辑和保存中文字段。
- 删除值为 0 的背景面,只保留值为 1 的目标面。
- 对结果执行“修复几何图形”“融合”“删除小面”等操作。
如果分割对象很多,建议不要直接输出 Shapefile。Shapefile 对字段名长度、编码、几何类型和文件数量都有历史限制,GeoPackage 更适合当前 GIS 工作流。
步骤六:在 ArcGIS Pro 中后处理分割结果
如果使用 ArcGIS Pro,可以采用类似流程:
- 加载原始栅格和 SAM 掩膜。
- 使用 Raster To Polygon 将掩膜转为面要素。
- 用 Select By Attributes 选择目标值,例如 gridcode = 1。
- 导出选中目标面。
- 使用 Repair Geometry 修复几何错误。
- 使用 Dissolve 合并相邻对象。
- 按面积字段删除明显噪声小斑块。
- 叠加原图进行人工抽查。
如果你的目标是建筑物提取,通常还需要进一步进行正交化、边界简化和形状规则化。SAM 输出的边界往往更接近图像纹理边缘,不一定符合制图规范中的建筑轮廓表达。
步骤七:验证分割质量
SAM 地图分割结果不要只凭肉眼看一两处。建议至少做三类检查:
- 叠加检查:将矢量面半透明叠加到原始影像,查看边界是否明显偏移。
- 属性统计:统计图斑数量、面积范围和异常小面数量。
- 样本抽查:随机抽取若干区域,对漏分、错分和边界偏差进行记录。
如果用于面积统计,还要确认图层使用的是适合面积计算的投影坐标系,而不是直接在经纬度坐标系下计算面积。
常见坑:SAM地图分割容易失败的原因
坑一:用没有坐标信息的截图直接做 GIS 分析
普通地图截图经过 SAM 分割后,只得到像素坐标下的掩膜。它不能直接用于面积、距离、缓冲区和叠加分析。必须先配准,或者使用带空间参考的原始数据。
坑二:分割结果看起来很好,但边界存在系统偏移
如果掩膜和原图行列数不一致,或者在导出过程中进行了缩放、裁剪、重采样,后续叠加时就会出现偏移。解决办法是保证 SAM 输入图像与输出掩膜尺寸一致,并在写出 GeoTIFF 时继承原图的空间参考参数。
坑三:自动分割生成大量碎斑
地图图像里有文字、符号、阴影、道路标线、网格线和注记,这些都可能被 SAM 当成对象。自动分割适合探索候选对象,但正式生产前必须通过面积阈值、形状筛选、属性筛选和人工核查进行清理。
坑四:把 SAM 当成语义分类工具
SAM 负责“分出边界”,不负责判断“这是什么地物”。如果要区分建筑、水体、道路、林地,还需要人工标注、规则筛选,或结合分类模型、光谱指数和 GIS 先验条件。
坑五:忽略投影坐标系导致面积不准
即使 SAM 掩膜矢量化成功,如果图层仍在地理坐标系中,用经纬度直接算面积也会出错。面积统计前应投影到合适的平面坐标系,例如本地高斯投影、UTM 分带或项目指定坐标系。
方法比较:SAM分割地图、传统分类和人工矢量化怎么选
| 方法 | 优势 | 局限 | 适合场景 |
|---|---|---|---|
| SAM大模型分割地图 | 交互快,边界提取效率高,少量样本即可开始 | 不理解地物类别,后处理要求高 | 快速提取单类对象、制作训练样本、半自动制图 |
| 传统遥感监督分类 | 流程成熟,可按类别批量分类 | 需要样本和特征设计,边界可能粗糙 | 土地利用分类、植被水体提取、多类别制图 |
| 阈值和指数法 | 简单透明,容易解释 | 对影像质量和阈值敏感 | NDVI 植被、水体指数、简单二分类任务 |
| 人工矢量化 | 可控性强,成果规范 | 效率低,人工成本高 | 小范围精细制图、权属边界、最终成果修编 |
实际项目中,最稳妥的方式通常不是单独使用某一种方法,而是组合使用:先用 SAM 快速生成候选边界,再用 GIS 规则和人工检查进行修正。这样既能提高效率,又能控制成果质量。
检查清单:正式使用 SAM 分割地图前要确认什么
- 原始影像是否清晰,目标边界是否可辨认。
- 输入影像是否带空间参考,坐标系是否正确。
- SAM 输出掩膜是否与原图尺寸一致。
- 掩膜 GeoTIFF 是否继承了原图的 transform 和 crs。
- 矢量化后是否删除了背景面和明显噪声小面。
- 是否执行了几何修复、融合、平滑或简化。
- 面积计算前是否投影到合适的投影坐标系。
- 是否对漏分、错分、边界偏移做了抽样检查。
- 成果格式是否满足后续软件要求,例如 GeoPackage、File Geodatabase 或 GeoJSON。
- 是否记录了模型版本、参数、数据来源和处理日期,便于复现。
FAQ:关于 SAM大模型分割地图的常见问题
SAM 可以直接输出 Shapefile 吗?
通常不可以。SAM 直接输出的是图像掩膜,不是 GIS 矢量文件。你需要先把掩膜保存为带空间参考的栅格,再通过 QGIS、ArcGIS Pro 或 Python 工具进行栅格转面,最后导出为 Shapefile、GeoPackage 或其他矢量格式。
SAM 分割地图一定需要显卡吗?
不一定。小图和少量测试可以在 CPU 上运行,但速度会慢很多。对于较大的遥感影像、批量瓦片或自动分割任务,建议使用支持深度学习推理的 GPU 环境。实际工作中,也可以先将大影像切片,再分批处理。
地图截图能不能用 SAM 分割后计算面积?
可以作为辅助,但不能直接计算。地图截图没有真实空间参考,必须先进行地理配准,并确认比例、投影和变形误差在可接受范围内。对于正式面积统计,优先使用原始遥感影像或权威矢量数据。
SAM 适合提取道路吗?
可以尝试,但道路是细长线状对象,容易被阴影、车辆、树冠和路面纹理干扰。SAM 更擅长分割边界明显的面状对象。道路提取通常还需要中心线提取、连通性修复和拓扑编辑,不建议只依赖 SAM 一步完成。
SAM 分割建筑物后为什么边界不规整?
SAM 根据图像边缘和纹理分割,输出边界可能沿着阴影、屋顶纹理或影像噪声波动。建筑物制图通常要求直角、平行边和规则轮廓,因此还需要边界简化、正交化、人工修边或专门的建筑物规则化算法。
QGIS 能不能完成 SAM 地图分割的全部后处理?
大部分后处理可以。QGIS 可以完成栅格加载、栅格转面、删除小面、融合、修复几何、面积统计和制图检查。但如果需要批量推理、切片处理或自动化质检,建议配合 Python、Rasterio、GeoPandas 和 GDAL 使用。
结论:把 SAM 当成 GIS 工作流中的高效分割环节
SAM大模型分割地图的价值在于快速生成对象边界,尤其适合辅助提取建筑、水体、地块、树冠等边界较清晰的目标。但在 GIS 项目中,真正可交付的成果不仅要“分得出来”,还要有正确坐标系、合理拓扑、可解释属性和可复核质量。
推荐的实用流程是:使用带空间参考的影像作为输入,通过 SAM 生成掩膜,把掩膜写成 GeoTIFF,再在 QGIS 或 ArcGIS Pro 中矢量化、清理和检查。只要把空间参考、掩膜尺寸、矢量化后处理和质量验证这几个环节做好,SAM 就可以成为 GIS 数据生产中非常有效的半自动分割工具。