矢量面数据内部出现空洞,何补十有八九是齐矢拓扑错误或数据转换时留下的烂摊子。我见过最离谱的量内一个案例,某区县土地利用面图层里嵌了三百多个细碎空洞,部漏全部是何补CAD转SHP时弧段闭合不严导致的。ArcGIS里补这些洞,齐矢核心思路就两条:要么把洞填上,量内要么把洞和外面的部漏面合并。
最直接的何补办法是用Editor工具条。开始编辑后,齐矢选中那个带洞的量内面,右键点属性,部漏在Part列表里能看到每个环。何补空洞通常是齐矢一个独立的内环,选中它按Delete,量内洞就没了。这招适合洞少、位置明确的情况。但如果洞多得数不清,一个个删就是自虐。
这时候得换思路,用Eliminate工具。它藏在Data Management Tools的Generalization工具箱里。原理很简单:把选中的面合并到相邻面积最大的面里。操作时先启动编辑,选中所有带洞的面,跑Eliminate,洞就被周围的面吞掉了。有个坑要注意——如果洞正好在边界上,合并后可能改变外部轮廓,得提前备份。
另一条路是Union加Dissolve的组合拳。先把原图层和它自己做Union,洞会变成独立的面要素。然后按某个公共字段Dissolve,洞就和外面的面融为一体了。这方法适合洞形状复杂、Eliminate处理不干净的情况。我试过一个乡镇的农用地转用图,Eliminate跑完还剩几十个针尖大的洞,最后用Union+Dissolve才彻底清干净。
还有种情况是洞本身有属性数据,不能随便删。比如某个面里挖了个洞表示采矿用地,洞有独立的权属信息。这时候得用Feature To Polygon。把面图层和洞图层一起丢进去,ArcGIS会自动重建拓扑,生成没有空洞的完整面。代价是属性会重新映射,得手动核对字段。
拓扑检查器也能派上用场。建个地理数据库拓扑,规则设“不能有缝隙”和“不能重叠”。验证后,空洞会被标成错误。右键错误记录,选“创建要素”或“合并”,系统会给出修复选项。这招对批量处理特别友好,就是前期建拓扑有点繁琐。
实际操作中,我习惯先跑一遍Repair Geometry。很多洞其实是几何错误,不是真拓扑问题。修复完再看还剩多少,再决定用哪种方法。有个小技巧:把符号系统设成半透明,洞一眼就能看出来。比逐个查属性快得多。
最后提醒一句,补洞前务必复制原始数据。Eliminate和Union都会不可逆地修改要素。我吃过亏,一个跑了三小时的Eliminate把边界上的洞合并到了错误的面里,只能从头再来。