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

Сводка

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

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

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

    Внимание:

    Этот инструмент изменяет входные значения. Более подробно о стратегиях предотвращения нежелательных изменений данных см. в разделе Инструменты, не создающие выходных данных.

  • Инструмент использует ту же логику, что и инструмент Проверить геометрию для оценки того, имеет ли геометрия ошибки.

  • Ниже приведен перечень ошибок геометрии и соответствующих исправлений, которые будут выполняться этим инструментом:

    • Null geometry - запись будет удалена из класса объектов. Чтобы сохранить записи с нулевой геометрией, снимите отметку Удалить объекты с нулевой геометрией (используйте опцию KEEP_NULL параметра delete_null в Python).
    • Short segment – короткий сегмент геометрии будет удален.
    • Incorrect ring ordering – геометрия будет обновлена таким образом, чтобы в ней был установлен корректный порядок колец.
    • Incorrect segment orientation – геометрия будет обновлена таким образом, чтобы в ней была установлена корректная ориентация сегмента.
    • Self intersections – области наложения в полигоне будут слиты.
    • Unclosed rings – незамкнутое звено будет замкнуто путем соединения конечных точек звена.
    • Empty parts – нулевые или пустые части будут удалены.
    • Duplicate vertex – одна из вершин будет удалена.
    • Mismatched attributes – координаты Z или M будут обновлены для соответствия.
    • Discontinuous parts – из дискретной части будет создано несколько частей.
    • Empty Z values – значение z будет установлено равным 0.
    • Bad envelope – конверт объекта будет исправлен.
  • После применения одного из указанных исправлений, инструмент повторно оценит полученную геометрию, и, при обнаружении другой ошибки, будут выполнены соответствующие исправления. Например, в результате исправления геометрии с ошибкой Incorrect ring ordering может появиться геометрия с ошибкой Null geometry.

  • В инструменте Восстановить геометрию нет исправления ошибки bad dataset extent. Чтобы решить эту проблему, обработайте набор данных инструментом Пересчитать экстент класса объектов.

  • Метод проверки Esri обеспечивает топологическую правильность геометрии при помощи способа упрощения Esri.

  • Метод проверки OGC обеспечивает соответствие геометрии спецификациям OGC, указанным в OpenGIS Implementation Standard for Geographic information – simple feature access – Part 1: common architecture.

  • После восстановления геометрии объектов при помощи опции OGC, любые последующие изменения могут привести к тому, что геометрия перестанет соответствовать спецификациям OGC. После изменения объекта запустите инструмент Проверить геометрию, чтобы проверить на наличие новых ошибок. Если необходимо, запустите заново инструмент Восстановить геометрию.

  • OGC поддерживает нелинейные сегменты, например, параметрические кривые, дуги окружности и дуги эллипса. Такие типы сегментов будет необходимо уплотнить во входном наборе данных при помощи инструмента Уплотнить до выполнения инструмента Восстановить геометрию. Во избежание необратимого изменения нелинейных сегментов при запуске инструмента Уплотнить сделайте сначала копию данных, а потом выполните на ней инструмент Восстановить геометрию. Чтобы определить, есть ли в ваших данных нелинейные сегменты, воспользуйтесь инструментом Добавить атрибуты геометрии.

Синтаксис

RepairGeometry(in_features, {delete_null}, {validation_method})
ParameterОбъяснениеТип данных
in_features

Класс пространственных объектов или слой, которые будут обработаны.

Feature Layer
delete_null
(Дополнительный)

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

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

Определяет, какой метод проверки геометрии будет использоваться для выявления ошибок геометрии.

  • ESRI Будет применен метод проверки геометрии Esri. Это значение по умолчанию.
  • OGC Будет применен метод проверки геометрии Open Geospatial Consortium (OGC).
String

Производные выходные данные

NameОбъяснениеТип данных
out_feature_class

Обновленные входные объекты

Векторный слой

Пример кода

RepairGeometry, пример 1 (окно Python)

Пример скрипта окна Python для использования функции RepairGeometry в режиме прямого запуска.

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

Пример скрипта Python для выполнения функции 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)

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

  • Basic: Да
  • Standard: Да
  • Advanced: Да

Связанные разделы