ARTICLE DETAIL

资讯详情

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

ArcGIS分割面工具详解:四种方式原理、操作与避坑指南

ArcGIS分割面工具详解:四种方式原理、操作与避坑指南 先别急着点“编辑器”里的分割工具我见过太多人在ArcGIS里做“分割面”操作第一步就找错地方。这个功能在ArcToolbox和编辑器工具栏里各有一份名字看着差不多功能却完全不同用错了轻则白干半小时重则把原始数据改得面目全非。这篇文章专门把ArcGIS里所有“分割面”的家底翻一遍从工具箱里的三个分割工具到编辑器里的手工切割把每个工具背后的原理、适用场景和隐藏的坑都讲透。这个系列我已经写到第59篇前面讲了不少矢量化、拓扑检查和属性表处理的内容这次轮到“分割面”这个高频操作。无论你是做国土调查、规划建库还是处理日常的宗地、地块数据这篇文章都值得收藏。新手可以按步骤照做老手可以重点看第三节和第五节那里有常规文档里不会写清楚的边界条件和数据陷阱。1. 先把三个“分割面”分清楚ArcGIS里名字带“分割”的工具不少但针对面要素的工具箱Analysis Tools里主要有三个分割面、按属性分割、按要素分割。再加上编辑器工具栏里的“切割面工具”一共是四套方案各管一摊。很多人把“分割面”和“按属性分割”混为一谈这俩其实是完全不同层级的东西。简单打个比方分割面是在一块蛋糕上切一刀切完之后蛋糕还是那块蛋糕只是多了条切痕按属性分割是把一箱蛋糕按照口味分装到不同盒子里蛋糕块数没变但存放的箱子变了。工具名称菜单位置核心作用输出结果分割面ArcToolbox → 分析工具 → 叠加分析用一个面图层去切另一个面图层原要素被切割属性保留相交处新增要素按属性分割ArcToolbox → 分析工具 → 提取分析按字段值把一个要素类拆成多个要素类输出多个要素类每个对应一个属性值按要素分割ArcToolbox → 分析工具 → 提取分析按要素一对多拆分成多个要素类输出要素类数量等于输入要素数量切割面工具编辑器工具栏 → 切割面手动绘制一条线把面切开原面要素被实际修改和替换第四种“切割面工具”最容易理解它修改的是原始数据本身。你在编辑会话里选中一个面画一条线穿过去这个面就被一分为二原来的那条记录没了变成两条新记录。这个操作会直接改变源数据所以用之前必须确认数据可编辑、有备份不是随手就能上的操作。前三个工具都不修改原始数据它们生成新的输出属于“计算”性质的工具。这个区别非常关键我在实际项目中见过有人用“切割面工具”去切一个只读数据库里的图层结果画了半天线发现根本切不动最后才发现自己的操作路径从一开始就选错了。2. 分割面工具背后的原理分割面工具Split Polygon做的事情用一句话概括拿一个图层的每个要素去切另一个图层的面把所有相交的部分都变成独立要素输出。听起来很简单实际用起来需要理解两个核心参数和一个边界规则。第一个核心参数是“容差”这个值控制着切割时的空间判断精度。默认情况下它使用要素类的XY容差一般是你数据坐标系的精度值比如0.001米。如果你的两个图层在边界上有微小的缝隙或者重叠容差太大或者太小都可能产生意想不到的结果。我习惯在工具对话框里把容差显式设置成数据坐标系中0.01米或者0.001米避免因为默认值导致碎屑多边形问题。第二个核心参数是“保持属性”勾选后输出要素会保留被切割面的全部属性字段而切割面的属性不会被写入。这一点常常让人困惑——有人以为分割完了之后两个图层的属性会自动合并关联实际上不是。分割只负责几何上的切割属性上除非你使用“相交”工具否则切割面的属性是丢掉的。如果需要切割带的属性信息必须在分割前先把需要保留的字段用“连接字段”的方式复制到面图层上。工具的输出是一个全新的要素类不会动你原来的数据。这一步既是优点也是陷阱。优点是原始数据安全缺点是如果你忘记设定正确的输出坐标系或者输出位置选了个临时目录后续引用数据的时候就容易出幺蛾子。我在公司项目里从来都是先建好输出要素类的路径然后直接把结果存到目标数据库里不经过中间临时数据这一层。关于输出坐标系特别提醒一下新手。分割面工具的默认输出坐标系是输入的第一图层被切割面的坐标系。如果你的切割图层是地理坐标系被切割图层是投影坐标系输出的坐标系取决于你把谁放在第一个参数的位置。所以参数顺序不是随便填的它直接影响输出结果的空间参考。我一般建议把需要保真坐标的那个图层放在第一个参数位置。分割面还有一个容易被忽视的细节它会处理多部分MultiPart要素。一个多部分面要素如果被分割线切到其中某一部分输出的是多个独立的单部分要素而不是保留多部分结构。这个行为对后续的属性汇总、面积统计都有影响。要在分割前用“多部分至单部分”工具先拆开或者做好心理准备接受输出结果变成多个单部分要素。3. 四种分割方式的操作流程与适用场景搞清楚了原理接下来逐个过操作流程。每个方案我写清楚步骤、适用场景以及我自己在实际项目中踩过的坑。3.1 分割面工具的标准操作打开ArcToolbox路径是“分析工具 → 叠加分析 → 分割面”。对话框里四个项目输入要素、分割要素、输出要素类、容差。输入要素就是你要被切的那个面图层分割要素是切刀。我用一个实际例子说明。之前做某个县的土地利用现状图更新手头有一份行政边界图层和一份三调地类图斑图层需要按行政村边界把地类图斑切出来方便各个村单独统计面积。操作就是输入要素选地类图斑分割要素选行政边界输出要素类命名成“地类图斑_按村分割”容差保持默认直接跑。这个场景里有个隐藏问题行政边界和地类图斑的边界不一定完全重合。有些图斑跨了两个村边界处还有几米的缝隙。分割工具会按照切割线把跨界的图斑切成两块落在缝隙处的极小碎屑也会生成。跑完之后必须用“消除”工具把面积小于阈值的碎屑多边形合并到相邻图斑里否则汇总数据的时候会出现一堆零点几平方米的无效图斑。具体到切完怎么检查把输出图层的面积字段排序凡是面积小得离谱的都要人工确认。我一般先做一步筛选面积小于0.5平方米的图斑单独导出检查确认是碎屑就并入相邻要素。这个过程虽然繁琐但比事后统计出错再返工要省事得多。3.2 按属性分割的应用实践按属性分割Split By Attributes是从一个大图层里按字段值拆成多个要素类。它的场景不是几何切割而是数据整理。举个例子有一个全国范围的生态保护红线图层字段里有省份代码需要按省拆开交给各省的负责人去处理。用按属性分割工具输入图层选红线数据分割字段选省份代码输出目录指定一个文件夹工具会自动生成以字段值命名的多个要素类。这里有个强迫症友好但新手易懵的细节输出目录必须已经存在工具不会自动创建文件夹。如果文件夹路径无效工具直接报错而且报错信息不算友好。我习惯在运行前先建好一个空的输出目录然后让工具在这个目录里生成分省要素类命名规则是“输入要素名_字段值”这个后缀在后期整理时非常有用。按属性分割的输出是多个要素类不是单个要素类里的多个图层。你要是想在一个要素类里按字段分开显示不需要用这个工具直接在符号系统里用唯一值渲染就够了。按属性分割更适合下游工作流需要“一省一库”或者“一区一文件”的交付场景。实际做自然资源数据汇交的时候我经常需要把全县数据按乡镇代码拆成十几个图层用这个工具一条命令搞定比自己写循环去筛选导出快得多而且不易出错。唯一要小心的是分割字段里如果存在空值会生成一个空值命名的要素类需要提前把空值字段处理掉。3.3 按要素分割的批量场景按要素分割Split By Features名字上看着和分割面很像实际上是完全不同的逻辑。它把一个输入要素类按另一个要素类的每个要素拆分成多个输出要素类输出的数量等于分割要素的要素数量而不是一个合并的结果。这种批量按要素切分的场景典型用途是有一个地块面图层每个地块的形状各不相同需要把每个地块单独输出成一个独立要素类供后续逐个做专题分析或者格式转换。选择这个工具时重点搞清楚分割要素和被分割要素的关系。分割要素的每个要素都会被当作一个独立的“提取范围”输入要素中落入该范围的部分会被输出为一个独立要素类。按要素分割工具生成的文件命名也有规律输出文件名是“输入要素名_分割要素的要素编号”。比如输入要素是“lands”分割要素有5个输出就是lands_0、lands_1……lands_4这样的文件。知道这个命名规则后续批量引用就不怕找不到文件对应关系。有人问能不能用按要素分割工具替代分割面工具答案是看需求。分割面工具输出的是一份完整的、互相咬合的切割结果按要素分割输出的是多个独立文件各个文件间没有拓扑关系不能直接拼起来用。如果你的下游工作需要跨文件做拓扑检查、拼接统计建议优先用分割面如果只是按地块或行政区范围逐个出图、导出按要素分割更直接。3.4 编辑器里的切割面工具上面三个工具箱工具都不修改源数据但编辑器工具栏里的“切割面工具”是真刀真枪地改原始数据。进入编辑会话选中一个面要素点击切割面工具然后沿着要切割的位置画一条线双击结束原面就被划分成两部分。这个工具在数据修编场景里使用频率非常高。比如做不动产数据整合时发现某宗地登记范围把隔壁宗地的一角包进来了需要把重叠的部分切出去。用切割面工具直接手工画线把宗地面一分为二再删除不需要的部分搞定。用切割面工具有几条硬性要求数据必须是可编辑的要素类来源不是只读必须开启编辑会话画线必须穿过多边形边界起点和终点都可以在面外部但线不能完全落在面外每次只能切一个面不能同时切割多个要素实际操作中最常出现的问题是开启编辑会话后忘记选中要切的面。切割面工具默认只切选中的要素没选中就画线工具会提示没有可切割的要素但提示有时候一闪而过你还在傻傻等结果。我现在的习惯是选中要素之后先放大看一眼确认高亮显示再调出切割面工具去画线。切割面工具还有个进阶用法用它做“分割并保留两侧”的操作切完之后两个新要素都保留原要素的所有属性。因为新要素是从原要素分裂出来的属性自动继承不需要额外字段计算。这一点和工具箱里的分割面不同后者虽然也保留属性但不会修改原始数据。4. 实操过程从数据准备到结果检查不管用哪种分割方式实操前必须做数据准备工作。我的标准流程是固定五步少一步都可能在后半程出问题。第一步检查坐标系。包含坐标系的要素类才能进行空间叠加分析没有坐标系或坐标系定义错误的要素类工具能跑但结果是错的。我遇到过一个极端案例两个图层的坐标系定义完全相同但一个是有基准面的地理坐标系一个是投影坐标系分割后所有要素面积缩水了几十倍。所以操作前先在图层面板上看“源”选项卡确认坐标系正确。第二步检查属性结构。被分割图层最好唯一标识字段比如FID或者自定义的编号字段。分割后生成的要素继承了原属性但如果你没有唯一标识后续排查问题的时候根本不知道哪个要素是从哪里来的。我一般建议在分割前用“添加字段”加一个“原始ID”把原要素的OBJECTID拷进去。第三步清理拓扑错误。两个输入图层在边界上的微小重叠和缝隙会导致分割结果产生碎屑。所以操作前用“检查几何”工具跑一遍数据健康度有问题先修复几何。这一步不要省很多几何错误不会影响显示但会影响叠加分析的结果质量。第四步备份原始数据。这条是我自己的铁律。凡是可能修改原始数据的操作例如编辑器里的切割面工具操作前必须备份。就算是纯生成新数据的工具我也保留一份原始输入因为有时候跑出来的结果不对需要回到最初状态重新来没有备份就只能找IT恢复数据库了。第五步设置输出环境和路径。设置合适的输出坐标系、存储路径、要素类名称。输出路径不要放到系统临时目录因为临时目录可能被清理而且团队协作时别人找不到你的中间数据。我习惯在所有分析项目下建“中间数据”和“成果数据”两个独立目录分割结果统一放“中间数据”让最终成果数据保持干净。实际操作时我通常打开ArcToolbox里的“地理处理选项”把“覆盖现有数据集”勾上。这样如果反复跑同一路径的输出重新执行时不用手动删除旧的输出要素类。但这个选项有风险它会悄悄把之前的输出结果替换掉。如果你上次输出的结果已经被人引用覆盖之后对方打开的就是新数据可能会造成版本混乱。所以这个选项只在数据还在自己手里、不被别人共享的阶段才打开。5. 常见问题与排查技巧实录分割面这一块我遇到过的问题不少挑几个高频的、在官方文档里不太容易被注意到的坑写出来。第一个问题是输出结果图层范围不对。分割面工具跑完发现输出的要素数量比预期的少了很多或者边界处缺了一块。这种问题九成是输入图层有拓扑错误。常见诱因是原始数据中存在自相交多边形、空几何或者两个图层边界共线但节点不在同一位置。排查方法先用“检查几何”跑一遍能找出大部分问题。如果还不行把两个输入要素类的边界全部转成线用“拓扑”工具做重叠检查找到问题区域后手工修再重新分割。第二个问题是容差设置导致碎屑多边形泛滥。前面提过默认容差是要素类的XY容差但不同来源的数据XY容差可能不一样。如果两个图层一个容差是0.001米另一个是0.01米分割后可能在边界处产生大量极小多边形。这个问题的排查相对容易把输出要素类的面积字段排序看一眼如果发现大量面积小于0.01平方米的多边形基本就是容差问题。解决办法是重新设置容差为两个输入图层中更严格的一方然后重新运行工具。第三个问题是输出要素类无法创建。点击“确定”之后工具报错说不能创建输出要素类。常见原因不是权限问题而是你的输出要素类名称已经被占用或者输入要素类有特殊字符。尤其是中文要素类名称在有些版本里的兼容性并不好。我踩过一次坑输出要素类名称叫“分割_地类图斑_2018核实”里面有下划线有中文结果报错一堆。改成“DlTb2018Split”之后一次通过。倒不是说中文名称一定不能用而是这种边界场景不值得浪费时间直接用字母数字命名最稳妥。第四个问题是切割面工具画完线之后没有反应。前面提过没选中目标要素会导致这种情况。但还有一种情况是图层处于“按属性选择”状态或者当前编辑的图层面与画线处没有交集。检查方法很简单看编辑器工具栏里的目标图层是什么再看画线路径是否穿过目标要素。画线的时候尽量起点、终点都在目标要素外部整条线完完整整地穿过去别只切了个边角那样也会报错。第五个问题是分割后属性丢失。分割面工具勾了“保持属性”但输出的某个关键字段值为空。这种情况大概率是字段名冲突或者字段类型不兼容。比如被分割图层里有个字段叫“Shape_Area”输出要素类里系统会自动生成一个“Shape_Area1”而不是直接用原来的。全程注意字段名的变化要么在分割前把需要的字段改名要么分割后根据“原始ID”字段用连接工具把属性补回来。第六个问题按属性分割生成的文件名乱码。当分割字段值是中文时输出文件名直接以中文命名。在Windows上一般没事但如果你把成果拿到Linux环境跑批处理文件编码问题就来了。为避免麻烦我会在分割前先加一个“拼音码”或者“数字码”字段用这个字段作为分割字段输出干净的文件名然后用属性表把原中文名关联回去。这个习惯帮我省去了很多和国际团队协作时的沟通成本。排查问题时我还有一个习惯所有工具跑完不着急看结果先看工具对话框下方的“消息”窗口那里会列出警告和错误。很多运行成功的操作其实伴生有警告比如“部分要素被忽略”“几何未闭合”等这些警告才是后续问题的真正根源。养成读消息的习惯后你排查数据问题的速度会快一倍。6. 分割后处理面积计算与图形检查工具跑完不代表工作完成。分割后的处理是容易被人忽略的部分但这些环节直接影响成果能不能直接用于制图或者统计分析。分割完成后的第一个动作是添加面积字段。如果你原图斑没有面积字段用“计算几何”工具批量计算面积单位根据实际需要选平方米或者公顷。计算几何时注意坐标系用投影坐标系算出来的是平面面积用地理坐标系算出来的是球面弧度后者通常不是你想要的结果。所以务必确认当前数据框坐标系和你设置的面积单位匹配否则你的面积数据就是错的。第二个动作是检查有没有零面积要素或者负面积要素。零面积要素通常是因为分割时切割线刚好经过节点导致生成了一条线而不是一个面这种要素必须在成果中删除。负面积要素很少见如果出现说明数据存在环状方向问题需要用“修复几何”工具修复后再检查。第三个动作是图形拓扑检查。分割面的结果如果涉及后续建库必须做一次拓扑检查规则包括“不能重叠”“不能有缝隙”。叠加分析的结果经常出现沿着分割线的微小缝隙或者重叠这些都要提前处理不然入库之后数据库质检会直接报错。有用的小工具是“要素转线”把分割后的面转成线然后检查线有没有自相交、重复线等错误。这个检查比直接做拓扑快适合快速排查大面积数据里的局部问题。具体做法是用“要素转线”工具把分割结果转成线图层打开属性表看是否有长度为零的线或者重叠线有问题就定位到区域检查原始数据。第四个动作是属性一致性检查。分割会生成新要素新要素除了继承属性外需要确认关键字段在分割前后总值不变。比如面积字段用原始图层的总面积和分割后所有要素的面积总和做对比误差应该在容差范围内。如果差值过大说明分割过程中有要素丢失或者几何被改变必须回溯检查。第五个动作是符号化渲染检查。用唯一值渲染按原图层的关键字段显示目视检查有没有异常显示。有时候几何没问题、属性没问题但图形边界看起来支离破碎实际上是绘制精度或者显示精度的原因导出地图的时候就会露馅。这一步虽然主观但能发现很多程序检查发现不了的问题。7. 我的几点经验总结文章最后把我在实际项目中摸爬滚出来的经验集中写一下没时间细看全文的直接看这一节。一是分割前先理清数据亲属关系。同一个数据如果同时要被多个工具处理先列清楚哪个是底图、哪个是切割工具、哪个是辅助参考避免把主次颠倒。比如做村界切图斑行政边界就是切刀图斑就是被切的料。你要是把图斑当作切刀去切行政边界输出的结果完全不是你要的东西。二是做好中间过程的数据管理。分割面这类工具生成的中间产物很多命名混乱会让人崩溃。我养成的习惯是文件名带“日期 版本号”比如“DlTbHS_20230915_V2”后面发现问题要回退先看版本号就知道哪份是当前有效数据。三是不要盲目相信默认容差。很多人喜欢“保持默认”跑一切工具但分割面这个工具的容差影响面太大。默认的XY容差是0.001米级别但你的数据实际精度可能只有0.1米。容差设太小碎屑满天飞后面清理消耗的时间远超你手工调整参数节省的几秒钟。反之容差设太大会把本来独立的要素错误合并数据精度损失不可逆。四是用工具前先把目标想明白。“分割”这个动作不同工具生成了不同层级的结果。有的工具把数据切碎重建一份新的有的把数据分成多份文件有的大动干戈直接改源数据。你如果不确认自己的目标是什么很容易选错工具。花三十秒把目标写下来“我要按村分割地类图斑每个村的图斑独立建库”你自然会选按属性分割而不是分割面。五是所有几何操作完成后用“检查几何”再扫一遍质量和几何。这步是最后的兜底防线。因为很多逻辑上没问题的数据在几何层面仍然存在隐藏异常可以通过此工具的检查提前发现。我在做ArcGIS培训的时候经常对学员说的一句话是工具本身都不难难的是你知道在哪个场景下用哪个工具以及工具跑完之后接下来该做什么。分割面系列工具刚好能说明这一点。最后一个实用技巧分享给大家如果遇到一张大范围的复杂图斑要切又不知道从哪下手先把图斑边界简化掉用“简化面”工具切完再把边界细节恢复回去。这个办法看似多此一举但在处理超大规模数据时能明显减少切割线的锯齿问题让后续出图看起来更美观。只是要注意简化参数别设太大否则边界形状失真反而得不偿失。分割面的内容到这里就写完了。下一篇文章打算继续写矢量数据编辑里的“合并”类工具把面要素的合并且说清楚——那又是一个和分割面刚好相反方向的高频操作。
返回列表