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

Сводка

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

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

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

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

    Внимание:

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

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

    • Microsoft SQL Server Geometry и Geography
    • PostgreSQL PostGIS Geometry и Geography
    • Oracle SDO Geometry

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

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

    • 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 – конверт объекта будет исправлен.

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

    • 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. После изменения объекта запустите инструмент Проверить геометрию, чтобы проверить наличие новых проблем с геометрией. Если необходимо, запустите заново инструмент Восстановить геометрию.

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

Синтаксис

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

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

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

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

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

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

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

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

  • ESRIБудет использоваться метод проверки геометрии Esri. Это значение по умолчанию
  • OGCБудет использоваться метод проверки геометрии 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: Да

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