arcpy.management.RepairGeometry(in_features, {delete_null}, {validation_method})名称说明数据类型in_features将处理的要素类或图层。
不支持要素服务。
许可:如果输入位于企业数据库或企业级地理数据库中,则需要 Desktop Standard 或 Desktop Advanced 许可。
Feature Layerdelete_null(可选)指定是否删除几何为空的要素。
DELETE_NULL—从输入中删除几何为空的要素。 这是默认设置。KEEP_NULL—不从输入中删除几何为空的要素。
注:KEEP_NULL 仅对来自企业级数据库、企业级地理数据库、GeoPackage 或 SpatiaLite 数据库的输入有效。
Booleanvalidation_method(可选)指定用于识别几何问题的几何验证方法。
ESRI—将使用 Esri 几何验证方法。 这是默认设置。OGC—将使用 OGC 几何验证方法。String派生输出名称说明数据类型out_feature_class更新后的输入要素。
Feature Layer代码示例RepairGeometry 示例 1(Python 窗口)
以下 Python 窗口脚本演示了如何在 shapefile 上以即时模式使用 RepairGeometry 函数。
import arcpy
arcpy.management.RepairGeometry("c:/data/data.shp")RepairGeometry 示例 2(独立脚本)
以下独立脚本是如何在脚本中应用 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.management.Delete(lyr)
tv = "cg_table_view"
if arcpy.Exists(tv):
arcpy.management.Delete(tv)
arcpy.management.MakeTableView(table, tv, ("\"CLASS\" = '%s'" % fc))
arcpy.management.MakeFeatureLayer(fc, lyr)
arcpy.management.AddJoin(lyr, arcpy.Describe(lyr).OIDFieldName, tv, "FEATURE_ID")
arcpy.management.CopyFeatures(lyr, fc + "_bad_geom")
arcpy.management.RemoveJoin(lyr, os.path.basename(table))
arcpy.management.RepairGeometry(lyr)