检查几何 (Data Management)
摘要
生成要素类中几何问题的报告。
有效的输入格式包括 shapefile 以及存储在个人地理数据库或文件地理数据库中的要素类。而 SDE 地理数据库则会在上传几何时自动检查每个几何的有效性;因此,检查几何和修复几何工具无需用于 SDE。
有关几何问题、这些问题对软件造成的影响以及可能的起因的详细信息,请参阅检查和修复几何。
用法
-
输出表可记录发现的每个几何问题。如果未发现任何问题,则该表为空。
-
输出表中包含以下字段:
- CLASS - 发现问题的要素类的完整路径和名称。
- FEATURE_ID - 存在几何问题的要素的要素 ID (FID) 或对象 ID (OID)。
- PROBLEM - 有关问题的简要描述。
-
PROBLEM 字段中可显示出下列问题之一:
- 短线段 - 有些线段短于与几何关联的空间参考的系统单位所允许的长度。
- 空几何 - 该要素不具有几何或者 SHAPE 字段为空。
- 不正确的环走向 - 面的拓扑结构比较简单,但是面的环可能没有正确地定向(外环 - 顺时针,内环 - 逆时针)。
- 不正确的线段方向 - 各条线段的定向不一致。线段 i 的“到”点应该与线段 i+1 的“从”点相接。
- 自相交 - 面无法与自身相交。
- 非闭合环 - 环中最后一条线段的“到”点必须与第一条线段的“从”点相接。
- 空的部分 - 几何具有多个部分,其中一个部分为空(没有几何)。
- 重复折点 - 几何的两个或多个折点坐标相同。
- 不匹配的属性 - 某线段端点的 Z 坐标或 M 坐标与下一条线段中与之重合的端点的 Z 坐标或 M 坐标不匹配。
- 不连续的部分 - 几何的某部分由断开的或不连续的部分组成。
- 空的 Z 值 - 几何的一个或多个折点 Z 值为空(例如,NaN)。
-
该工具识别出的问题可通过以下方式得到解决:
- 手动编辑和修复存在几何问题的要素。有些问题(如非简单几何)无法在编辑器中修复。
- 对识别出存在几何问题的要素类运行修复几何工具。
-
对于点要素,只会存在空几何问题。
-
为方便在 ArcMap 中查看报告存在几何问题的要素,可使用连接工具将输入要素连接到输出表。要进行连接,只需使用输入的 ObjectID 字段和输出表的 FEATURE_ID 字段。您也可以取消选中全部保留选项,这样便可以只显示存在几何问题的要素。
从版本 10.0 开始,线几何与自身交叉将不再视为“自相交”。由于尚未发现对此类几何造成不利影响,因此检查几何工具不会再将这种要素报告为问题,修复几何工具也不再对这种要素的几何进行“修复”。在版本 10.0 之前,修复几何将在“自相交”线的交叉点处添加折点。如果您确实需要在线要素自相交时添加折点,请使用整合工具。
语法
CheckGeometry_management (in_features, out_table)
参数 | 说明 | 数据类型 |
in_features [in_features,...] |
要检查是否存在几何问题的一个或多个要素类或要素图层。有效的输入格式包括 shapefile 以及存储在个人地理数据库或文件地理数据库中的要素类。 | Feature Layer |
out_table |
包含输入要素中所发现问题的列表的表。 | Table |
代码实例
检查几何示例(Python 窗口)
以下 Python 窗口脚本演示了如何在即时模式下使用 CheckGeometry 函数。
import arcpy
arcpy.env.workspace = "c:/data/data.gdb"
arcpy.CheckGeometry_management (["contours", "roads", "vegetation"], "CG_Result")
检查几何示例 2(独立脚本)
下述独立脚本通过在地理数据库的所有要素类中循环来使用 CheckGeometry 函数。
# BatchCheckGeometry.py
# Description:
# Loops through all the feature classes in a geodatabase, and generates
# a report of the problems encountered with feature geometry.
# Requirements: Python
# Import modules
import arcpy
# The workspace in which the feature classes will be checked
outTable = "C:/data/St_Lucia.gdb/checkGeometryResult"
arcpy.env.workspace = "C:/data/St_Lucia.gdb"
# A variable that will hold the list of all the feature classes
# inside the geodatabase
fcs = []
# List all feature classes in feature datasets
for fds in arcpy.ListDatasets("","featuredataset"):
fcs += arcpy.ListFeatureClasses("*","",fds)
# List all standalone feature classes
fcs = arcpy.ListFeatureClasses()
print "Running the check geometry tool on %i feature classes" % len(fcs)
arcpy.CheckGeometry_management(fcs, outTable)
print (str(arcpy.GetCount_management(outTable)) + " geometry problems were found.")
print ("See " + outTable + " for full details")
相关主题
许可信息
ArcGIS for Desktop Basic: 是
ArcGIS for Desktop Standard: 是
ArcGIS for Desktop Advanced: 是
5/10/2014