Проверить геометрию (Check Geometry) (Управление данными)
Резюме
Генерирует отчет об ошибках геометрии в классе пространственных объектов.
Допустимыми форматами являются шейп-файлы и классы объектов, хранящиеся в персональной или файловой базе геоданных. Базы геоданных SDE автоматически проверяют правильность каждой геометрии при загрузке, поэтому инструменты Проверить геометрию (Check Geometry) и Восстановить геометрию (Repair Geometry) не используются с базами геоданных SDE.
Дополнительную информацию о проблемах геометрии, их причинах и влиянии на работу программного обеспечения см. в разделе Проверка и восстановление геометрии.
Использование
-
Выходная таблица (Output Table) будет содержать записи по каждой обнаруженной проблеме геометрии. Если ошибки не найдены, таблица будет пустой.
-
Выходная таблица (Output Table) содержит следующие поля:
- CLASS - Полный путь к классу пространственных объектов и его имя, где будет найдена ошибка.
- FEATURE_ID - Идентификатор объекта (FID) или Object ID (OID) для пространственного объекта с ошибками геометрии.
- PROBLEM – Краткое описание ошибки.
-
Поле PROBLEM может содержать следующие сообщения:
- Короткий сегмент (Short segment) - Некоторые сегменты короче, чем допускается единицами системы пространственной привязки, связанной с геометрией.
- Нулевая геометрия (Null geometry) - Пространственные объекты имеют геометрию или ничего в поле SHAPE.
- Некорректный порядок колец (Incorrect ring ordering) - Полигон топологически прост, но его кольца ориентированы некорректно (внешние кольца - по часовой стрелке, внутренние кольца - против часовой стрелки.
- Некорректная ориентация сегментов (Incorrect segment orientation) — отсутствует согласованность ориентации отдельных сегментов. Точка "до" сегмента i должна совпадать с точкой "от" сегмента i+1.
- Самопересечения (Self intersections)— полигон не должен пересекать сам себя.
- Незамкнутые кольца (Unclosed rings)— точка "до" последнего сегмента кольца должна совпадать с точкой "от" первого сегмента.
- Пустые части (Empty parts)— геометрия состоит из нескольких частей, одна из которых пустая (без геометрии).
- Повторяющаяся вершина (Duplicate vertex)— в геометрии есть несколько вершин с одинаковыми координатами.
- Несоответствие атрибутов (Mismatched attributes) — координаты Z или M конечной точки линейного сегмента не совпадают с координатами Z или M соответствующей конечной точки следующего сегмента.
- Дискретные части (Discontinuous parts)— одна из частей геометрии состоит из разрозненных или дискретных частей.
- Пустые значения Z (Empty Z values)— в геометрии есть одна или несколько вершин с пустым значением Z (например, NaN).
-
Проблему, выявленную этим инструментом, можно решить одним из указанных ниже способов:
- Изменять и исправлять вручную пространственные объекты с проблемами геометрии. Некоторые проблемы, например непростую геометрию, нельзя устранить в редакторе.
- Запустив инструмент Восстановить геометрию (Repair Geometry) для класса пространственных объектов, обозначенных как имеющие проблемы геометрии.
-
Для точечных объектов применимы только проблемы геометрии Null.
-
Чтобы сделать более удобным просмотр пространственных объектов, обозначенных как имеющие проблемы геометрии, в программе ArcMap, можно присоединить входные объекты к выходной таблице с помощью инструмента Присоединить (Join). Просто выполните соединение по входному полю ObjectID и полю FEATURE_ID выходной таблицы. Кроме того, можно выключить параметр Сохранить все (Keep All), чтобы обеспечить отображение только пространственных объектов с проблемами геометрии.
В версиях программы 10.0 и более поздних геометрия линии больше не считается "самопересекающейся", если она пересекает саму себя. За этими типами геометрии не было замечено производимого неблагоприятного эффекта, поэтому инструмент Проверить геометрию (Check Geometry) больше не будет сообщать о таких пространственных объектах как об ошибке, а инструмент Восстановить геометрию (Repair Geometry) больше не будет выполнять "исправление" геометрии таких пространственных объектов. В предыдущих версиях программы (до версии 10.0) инструмент Восстановить геометрию (Repair Geometry) добавлял вершины в точках пересечения "самопересекающихся" линий. Если вам потребуется добавить вершины в случае самопересекающихся объектов линий, воспользуйтесь инструментом Интегрировать (Integrate).
Синтаксис
Параметр | Объяснение | Тип данных |
in_features [in_features,...] |
Один или несколько классов пространственных объектов или векторных слоев, которые могут содержать ошибки в геометрии. Допустимыми форматами являются шейп-файлы и классы объектов, хранящиеся в персональной или файловой базе геоданных. | Feature Layer |
out_table |
Таблица, в которую будет помещен список проблем, обнаруженных во входных объектах. | Table |
Пример кода
Пример скрипта для выполнения функции Проверить геометрию (CheckGeometry) с запуском из окна Python в мгновенном режиме.
import arcpy
arcpy.env.workspace = "c:/data/data.gdb"
arcpy.CheckGeometry_management (["contours", "roads", "vegetation"], "CG_Result")
Пример автономного скрипта, использующего функцию Check Geometry с запуском цикла по всем классам пространственных объектов в базе геоданных.
# BatchCheckGeometry.py
# Description:
# Loops through all the feature classes in a geodatabase, and generates
# a report of the problems encountered with feature geometry.
# Requirements: Python
# Import modules
import arcpy
# The workspace in which the feature classes will be checked
outTable = "C:/data/St_Lucia.gdb/checkGeometryResult"
arcpy.env.workspace = "C:/data/St_Lucia.gdb"
# A variable that will hold the list of all the feature classes
# inside the geodatabase
fcs = []
# List all feature classes in feature datasets
for fds in arcpy.ListDatasets("","featuredataset"):
fcs += arcpy.ListFeatureClasses("*","",fds)
# List all standalone feature classes
fcs = arcpy.ListFeatureClasses()
print "Running the check geometry tool on %i feature classes" % len(fcs)
arcpy.CheckGeometry_management(fcs, outTable)
print (str(arcpy.GetCount_management(outTable)) + " geometry problems were found.")
print ("See " + outTable + " for full details")