Восстановить геометрию (Управление данными (Data Management))

Уровень лицензии:BasicStandardAdvanced

Краткая информация

Выявляет ошибки геометрии внутри класса пространственных объектов. После обнаружения проблем геометрии, будут выполнены соответствующие исправления, и будет возвращено краткое описание, определяющее пространственный объект, а также встретившуюся проблему.

Корректными входными данными являются шейп-файлы, классы пространственных объектов персональной или файловой базы геоданных.

Более подробно о проверке и восстановлении геометрии

Использование

Синтаксис

RepairGeometry_management (in_features, {delete_null})
ПараметрОбъяснениеТип данных
in_features

Класс пространственных объектов или слой, которые будут восстановлены. Корректными входными объектами являются шейп-файлы и классы пространственных объектов персональной и файловой баз геоданных.

Feature Layer
delete_null
(дополнительно)

Устанавливает, какое действие будет применять нулевую геометрию.

  • DELETE_NULL Объекты, имеющие нулевую (NULL) геометрию, будут удалены из входных данных. Это значение по умолчанию.
  • KEEP_NULL Объекты, имеющие нулевую (NULL) геометрию, НЕ будут удалены из входных данных.
Boolean

Пример кода

Восстановить геометрию. Пример (окно Python)

Пример скрипта Python для выполнения функции Восстановить геометрию (Repair Geometry) с запуском из окна Python в ArcGIS.

import arcpy
arcpy.RepairGeometry_management ("c:/data/sketchy.shp")
Восстановить геометрию. Пример 2 (автономный скрипт)

Пример скрипта Python для выполнения функции Восстановить геометрию (Repair Geometry) в автономном режиме.

# 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 
# Author: ESRI

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)

Параметры среды

Связанные темы

Информация о лицензировании

ArcGIS for Desktop Basic: Да
ArcGIS for Desktop Standard: Да
ArcGIS for Desktop Advanced: Да
5/10/2014