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

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

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

Этот инструмент использует ту же логику, что и инструмент Проверить геометрию для исправления проблем с геометрией.

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

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

    Внимание:

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

  • Допустимые форматы ввода – это шейп-файлы и классы пространственных объектов, хранящиеся в файловой базе геоданных, многопользовательской базе данных или базе геоданных, в GeoPackage или базе данных SpatiaLite. Для классов пространственных объектов, хранящихся в многопользовательской базе данных или базе геоданных, поддерживаются следующие пространственные типы:

    • Microsoft SQL Server - Geometry и Geography
    • PostgreSQLPostGIS Geometry и Geography
    • Oracle - SDO_Geometry

    Лицензия:

    Лицензия Desktop Basic позволяет применять этот инструмент только к шейп-файлам и классам объектов, хранящимся в файловой базе геоданных, в GeoPackage или базе данных SpatiaLite. Лицензия Desktop Standard или Desktop Advanced позволяет дополнительно применять этот инструмент к классам объектов, хранящимся в многопользовательской базе данных или базе геоданных.

  • Кнопка-переключатель Включить отмену не работает для входных данных из многопользовательской базы геоданных.

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

    • Null geometry - запись будет удалена из класса объектов. Чтобы оставить записи с нулевой геометрией, снимите отметку Удалить объекты с нулевой геометрией (delete_null = "KEEP_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 - конверт объекта будет исправлен.

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

    • NEEDS_REORDERING – форма будет переупорядочена, а повторяющиеся точки удалены.
    • SE_INVALID_ENTITY_TYPE - невозможно восстановить тип объекта (объект должен быть удален).
    • SE_SHAPE_INTEGRITY_ERROR - возможно, эта форма не подлежит восстановлению.
    • SE_INVALID_SHAPE_OBJECT - возможно, этот объект формы не подлежит восстановлению.
    • SE_COORD_OUT_OF_BOUNDS - невозможно восстановить координату.
    • SE_POLY_SHELLS_OVERLAP - перекрывающиеся оболочки будут объединены.
    • SE_TOO_FEW_POINTS - невозможно восстановить точки.
    • SE_INVALID_PART_SEPARATOR - разделитель частей не подлежит восстановлению.
    • SE_INVALID_POLYGON_CLOSURE - незакрытые оболочки будут отброшены (получившийся полигон можно оставить пустым).
    • SE_INVALID_OUTER_SHELL - будет предпринята попытка починить внешние оболочки объекта; при этом оболочки могут быть отброшены.
    • SE_ZERO_AREA_POLYGON - полигон будет преобразован в пустую форму.
    • SE_POLYGON_HAS_VERTICAL_LINE - вертикальная линия будет удалена (форма может быть преобразована в 2D).
    • SE_OUTER_SHELLS_OVERLAP - перекрывающиеся части будут объединены.
    • SE_SELF_INTERSECTING - точки пересечения будут добавлены, если необходимо.

    Примечание:

    Некоторые проблемы, связанные с данными, хранящимися в многопользовательской базе данных, не могут быть устранены с помощью инструментов ArcGIS.

  • Применив исправление, инструмент еще раз оценит полученную геометрию и, если будет найдена еще одна ошибка, выполнит для нее соответствующее исправление. Например, в результате исправления геометрии с ошибкой Incorrect ring ordering может появиться геометрия с ошибкой Null geometry.

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

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

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

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

Параметры

ПодписьОписаниеТип данных
Входные объекты

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

Лицензия:

Лицензия Desktop Basic разрешает в качестве допустимых форматов входных объектов только шейп-файлы и классы объектов, хранящиеся в файловой базе геоданных, в GeoPackage или базе данных SpatiaLite. Лицензия Desktop Standard или Desktop Advanced дополнительно позволяет использовать в качестве допустимых форматов входных объектов классы объектов, хранящиеся в многопользовательской базе данных или базе геоданных.

Feature Layer
Удалить объекты с пустой геометрией
(Дополнительный)

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

  • Отмечено – элементы с нулевой геометрией будут удалены из входных данных. Это значение по умолчанию
  • Не отмечено – объекты с нулевой геометрией не будут удалены из входных данных.

Примечание:
Инструмент Удалить объекты с пустой геометрией недоступен для данных, хранящихся в многопользовательской базе данных или базе геоданных, в GeoPackage или базе данных SpatiaLite.

Boolean
Метод проверки
(Дополнительный)

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

  • EsriБудет использоваться метод проверки геометрии Esri. Это значение по умолчанию
  • OGCБудет использоваться метод проверки геометрии OGC.
String

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

ПодписьОписаниеТип данных
Восстановленные входные объекты

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

Feature Layer

arcpy.management.RepairGeometry(in_features, {delete_null}, {validation_method})
ИмяОписаниеТип данных
in_features

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

Лицензия:

Лицензия Desktop Basic разрешает в качестве допустимых форматов входных объектов только шейп-файлы и классы объектов, хранящиеся в файловой базе геоданных, в GeoPackage или базе данных SpatiaLite. Лицензия Desktop Standard или Desktop Advanced дополнительно позволяет использовать в качестве допустимых форматов входных объектов классы объектов, хранящиеся в многопользовательской базе данных или базе геоданных.

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

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

  • DELETE_NULLОбъекты с нулевой геометрией будут удалены из входа. Это значение по умолчанию
  • KEEP_NULLОбъекты с нулевой геометрией не будут удалены из входных данных.

Примечание:
Для входных данных из многопользовательской базы данных или базы геоданных, GeoPackage или базы данных SpatiaLite допустимым является только KEEP_NULL.

Boolean
validation_method
(Дополнительный)

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

  • ESRIБудет использоваться метод проверки геометрии Esri. Это значение по умолчанию
  • OGCБудет использоваться метод проверки геометрии OGC.
String

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

ИмяОписаниеТип данных
out_feature_class

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

Feature Layer

Пример кода

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

Следующий скрипт окна Python демонстрирует, как использовать функцию RepairGeometry для шейп-файла в режиме прямого запуска.

import arcpy
arcpy.RepairGeometry_management("c:/data/sketchy.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.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: Да

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