ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ArcGIS重叠区域提取三招:相交、按位置选择与擦除实战

ArcGIS重叠区域提取三招:相交、按位置选择与擦除实战 干GIS的应该都有过这种揪心时刻手头两个面状图层领导问“这两个范围重叠的地方有多大、分别占了什么地类”你得对着屏幕左拉右拽放大缩小手动描边最后靠肉眼和鼠标把一个一个重叠图斑勾出来。费时费力不说勾出来的边界还不准数据一核对就被打回来重做。实际上重叠区域数据提取是GIS空间分析里最基础也最高频的需求之一不管是做用地冲突分析、生态红线与规划范围的比对、历年土地利用变化检测还是做选址评价时把限制性区域从适宜区里抠掉都离不开这组操作。ArcGIS里早就内置了一套成熟的工具箱关键是你知不知道“该用哪个工具、在哪一步用、参数怎么给”。我今年处理了一个县域级的多规合一比对项目前前后后和重叠区域打了快一个月的交道把踩过的坑、试过的方法都摸了一遍今天用三招给大伙儿讲透如何又快又准地把重叠区域数据提取出来。这篇文章不会绕弯子直接用实际项目里的数据形态来讲配的是ArcGIS Pro和ArcMap双版本的对话框操作路径有差异的我会单独标出来。无论你是刚接触GIS的在校生还是已经在自然资源、规划、环保口子上工作过几年的从业者这三招看完都能直接上手帮你省下大量手动操作的笨功夫。1. 搞懂重叠区域分析的底层逻辑很多人一上来就点工具结果输出跟自己想要的完全不是一回事。这不是手生是没搞明白重叠分析背后到底有几种数据结果。先花几分钟把这层窗户纸捅破后面选工具就不会蒙圈。1.1 重叠分析的两种数据情形日常项目里“重叠区域提取”其实包含了两种完全不同的诉求需要区分开来看第一种提取“交集区域”。就是两个图层都有覆盖的那一部分空间画个韦恩图的话就是中间那块交叉区。典型场景某地块同时落在生态红线和自然保护区范围内我要把这块“双重管控区”单独导出来做叠加统计。这种需求的核心词是“保留重叠的部分”。第二种提取“非重叠区域”或者剔除重叠区域。也就是把重叠的部分挖掉只留不重叠的剩余部分。典型场景做用地适宜性评价时先把基本农田、生态红线这些“禁止建设区”从整个评价区范围里擦除剩下的才是可建设的备选空间又比如管线竣工验收时要把已建管线的缓冲区从某个规划廊道里扣除看哪段廊道还没有管线覆盖。这种需求的核心词是“去掉重叠的部分”。很多新手把这两件事混在一起拿着“擦除”当“相交”使或者反过来最后查出来的结果差得十万八千里。所以做数据之前先问自己一句我要的是A图层和B图层“共有”的部分还是“A有而B没有”的部分这句话决定了你要选哪一把工具。1.2 三个核心工具的分工与选型ArcGIS的“叠加分析”工具箱里和重叠区域关系最紧的就是四个工具相交Intersect、联合Union、擦除Erase、交集取反Symmetrical Difference。再加上“按位置选择”Select By Location基本就能覆盖绝大多数工作需求。我的日常分工是这样的只用“共有部分”优先选相交Intersect它会把输入图层中间重叠的区域切出来并且把各个图层的属性都挂在一起一步到位。只想快速“选中”重叠要素然后导出不想动原始图形、不想切开图斑就用按位置选择Select By Location它只做选择不改几何。要把某一块区域“抠掉”用擦除Erase相当于橡皮擦。要保留两个图层各自“不对付”的部分即A有B无加上B有A无用交集取反Symmetrical Difference。**联合Union**是把所有区域都切开合并重叠、不重叠的都在同一张图里一般不直接用于“提取重叠区”但是在做综合性区划时会经常碰到。这三个工具虽然都在一个工具箱里但脾气各不相同。后面每一招我都会讲清楚它在什么直接情况下用、按钮在哪、参数怎么选以及实际项目里的处理效果长什么样。2. 第一招相交分析一步提取重叠图斑第一招是全项目里最常用、也最直接的方案用“相交”工具把两个图层的重叠区域整体切出来。做多规合一、生态评价、地类比对的时候这招出镜率最高。2.1 相交分析的实际应用场景我给大伙儿描述一个真实的处理过程。当时手上有一份规划的建设用地范围还有一份生态保护红线的批准范围两个范围在某个乡镇边界上叠了一小块。领导要求算出重叠面积是多少、重叠区里涉及哪些村、地类是什么。这种活如果用鼠标去描先不说精度光是把重叠边界画准就得折腾一天而且画出来的还是个“面子活”没法做后续的属性统计和制图。用相交工具两个图层往里一扔几秒钟就完事输入要素建设用地范围、生态红线范围输出要素一个只包含两者公共区域的面图层输出属性不仅保留了几何边界还把“规划用途”“红线名称”“村名”“地类编码”这些字段全部合并进了同一条记录里后面统计面积、导出列表、出专题图一条龙全通了。所以只要你的需求是“找出两个图层的公共覆盖区”不管输入的是面-面、线-面还是点-面第一反应就应该是相交。2.2 ArcGIS Pro操作步骤与参数详解在ArcGIS Pro里相交工具可以通过功能区“分析”选项卡下的“相交”按钮直接调出ArcMap的路径是ArcToolbox 分析工具 叠加分析 相交。参数看起来不多但有几个地方很值得注意。以Pro 3.x版本为例操作步骤如下先确保两个输入图层的坐标系是统一的。我处理过的数据里最常见的翻车原因就是坐标系不统一一个图层是WGS84地理坐标另一个是CGCS2000投影坐标做出来的结果不是错位就是提示输入输出范围不一致。遇到这种情况先对要素类右键 属性 源看一下坐标系不一致的用“投影”工具转换尽量统一到CGCS2000 3度分带高斯克吕格投影或对应地区的UTM投影单位用米。这个习惯一定要养成我后文还会有专门一节的排查方法。在“相交”对话框里把两个输入图层添加进来。注意一个细节输入要素不能选太多。相交这个工具是把所有输入做“全集交”三个图层相交的结果是三者公共的部分不是两两相交。新人常在这里翻车——明明只想看A和B的交集结果不小心把C也加进去输出出来就剩一小块三角区怎么看都不对。一次只处理两个图层需要两两相交就分多次跑。输出要素类指定一个存放路径默认是当前地图的默认数据库geodatabase里。命名时不要带中文空格也不要以数字开头这是Geodatabase要素类命名的老规矩很多人忽略这个结果报错“要素类名称无效”。“联接属性”参数选“全部”ALL即可它的意思是把输入要素的所有属性字段都保留在输出结果里。还有两个附加选项、不同的Pro版本叫法有差异ArcMap 10.2里叫“NO_FID”和“ONLY_FID”。日常分析选“全部”如果只想保留几何和要素标识号选“仅FID”就行输出表会精简很多运行速度也快一些。要求不高的话“FID”保留哪个图层就用哪个查询按具体需要来。“输出类型”参数如果输入是面和面相交一般保持默认“仅输入”INPUT即可。这里简单解释一下相交工具可以输出“仅输入”或“全部”。“仅输入”只输出参与相交的输入要素范围“全部”还会把其他方向上的拓扑要素也输出比如线和面相交时可以把线也生出来。面面相交的场景选默认就能得到干净的叠合面。线和面的相交选“全部”有时候反而方便因为可以输出交点文件这个看实际需求没有绝对的对错。运行完成后把结果图层拖到地图里用半透明符号化叠在原图上看一眼确认重叠部分确实是需要的区域。再打开属性表一条一条对应的就是每一个独立的重叠图斑属性字段把两个源图层的字段都带上了后面统计面积直接右键字段 计算几何或者用“添加几何属性”工具统一算。这套流程面-面重叠、线-面穿越、点-面包含全部通用。做线-面分析的时候比如“穿过生态红线内的道路长度是多少”输出结果里还会把原来是线的部分切成一截一截每段的属性都保留长度字段自己算非常好用。2.3 属性表合并逻辑与字段保留技巧既然提到了属性表多说一句这也是新手经常困惑的地方。相交之后为什么输出表的字段突然多了一倍因为ArcGIS把每个输入要素的属性都合并到了输出结果里名字相同的字段默认会在字段名后面加上“_1”以示区分。比如两个图层里都有“面积”字段输出表里就有了“面积”和“面积_1”。做统计的时候要注意别选错字段。如果你想在相交之后做面积统计我的习惯是先把两个源图层里冗余的字段清理掉只保留必要的字段比如名称、地类代码再跑相交。这样输出表干净后面处理也省事。如果源数据字段特别多且不能删跑完之后用“删除字段”工具批量清理一次也行但工作量会大一些。另外如果两张表里的字段名和类型都一致可以在运行相交前利用“追加字段”或“连接”工具先关联一下减少后面字段纠错的成本。说实话从实际项目来看重叠区域提取本身不难难的是后面的属性整理所以在前端就把字段管好整个流程会顺很多。3. 第二招按位置选择快速筛选而不破坏原始数据第二招偏向轻量级使用场景我只需要“知道”哪些要素落在重叠区域里并不想动手切开图斑也不想产生新图层。这时候用“按位置选择”比跑相交工具方便得多尤其是数据量特别大或者最终成果要求保持原始要素完整的情形。3.1 按位置选择适合哪些场景举个例子你有一份全区的在用地块面图层好几万个图斑又有一份最新的城镇开发边界。领导说“把边界内的在用地块筛出来给他们发个台账。”这时的正确做法不是相交因为相交会把跨边界的图斑沿着边界切开原本一块完整的地块变得支离破碎后续编台账反而麻烦。你直接按位置选择把“与城镇开发边界相交”或“完全位于边界内”的地块都选中然后导出为独立的要素类每个图斑还是完整的地块。再比如你有一批遗址点数据几百个点想看看哪些点落在自然保护地范围内。直接用按位置选择方法选“与源图层要素相交”瞬间就把点选出来了。选择完右键图层 数据 导出要素另存为新数据整个过程不用切成新几何原始点数据一动不动。这种方式不改变原始图形只挑要素这在实际工作中特别讨喜。做汇报之前临时加点数据、出个名单、统计个数都比跑相交快太多。3.2 操作步骤与三种源图层选项辨析ArcGIS Pro里的操作路径在内容列表里右键目标图层比如“在用地块”菜单里选“选择”“按位置选择”。ArcMap路径同样右键图层 选择 按位置选择。弹出的对话框里“目标图层”默认已经填好了你右键的那个图层这里可以多选。注意目标图层如果是面图层、线图层、点图层都可以不限制类型。“源图层”选择用来做空间参考的那个图层比如“城镇开发边界”。关键参数是下面那个空间关系选择常用的几个与源图层要素相交INTERSECT只要目标要素和源要素有任何空间接触就算选中包括包含、被包含、穿越、甚至只是边界碰在一起。大多数场景选这个就够。完全位于源图层要素范围内WITHIN目标要素必须整体落在源要素内部才算跨界的不要。做“边界内的完整地块”筛选时我通常选这个保证导出的每一个图斑都是完整的。与源图层要素边界相触BOUNDARY_TOUCHES只看是否边界相触常用于相邻接的图斑筛选。中心点位于源图层要素范围内HAVE_THEIR_CENTER_IN目标要素不要求整体在范围内只要重心落入就行。处理跨边界的狭长图斑时这个标准更宽容一些。设置好之后在“选择类型”里选“新建选择”然后运行。被选中的要素会高亮显示屏幕下方状态栏还能看到选中的要素数量。如果需要导出这些要素为独立图层右键目标图层 数据 导出要素存储路径里填一个数据地址勾选“仅导出所选要素”选项这样新图层就只包含选中的那些要素。这个方法非常实用。尤其是处理几十万条数据的大图层时相交工具要新建新几何运行需要几分钟甚至更久而按位置选择实际上是在做空间查询速度要快得多。用完之后连原始数据都不用动干净利落。3.3 与相交分析的风险对比不过按位置选择也不是万能药它的最大短板在于不会把重叠区域“切出来”。如果你做的是面积统计类的工作比如要算重叠边界的精确面积那就不能只用这种方法了。按位置选择选出来的要素是整个要素的原始形状如果一个图斑部分重叠选出来后它是完整的不会有重叠区的独立几何面积字段也是整个图斑的面积不是重叠部分的面积。所以我的经验是两条线只要“选出来、导出来、做名单、做统计表”用按位置选择快、稳、不破坏原始数据。需要“切割出重叠部分的边界、计算重叠部分的精确面积、做空间叠加属性合并”必须用相交或擦除这类真正的叠加分析工具。两者不冲突很多项目里我会先用按位置选择做一轮快速摸排统计有多少地块受影响再挑出其中关键区域用相交工具切出来做精细叠加。两步配合效率和精度都能兼顾。4. 第三招擦除与交集取反解决重叠区域剔除和差异提取前两招解决的是“把重叠的找出来”第三招解决的是“把重叠的去掉”或者“把不重叠的单独抠出来”。这个需求在项目里同样高频比如永久基本农田核实整改、储备补充耕地项目、生态修复工程范围清理经常要干的一件事就是把不允许占用的区域从项目区里剔除掉剩下的才是可用的空间。4.1 什么时候要用擦除和交集取反先分清这两个工具擦除Erase用“擦除要素”去擦“输入要素”把输入要素中与擦除要素重叠的部分挖掉输出结果只留下输入要素中没有被覆盖的那部分。这有点像做减法A减去A∩B。举一个非常常见的案例某县要做补充耕地项目立项上级要求项目区不得占用生态保护红线和永久基本农田。你手上有一份初步拟定的项目区范围还有一份生态红线与永久基本农田合并后的限制性区域范围。你现在要做的就是把红线区从项目区里“擦掉”输出一个可用地块。这个操作在ArcGIS里就是输入要素项目区范围擦除要素红线区和基本农田合并图层输出扣除限制区域后的可用范围交集取反Symmetrical Difference这个工具的逻辑是“A有B没有的 B有A没有的”全部输出唯独不要公共部分。也就是说它留下的是两个图层各自的“独特范围”。做用地矛盾分析、权属争议区对比、多年地类变化检测的时候这个工具很有用。比如对比同一块区域两个年份的土地利用现状我只想看“哪里发生了变化”那就可以把两年的面做交集取反输出来的图斑就是变化部分旧有新增 原有减少。这两个工具配合使用基本能覆盖“剔除重叠区”和“提取差异区”两大类场景。4.2 实际操作步骤与参数设置ArcGIS Pro中擦除工具在“分析”选项卡 “擦除”按钮ArcMap里是ArcToolbox 分析工具 叠加分析 擦除。参数非常直观输入要素选择需要被扣减的图层比如项目区范围。注意输入格要是面线也可以被擦除成线日常生活中多为面-面操作。擦除要素选择用来做橡皮擦的图层比如红线区。这个图层也必须是面。擦除要素如果是多部件要素MultiPatch在处理时会有一些限制平常项目里很少遇到这里先不展开。输出要素类设置一个新的存放地址运行。完成之后输出图层里就是扣除重叠区后的结果属性表只保留输入要素的属性擦除图层的属性不会带过来。如果想一并看看被擦除的那部分到底多大可以先做一次相交得到重叠区面积再做一次擦除得到剩余区面积。两者相加等于原来的项目区面积做面积对账的时候很有用。交集取反工具在Pro里是“分析”选项卡下的“交集取反”ArcMap里在同一工具箱。参数有三个输入要素、更新要素相当于第二个输入、输出要素类。运行后得到非公共区域的并集属性表里既含有输入要素的属性也含有更新要素的属性“更新要素”一方的属性字段会自动加上补充后缀以区分。这里有一个特别方便的小技巧用交集取反做“地类变化检测”时把两个年份的地类图斑放进去跑输出面图的每条记录里“年份A地类”和“年份B地类”两个字段会同时出现在属性表里但重叠区的图斑不会出现因为重叠区域已经被自动剔除了。这样你就能很直观地查到变化的图斑和变化类型比起先做联合Union再筛选“不重叠”的步骤省了好几步。4.3 应对“裁剪后少块”的进阶处理擦除工具用多了你可能会碰到一种情况明明项目区里没有红线区但擦除后的结果边缘出现了一些细小的缺口或者整体少了一块与原始范围对比有明显差异。这大概率不是工具用错了而是数据精度差异导致的缝合线问题。简单说一下原理ArcGIS叠加分析时会按照系统默认的容差XY容差进行节点捕捉和边界对齐。两个图层如果来源于不同测绘单位、不同分辨率、不同比例尺公共边界本身就有细微偏差叠加后会出现很多“银色线”现象——即两个面边界不完全重合时生成了一条破碎的窄带状区域表示两个边界之间的微裂隙。擦除工具处理这种细碎多边形时有时候会因为面积太小被容差自动合并导致两条边界的缝隙被吃掉视觉上看就是缺了一小块。处理建议看数据前先做拓扑检查尤其是两个面图层是否存在自相交、缝隙、重叠问题有错误先修复再跑叠加分析这样结果才靠谱。如果精度要求不高可以先把两个图层统一到同一比例尺、同一矢量精度再运行擦除。擦除后如果发现细碎缺口可以配合“消除”Eliminate工具把小于设定面积阈值的碎面合并到相邻最大面输出就干净很多。这套“擦除消除”的组合是我处理用地清退项目时百试不爽的一个流程后面写项目报告时也能直接在ArcGIS里统计出扣除前后的面积对比逻辑非常清晰。5. 实操中的高频坑与排查手册三招讲完了但真正决定你工作成果质量的往往是实操中那些不起眼的坑。我把这一年多踩过、帮别人排查过的典型问题集中写在这里做一个速查手册每一类都对应着具体的现象和解决办法。5.1 坐标系不一致导致提取结果错位这是所有问题里排名第一的坑。现象是两个图层放在一张图上肉眼看着大体在一个位置但一跑相交或者擦除结果图斑就“飘”出去了或者提示“空间参考不一致”之类的警告。很多新手会纳闷明明看起来重合了为什么分析结果不对原因很简单ArcGIS的显示引擎会自动把不同坐标系的数据“动态投影”到当前地图的坐标系下显示所以你看到的是对的。但叠加分析工具处理的是数据自身的几何存储它要求输入数据的坐标系一致如果一个是WGS84经纬度一个是CGCS2000高斯投影计算时就会依据内部的坐标参考做动态换算一旦换算参数不准或有误就会错位。解决办法右键图层 - 属性 - 源查看坐标系统一后再跑分析。“投影”和“定义投影”是两个不同的工具别搞混了。投影Project是转换坐标定义投影Define Projection是给没有坐标系信息的数据强行指定一个坐标系。很多CAD转进来的数据没有坐标系不能直接Project必须先Define Projection然后再做空间变化。如果数据是从CAD转来的6位坐标的拐点值大概率是自动生成的投影坐标通常是X方向6位、Y方向7位带带号的那种。接到CAD到GIS的活时先跟提供方确认坐标系统再定义投影不然后面所有分析全部作废。另外线面相交时如果坐标系不一致输出点会跑到奇怪的位置这种问题在项目里特别容易被人忽视。排查优先级最高的一步就是先看坐标系。5.2 复制粘贴不了的原因与处理搜索里有人问“gis复制了不能粘贴为什么”这个问题看着很小白但在项目实操中确实会卡住不少人。尤其在编辑状态下想把一个要素从A图层复制到B图层按CtrlC、CtrlV结果要么是看不见新要素要么直接弹出校验错误。常见原因无非这几个目标图层没有开启编辑会话ArcGIS里不在编辑模式下粘贴按钮是灰的。必须先选中要复制的要素再点击编辑选项卡进入编辑状态才能粘贴。目标图层和源图层的几何类型不一致比如源数据是面目标是线类型不同粘贴必然失败。目标图层是空的且没有定义坐标系粘贴后要素不显示或报错。建议先给空图层定义好坐标系再粘贴否则要素的坐标值会被当作本地坐标处理位置“跑”到不知道哪里去。正在使用“仅显示所选要素”的图层过滤状态粘贴的新要素被过滤掉了不代表粘贴失败。这个问题的处理思路就一句话检查编辑会话、图层类型、坐标系、过滤条件这四个环节哪一个有问题就处理哪一个。实际上批量复制粘贴的性能不如直接做“追加”Append或者“合并”Merge工具如果要素数量大还是建议用工具来做数据整合。5.3 常见问题速查表我整理了一个精简版的常见问题速查表也是我平时带新人时用的大家可以直接对照着处理问题现象可能原因解决方法相交结果为空或图斑很少输入图层没有真正重叠或坐标系差异导致判空投影到统一坐标系后放大检查重叠区域用按位置选择先验证输出面积和手算不一致投影坐标系变形或使用了地理坐标系计算面积用投影坐标系单位米计算面积不要用经纬度坐标算擦除后边界出现细小碎面两图层边界不重合导致银线或缝合线问题先做拓扑修复再跑擦除碎面用消除工具合并图层放大后不显示图层设置了可见比例范围图层属性 常规 比例范围改为“无限制显示”属性表里字段名带_1两个输入图层有同名字段叠加分析自动重命名前端清理字段或分析后用删除字段整理相交后线要素变成多部件单条线被另一个要素切成多段输出多部件要素用“多部件至单部件”工具拆开或按字段拆分粘贴后要素位置不对目标图层坐标系未定义或与源图层不一致先定义目标图层坐标系再做粘贴按位置选择选了全部要素空间关系选错比如“与源图层要素相交”把外接矩形内的都选上了检查空间关系类型改用“完全位于源图层要素范围内”擦除后属性字段丢失擦除工具默认只保留输入要素属性先用相交做属性挂接再擦除或用联合筛选5.4 字段类型与统计口径的小提醒最后补一点关于属性字段的小知识我见过不少人在叠加分析之后给属性表添加字段时选错类型导致统计结果千差万别。ArcGIS里的字段类型其实就那几种但对新手来说特别容易踩的是面积字段。统计重叠面积时我建议用双精度Double或者浮点Float字段不要用整型Short Integer或Long Integer字段因为面积常常带小数整型字段会把小数位抹掉统计出来全是整数值误差极大。地类代码、行政区代码、权属代码这类查询字段用文本Text类型记录面积、坐标数值用浮点或双精度日期用日期Date类型。有些老项目里为了省存储空间面积字段用了文本类型结果没法做Sum统计这时候要先把字段类型转换好PDF导出的图形或者Excel里看着没问题一拉统计数据就出乱子。这个提醒虽然基础但在实际项目中确实能救你一命。我遇到过一次某同事把面积字段建成了整数型整个项目的汇总面积全都被四舍五入了核对时才发现差了不少面积重做两三天才返工完。所以叠加分析完成后统计字段的类型一定要检查一遍面积建议一律用双精度。6. 从重叠分析延伸出去的经验聊到这儿三个方法基本都讲透了。再说几句延伸的经验虽然不属于某一招但实际项目里确实能帮你少走弯路。重叠分析的工具链远不止这三个工具但掌握了“相交、按位置选择、擦除/交集取反”这组组合拳你解决日常工作中百分之八十的图层叠置需求都没问题了。剩下的百分之二十比如要对多个图层做综合区划、要做加权叠加评价、要做不同时相数据的变化检测可能还需要联合工具、空间连接、栅格计算器的配合但底层逻辑都是一样的——先明确你要保留的是公共区域还是差异区域再选择与之匹配的空间运算工具。另外重叠分析不是跑完就完事。我每次处理完数据都会做一次“面积对账”用字段计算器把源图层的总面积和输出图层的总面积加总一下看看是否有异常和亏量。这一步简单但特别关键。在地类变更调查或者国土空间规划这类项目里面积不平衡是会被上级直接打回来的硬伤。养成对账习惯后很多低级错误能提前挡在门外。还有个小经验分享一下如果在ArcGIS Pro里频繁做相交分析可以自己做一个深度学习模型或者用ModelBuilder把“投影检查—相交—面积计算—符号化”串联成一个工具流程下次直接换数据源就能跑。我在多个项目中用这个自动化流程效率提升非常明显。当然做ModelBuilder之前最好先把每一步的输入输出逻辑搞扎实不然自动化只会更快地把错误放大。从我个人经验看重叠区域提取做得好不好往往不是操作熟练度的问题而是“想清楚再动手”的能力。每次拿到数据先停10秒钟确认自己要的是交集、差集还是并集坐标系是否统一属性字段是否够用然后才去挑工具。这10秒钟的思考可以省下后面一天甚至更久的返工时间。希望这三招能帮大家少加一些班。如果你也遇到过什么奇奇怪怪的重叠分析问题欢迎在评论区留言我看到了都会回复。下次可以继续聊一聊基于字段的自动合并、拓扑修复这类更深一点的GIS操作。
返回列表