Краткая информация
Выявляет ошибки геометрии внутри класса пространственных объектов. После обнаружения проблем геометрии, будут выполнены соответствующие исправления и возвращено краткое описание пространственного объекта и встретившейся проблемы.
Корректными входными данными являются шейп-файлы и классы пространственных объектов персональной или файловой базы геоданных.
Использование
Инструмент использует ту же логику, что и инструмент Проверить геометрию для определения ошибок в геометрии объектов.
Ниже приведен перечень ошибок геометрии и соответствующих исправлений, которые будут выполняться этим инструментом:
- 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. Чтобы решить эту проблему, обработайте набор данных инструментом Добавить пространственный индекс.
Многопользовательские базы геоданных автоматически проверяют и восстанавливают геометрии объектов, если пространственные объекты подгружены в базу данных, поэтому не требуется использовать инструменты Проверить геометрию и Восстановить геометрию с классами пространственных объектов многопользовательской базы геоданных.
Синтаксис
RepairGeometry_management (in_features, {delete_null})
Параметр | Объяснение | Тип данных |
in_features | Класс пространственных объектов или слой, которые будут восстановлены. Корректными входными объектами являются шейп-файлы и классы пространственных объектов персональной и файловой баз геоданных. | Feature Layer |
delete_null (Дополнительный) | Устанавливает, какое действие будет применено к нулевой геометрии.
| Boolean |
Производные выходные данные
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)
Параметры среды
Информация о лицензиях
- ArcGIS Desktop Basic: Да
- ArcGIS Desktop Standard: Да
- ArcGIS Desktop Advanced: Да