使用方法
有效的输入格式包括 shapefile 以及存储在文件或企业级地理数据库中的要素类。对于存储在企业级地理数据库中的要素类,支持以下空间类型:
- Microsoft SQL Server 几何空间类型和地理空间类型。
- PostgreSQL PostGIS 几何空间类型和地理空间类型。
- Oracle SDO 几何空间类型
输出表可记录发现的每个几何问题。如果未发现任何问题,则该表为空。
输出表内容(包括 PROBLEM 代码)用英文编写。
对于点要素,只会存在空几何问题。
为方便查看报告存在几何问题的要素,可使用添加连接工具以及输入的 OBJECTID 或 FID 字段和输出表的 FEATURE_ID 字段将输入要素连接到输出表。
Esri 验证方法通过 Esri 简化方法确保几何在拓扑上是合法的。仅 Esri 验证适用于存储在企业级地理数据库中的数据。
开放地理空间联盟 OGC 验证方法确保几何符合地理信息的 OpenGIS 执行标准(简单要素访问)第 1 部分:公用架构中定义的 OGC 规范。
使用 OGC 选项修复要素的几何后,任何后续的编辑或修改都可能导致几何不再符合 OGC 规范。修改要素后,运行检查几何工具以检查新几何问题。如有必要,重新运行修复几何工具。
OGC 简化方法不支持非线性线段,例如贝塞尔曲线、圆弧和椭圆弧。在运行检查几何之前,必须针对输入数据集使用增密工具对这些类型的线段进行增密。运行增密工具时,要避免不可逆地更改非线性线段,请先创建数据的副本。要确定您的数据是否具有非线性线段,请使用添加几何属性工具。
该工具识别出的问题可通过以下方式得到解决:
- 手动编辑和修复存在几何问题的要素。某些问题无法通过编辑进行修复。
- 请使用修复几何工具。可能无法使用 ArcGIS 工具修复与企业级数据库中存储的数据相关的某些问题。
输出表中包含以下字段:
- CLASS - 发现问题的要素类的完整路径和名称。
- FEATURE_ID - 存在几何问题的要素的要素 ID (FID) 或对象 ID (OID)。
- PROBLEM - 有关问题的简要描述。
PROBLEM 字段将包含下列代码之一:
- Short segment - 有些线段短于与几何关联的空间参考的系统单位所允许的长度。
- Null geometry - 该要素不具有几何或者 SHAPE 字段为空。
- Incorrect ring ordering - 面的拓扑结构比较简单,但是面的环可能未正确定向(外环 - 顺时针,内环 - 逆时针)。
- Incorrect segment orientation - 各条线段的定向不一致。线段 i 的终点应该与线段 i+1 的起点相接。
- Self intersections - 面不能与自身相交。
- Unclosed rings - 环中最后一条线段的终点必须与第一条线段的起点相接。
- Empty parts - 几何具有多个部分,其中一个部分为空(没有几何)。
- Duplicate vertex - 几何的两个或多个连续折点坐标相同。
- Mismatched attributes - 某线段端点的 z 坐标或 m 坐标与下一条线段中与之重合的端点的 z 坐标或 m 坐标不匹配。
- Discontinuous parts - 几何的某部分由断开的或不连续的部分组成。
- Empty Z values - 几何的一个或多个折点 z 值为空(例如,NaN)。
- Bad envelope - 包络矩形与几何的坐标范围不匹配。
- Bad dataset extent - 数据集的范围属性不包括数据集中的所有要素。对于此问题,FEATURE_ID 将为 -1。
对于存储在企业级地理数据库中的数据,PROBLEM 字段将包含以下代码之一:
- NEEDS_REORDERING - 形状正常,只是需要对其进行重新排序和/或移除重复的点。
- SE_INVALID_ENTITY_TYPE - 实体类型无效。
- SE_SHAPE_INTEGRITY_ERROR - 形状完整性错误。
- SE_INVALID_SHAPE_OBJECT - 给定的形状对象句柄无效。
- SE_COORD_OUT_OF_BOUNDS - 指定坐标超出有效坐标范围。
- SE_POLY_SHELLS_OVERLAP - 两个圆环或两个外壳重叠。
- SE_TOO_FEW_POINTS - 点数少于该要素所需数量。
- SE_INVALID_PART_SEPARATOR - 部分分隔符位置错误。
- SE_INVALID_POLYGON_CLOSURE - 多边形未正确闭合。
- SE_INVALID_OUTER_SHELL - 多边形外壳未完全闭合部分的所有圆环。
- SE_ZERO_AREA_POLYGON - 多边形壳没有区域。
- SE_POLYGON_HAS_VERTICAL_LINE - 多边形壳包含垂直线。
- SE_OUTER_SHELLS_OVERLAP - 多部分区域具有重叠部分。
- SE_SELF_INTERSECTING - 线串或多边形边界自相交。
语法
arcpy.management.CheckGeometry(in_features, out_table, {validation_method})
参数 | 说明 | 数据类型 |
in_features [in_feature,...] | 要检查是否存在几何问题的一个或多个要素类或要素图层。 | Feature Layer |
out_table | 所发现问题的报告(作为表的形式)。 | Table |
validation_method (可选) | 指定用于识别几何问题的几何验证方法。
| String |
代码示例
以下 Python 窗口脚本演示了如何在文件地理数据库以即时模式使用 CheckGeometry 函数:
import arcpy
arcpy.env.workspace = "c:/data/data.gdb"
arcpy.CheckGeometry_management(["contours", "roads", "vegetation"], "CheckGeom_Result")
以下独立脚本通过在文件地理数据库的所有要素类中循环来使用 CheckGeometry 函数。
# BatchCheckGeometry.py
# Description: Loops through all the feature classes in a geodatabase, and
# generates a report of the problems encountered with feature
# geometry.
# Import modules
import arcpy
import os
# The geodatabase in which the feature classes will be checked
arcpy.env.workspace = "C:\\data\\St_Lucia.gdb"
out_table = "checkGeometryResult"
# A variable that will hold the list of all the feature classes
# inside the geodatabase
fc_list = []
# Identify all feature classes in the geodatabase
for path, dirnames, fcs in arcpy.da.Walk(arcpy.env.workspace,
datatype='FeatureClass'):
for fc in fcs:
fc_list.append(os.path.join(path, fc))
print("Running the check geometry tool on {} feature classes".format(
len(fc_list)))
arcpy.CheckGeometry_management(fc_list, out_table)
print("{} geometry problems found, see {} for details.".format(
arcpy.GetCount_management(out_table)[0], out_table))
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是