标注 | 说明 | 数据类型 |
输入要素 | 将处理的要素类或图层。 | Feature Layer |
删除几何为空的要素 (可选) | 指定是否删除几何为空的要素。
注:对于存储在企业级数据库、企业级地理数据库、GeoPackage 或 SpatiaLite 数据库中的数据,删除几何为空的要素不可用。 | Boolean |
验证方法 (可选) | 指定用于识别几何问题的几何验证方法。
| String |
派生输出
标注 | 说明 | 数据类型 |
修复的输入要素 | 更新后的输入要素。 | Feature Layer |
此工具会修改输入数据。 有关详细信息以及避免数据被意外更改的策略,请参阅修改或更新输入数据的工具。
有效的输入格式包括 shapefile 以及存储在文件地理数据库、企业级数据库、企业级地理数据库、GeoPackage 或 SpatiaLite 数据库中的要素类。 对于存储在企业级数据库或企业级地理数据库中的要素类,支持以下空间类型:
不支持存储在企业级地理数据库中并注册为版本的要素类。
启用撤消切换按钮对于企业级地理数据库的输入无效。
下面是所有几何问题和此工具将执行的相应修复的列表:
下面是可能会由企业级地理数据库中存储的数据导致的几何问题和此工具将执行的相应修复(如果存在)的列表:
可能无法使用 ArcGIS 工具修复与企业级数据库中存储的数据相关的某些问题。
执行修复后,此工具将重新评估所得几何,如果发现了其他问题,将执行该问题的相关修复。 例如,修复具有 Incorrect ring ordering 问题的几何结果可能会导致具有 Null geometry 问题的几何。
Esri 验证选项通过 Esri 简化方法确保几何在拓扑上是正确的。 仅 Esri 验证适用于存储在企业级地理数据库中的数据。
开放地理空间联盟 OGC 验证方法确保几何符合地理信息的 OpenGIS 执行标准(简单要素访问)第 1 部分:公用架构中定义的 OGC 规范。
使用 OGC 选项修复要素的几何后,任何后续的编辑或修改都可能导致几何不再符合 OGC 规范。
修改要素后,运行检查几何工具以检查新几何问题。 如有必要,重新运行修复几何工具。
使用 OGC 选项验证或修复后的几何将适用于 Esri 选项。 要了解有关这两种方法的详细信息,请参阅什么是简单面。
标注 | 说明 | 数据类型 |
输入要素 | 将处理的要素类或图层。 | Feature Layer |
删除几何为空的要素 (可选) | 指定是否删除几何为空的要素。
注:对于存储在企业级数据库、企业级地理数据库、GeoPackage 或 SpatiaLite 数据库中的数据,删除几何为空的要素不可用。 | Boolean |
验证方法 (可选) | 指定用于识别几何问题的几何验证方法。
| String |
标注 | 说明 | 数据类型 |
修复的输入要素 | 更新后的输入要素。 | Feature Layer |
arcpy.management.RepairGeometry(in_features, {delete_null}, {validation_method})
名称 | 说明 | 数据类型 |
in_features | 将处理的要素类或图层。 | Feature Layer |
delete_null (可选) | 指定是否删除几何为空的要素。
注:KEEP_NULL 仅对来自企业级数据库、企业级地理数据库、GeoPackage 或 SpatiaLite 数据库的输入有效。 | Boolean |
validation_method (可选) | 指定用于识别几何问题的几何验证方法。
| String |
名称 | 说明 | 数据类型 |
out_feature_class | 更新后的输入要素。 | Feature Layer |
以下 Python 窗口脚本演示了如何在 shapefile 上以即时模式使用 RepairGeometry 函数:
import arcpy
arcpy.management.RepairGeometry("c:/data/sketchy.shp")
以下独立脚本是如何在脚本中应用 RepairGeometry 函数的示例。
# Description:
# Goes through the table generated by the Check Geometry tool and does
# the following
# 1) backs-up all features which will be 'fixed' to a "_bad_geom" feature class
# 2) runs repairGeometry on all feature classes listed in the table
import arcpy
import os
# Table that was produced by Check Geometry tool
table = r"c:\temp\data.gdb\cg_sample1"
# Create local variables
fcs = []
# Loop through the table and get the list of fcs
for row in arcpy.da.SearchCursor(table, ("CLASS")):
# Get the class (feature class) from the cursor
if not row[0] in fcs:
fcs.append(row[0])
# Now loop through the fcs list, backup the bad geometries into fc + "_bad_geom"
# then repair the fc
print("> Processing {0} feature classes".format(len(fcs)))
for fc in fcs:
print("Processing " + fc)
lyr = 'temporary_layer'
if arcpy.Exists(lyr):
arcpy.Delete_management(lyr)
tv = "cg_table_view"
if arcpy.Exists(tv):
arcpy.Delete_management(tv)
arcpy.MakeTableView_management(table, tv, ("\"CLASS\" = '%s'" % fc))
arcpy.MakeFeatureLayer_management(fc, lyr)
arcpy.AddJoin_management(lyr, arcpy.Describe(lyr).OIDFieldName, tv, "FEATURE_ID")
arcpy.CopyFeatures_management(lyr, fc + "_bad_geom")
arcpy.RemoveJoin_management(lyr, os.path.basename(table))
arcpy.RepairGeometry_management(lyr)
如果环境未设置(默认值)或者设置为 0,则将禁用并行处理。 如果已设置为 100,则该工具尝试将工作分配给计算机上的所有逻辑内核。 在 1 到 99 之间指定一个因子时,工具将通过应用公式(并行处理因子 / 100 * 逻辑内核数)确定要使用的逻辑内核的百分比,其结果将向上舍入到最近的整数值。 如果此公式的结果是 0 或 1,则将不启用并行处理。