Сводка
Выявляет ошибки геометрии внутри класса пространственных объектов. При обнаружении ошибки она будет исправлена, а в кратком описании будет указан объект и ошибка геометрии, которая была исправлена.
Этот инструмент использует ту же логику, что и инструмент Проверить геометрию для исправления проблем с геометрией.
Использование
Инструмент может восстановить следующие проблемы геометрии:
- 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 - конверт объекта будет исправлен.
После исправления инструмент еще раз оценит полученную геометрию и, если будет найдена еще одна ошибка, выполнит для нее соответствующее исправление. Например, в результате исправления геометрии с ошибкой Incorrect ring ordering может появиться геометрия с ошибкой Null geometry.
Ошибка Bad dataset extent не может быть исправлена этим инструментом. Чтобы решить эту проблему, обработайте этот набор данных инструментом Пересчитать экстент класса объектов.
Многопользовательские базы геоданных автоматически проверяют и восстанавливают геометрии объектов, если пространственные объекты подгружены в базу данных, поэтому не требуется использовать инструменты Проверить геометрию и Восстановить геометрию с классами пространственных объектов многопользовательской базы геоданных.
Синтаксис
arcpy.management.RepairGeometry(in_features, {delete_null})
Параметр | Объяснение | Тип данных |
in_features | Класс пространственных объектов или слой, которые будут обработаны. | Feature Layer |
delete_null (Дополнительный) | Определяет, будут ли удаляться объекты с нулевой геометрией.
| Boolean |
Производные выходные данные
Имя | Объяснение | Тип данных |
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: Да