修复几何 (数据管理)
摘要
检查要素类中每个要素的几何问题。发现几何问题后,将应用相关修复,并打印一行描述,以便识别要素并确定遇到的问题。
有效的输入为 shapefile、个人地理数据库要素类和文件地理数据库要素类。
用法
-
如果几何存在问题,此工具将使用与检查几何工具相同的逻辑进行评估。
-
下面是几何问题和此工具将执行的相应修复的列表:
- 空几何:从要素类中删除记录。要保留具有空几何的记录,请取消选中工具对话选项删除几何为空的要素,或在脚本中将 delete_null 参数设置为 KEEP_NULL。
- 短线段:删除几何的短线段。
- 不正确的环走向:更新几何以获得正确的环走向。
- 不正确的线段方向:更新几何以获得正确的线段方向。
- 自相交:融合面中的叠置区域。
- 非闭合环:通过连接环的端点将非闭合环闭合。
- 空的部分:删除 null 或空的部分。
- 重复折点:删除其中一个折点。
- 不匹配的属性:更新 Z 或 M 坐标以实现匹配。
- 不连续的部分:根据现有的不连续部分创建多部分。
- 空的 Z 值:将 Z 设置为 0。
-
在要素上传到数据库后,SDE 地理数据库将自动检查并修复要素几何,所以不必将检查几何和修复几何工具用于 SDE 要素类。
-
应用上述一种修复后,此工具将重新评估所得几何,如果发现了其他问题,将执行相关修复。
从版本 10.0 开始,线几何与自身交叉将不再视为“自相交”。由于尚未发现对此类几何造成不利影响,因此检查几何工具不会再将这种要素报告为问题,修复几何工具也不再对这种要素的几何进行“修复”。在版本 10.0 之前,修复几何将在“自相交”线的交叉点处添加折点。如果您确实需要在线要素自相交时添加折点,请使用整合工具。
警告:
此工具用于修改输入数据。有关详细信息以及避免数据被意外更改的策略,请参阅无输出的工具。
语法
RepairGeometry_management (in_features, {delete_null})
参数 | 说明 | 数据类型 |
in_features |
将修复的要素类或图层。有效的输入要素为 shapefile、个人地理数据库要素类和文件地理数据库要素类。 | Feature Layer |
delete_null (可选) |
指定要在空几何上执行的操作。
| Boolean |
代码示例
修复几何示例(Python 窗口)
以下 Python 窗口脚本演示了如何在立即模式下使用 RepairGeometry 函数。
import arcpy arcpy.RepairGeometry_management ("c:/data/sketchy.shp")
修复几何示例 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 acted upon 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\f.gdb\cg_sample1" # Create local variables fcs = [] prevFc = "" # Loop through the table and get the list of fcs for row in arcpy.SearchCursor(table): # Get the class (feature class) for that row fc = row.getValue("CLASS") if fc != prevFc: prevFc = fc fcs.append(fc) # Now loop through the fcs list, backup the bad geometries into fc + "_bad_geom" # then repair the fc print "> Processing %i feature classes" % len(fcs) for fc in fcs: print "Processing " + fc lyr = os.path.basename(fc) 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)
相关主题
许可信息
ArcView: 是
ArcEditor: 是
ArcInfo: 是
7/10/2012