前些天,办公室的两个同学在同一天都问我怎样将Shape区文件中的空洞修补上,同一个问题我在很短的时间内说了两次,所以我觉得有必要将解决这个问题的方法记录下来,以供广大GISer参考。
比如说,有下面这样一个图层,其中的图斑有空洞,如图一所示。

方法一:自动完成多边形(Auto-Complete Polygon)
这种方法适用于图斑中空洞比较少的情况,通过一个一个的手动修补即可完成,但是如果图斑空洞数量非常多,那么这种方法不适用。具体步骤为:
(1)将待修补图层开始编辑(Editor—>Start Editing)
(2)在Editor工具条上,从task下拉对话框中选择Auto-Complete Polygon。
(3)点击Editor工具条上的草图工具(Sketch Tool),在图斑要素的空洞上画一条穿过其的线,双击结束绘画,这时会发现原来的空洞被填补起来,只是是用两个图斑填充的。
(4)选中刚才生成的填补空洞的两个多边形,选择Editor—>Editor—>Merge,将两个多边形合并即可。
方法二:利用Geodatabase创建Shape的拓扑关系
在空洞数量比较多的情况下,方法一就不好使了,为了快速的修补所有的图版空洞,可以利用Geodatabase建立Shape文件的拓扑关系,通过图斑与图斑的拓扑关系一次将所有空洞修补好。具体方法如下:
(1)利用ArcCatalog,建立一个Geodatabase数据库,然后在数据库中建立一个数据集abc(Feature Dataset),将待修复的Shape文件导入刚刚新建的数据集中。
(3)在数据集abc上右击,选择New—>Topology(如图二所示),在新建拓扑对话框中设置拓扑规则为Must not have Gaps,点击下一步完成拓扑规则的建立并验证拓扑(Validate)。

(4)将新建的拓扑规则添加到ArcMap的TOC窗口中,会提示是否将和此拓扑有关的要素文件添加进来,选择是。
(5)在Topology工具条上点击Error Inspector按钮,打开错误列表对话框,点击其中的Search Now按钮,搜索拓扑错误,在搜索出的错误中,忽略掉与空洞无关的错误,选中剩余的错误,在列表上右击Creat Feature,之后我们看到所有的要素空洞都被填充起来了。
这种方法同样有局限性,就是对于环形的空洞挖法完美修补。
方法三:利用Arc/Info Wordstation建立拓扑关系
虽然Workstation的命令让许多人都很头疼,但是不得不承认这是解决这个问题最好的方法。通过将Shape文件转为Coverage,然后重建拓扑,随后将Coverage再转为Shape文件。此种方法可以完美的将空洞填补起来。具体方法是:
(1)利用shapearc命令将shape文件转换为coverage。
(2)用clean命令对转换得到的Coverage重新建立拓扑关系。注意:在拓扑关系时要选择合适的容限值参数。
(3)利用arcshape命令将coverage数据转换为Shape区文件。
对于方法三在此就不提供命令的用法,具体可以查阅Arc/Info Workstation的帮助文件。
亲爱的博主,您好,非常荣幸看到您写文章,我处理数据时遇到类似的问题,但是又有点不同,以上方法不能处理好,希望能与博主您联系,给予一点帮助,可以的话,请博主邮箱联系我,我再描述具体的问题,非常感谢博主!
After reading your blog post I browsed your website a bit and noticed you aren’t ranking nearly as well in Google as you could be. I possess a handful of blogs myself and I think you should take a look here: http://dominateseowithwordpress.com You’ll find it’s a very nice tool that can bring you a lot more visitors. Keep up the quality posts