文章目录
前言
本文介绍在ArcMap软件中,使用矢量数据裁剪另一矢量数据时,若出现输出结果为空且无法自动加载至地图的一种解决方案------即通过"检查几何"与"修复几何"工具进行处理。
有时在使用"裁剪"工具时,以一个矢量图层对另一矢量图层执行裁剪操作,然而运行工具后,出现提示输出结果为空。若遇到类似情况,很可能是由于输入矢量数据存在几何错误所致。
一、检查几何
针对该问题,可先使用"检查几何"工具对输入数据进行诊断。具体操作如下:依次点击【系统工具箱】> 【Data Management Tools.tbx】>【要素】>【检查几何】,如下图所示。

在打开的工具窗口中,导入裁剪时使用的矢量数据,并设置几何检查结果表的保存位置,如下图所示。
运行工具后,即可查看矢量图层是否存在几何错误。
输出表可记录发现的每个几何问题。如果未发现任何问题,则该表为空。
- 输出表中包含以下字段:
CLASS - 发现问题的要素类的完整路径和名称。
FEATURE_ID - 存在几何问题的要素的要素 ID (FID) 或对象 ID (OID)。
PROBLEM - 有关问题的简要描述。
PROBLEM 字段中可显示出下列问题之一 - 几何错误
短线段 - 有些线段短于与几何关联的空间参考的系统单位所允许的长度。
空几何 - 该要素不具有几何或者 SHAPE 字段为空。
不正确的环走向 - 面的拓扑结构比较简单,但是面的环可能没有正确地定向(外环 - 顺时针,内环 - 逆时针)。
不正确的线段方向 - 各条线段的定向不一致。线段 i 的"到"点应该与线段 i+1 的"从"点相接。
自相交 - 面无法与自身相交。
非闭合环 - 环中最后一条线段的"到"点必须与第一条线段的"从"点相接。
空的部分 - 几何具有多个部分,其中一个部分为空(没有几何)。
重复折点 - 几何的两个或多个折点坐标相同。
不匹配的属性 - 某线段端点的 Z 坐标或 M 坐标与下一条线段中与之重合的端点的 Z 坐标或 M 坐标不匹配。
不连续的部分 - 几何的某部分由断开的或不连续的部分组成。
空的 Z 值 - 几何的一个或多个折点 Z 值为空(例如,NaN)。
二、修复几何
确认矢量数据存在几何问题后,可使用位于"检查几何"工具附近的"修复几何"工具进行修复,如下图所示。

- 下面是几何问题和此工具将执行的相应修复的列表:
空几何:从要素类中删除记录。要保留具有空几何的记录,请取消选中工具对话选项删除几何为空的要素,或在脚本中将 delete_null 参数设置为 KEEP_NULL。
短线段:删除几何的短线段。
不正确的环走向:更新几何以获得正确的环走向。
不正确的线段方向:更新几何以获得正确的线段方向。
自相交:融合面中的叠置区域。
非闭合环:通过连接环的端点将非闭合环闭合。
空的部分:删除 null 或空的部分。
重复折点:删除其中一个折点。
不匹配的属性:更新 Z 或 M 坐标以实现匹配。
不连续的部分:根据现有的不连续部分创建多部分。
空的 Z 值:将 Z 设置为 0。
此时,再次使用修复后的矢量数据进行裁剪操作,工具可正常执行且未报错。
至此,问题得到解决。
总结
shapefile 属于一种开放的格式,许多软件都可写入成此格式。遗憾的是,其中一些软件可能由于存在缺陷或缺失相关信息而无法遵循以文档格式存在的 shapefile 格式规范。
还有一点值得注意:将 shapefile 加载到个人地理数据库或文件地理数据库时,要素将原样(包含现有几何问题)复制为这些其他的格式,因此使用个人和文件地理数据库要素类必须同使用 shapefile 数据一样认真仔细。
所以要素类在成果上交之前,必须对每个记录的几何是否存在几何问题进行检查,如有必要,还会进行修复。