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

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

Проверяет наличие проблем с геометрией объектов и восстанавливает ее. Если обнаружена проблема, будет выполнено исправление, и однострочное описание идентифицирует объект, а также проблему геометрии, которая была устранена.

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

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

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

    Внимание:

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

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

    • Microsoft SQL Server — Geometry и Geography
    • PostgreSQLPostGIS, Geometry и Geography
    • Oracle — SDO_Geometry
    • SAP HANA — ST_Geometry

    Лицензия:

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

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

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

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

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

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

    • 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.

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

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

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

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

  • Геометрия, проверенная или восстановленная при помощи опции OGC, будет допустима для опции Esri. Более подробно об обоих методах см. Что такое простой полигон.

Параметры

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

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

Лицензия:

Лицензия 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.management.RepairGeometry("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)

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

Особые случаи

Коэффициент параллельной обработки

Если параметр среды не задан (используется значение по умолчанию) или указан как 0, параллельная обработка будет отключена. Если параметр среды установлен на 100, инструмент будет пытаться задействовать все логические ядра процессора компьютера. Присвоение коэффициенту значения от 1 до 99 приведет к тому, что инструмент определит процент логических ядер для использования по формуле (Коэффициент параллельной обработки / 100 * Логические ядра), округлив результат до ближайшего целого значения. Если результат равен 0 или 1, параллельная обработка не будет включена.

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