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

Сводка

Генерирует отчет об ошибках геометрии в классе пространственных объектов.

Дополнительную информацию об ошибках геометрии, их причинах и влиянии на работу программного обеспечения см. в разделе Проверка и восстановление геометрии.

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

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

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

  • Выходная таблица будет содержать записи по каждой обнаруженной ошибке геометрии. Если ошибки не найдены, таблица будет пустой.

  • Содержимое Выходной таблицы, включая коды PROBLEM, приведено на английском языке.

  • Для точечных объектов применима только ошибка нулевой геометрии.

  • Чтобы сделать более удобным просмотр пространственных объектов, обозначенных как имеющие проблемы геометрии, можно присоединить Входные объекты к Выходной таблице с помощью инструмента Добавить соединение, указав входное поле OBJECTID или FID и поле выходной таблицы FEATURE_ID.

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

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

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

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

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

    • Вручную отредактировать и исправить пространственный объект с ошибками геометрии. Некоторые ошибки нельзя устранить редактированием.
    • Использовать инструмент Восстановить геометрию. Некоторые проблемы, связанные с данными, хранящимися в многопользовательской базе данных, не могут быть устранены с помощью инструментов ArcGIS.
  • Выходная таблица содержит следующие поля:

    • 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 – одна из частей геометрии состоит из разрозненных или дискретных частей.
    • Empty Z values – в геометрии есть одна или несколько вершин с пустым z-значением (например, NaN).
    • Bad envelope – конверт не соответствует координатному экстенту геометрии.
    • Bad dataset extent – свойство экстента для набора данных не содержит все объекты набора данных. Для этой проблемы значение параметра FEATURE_ID будет равно -1.

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

    • 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 – полигональная оболочка содержит вертикальную линию.
    • SE_OUTER_SHELLS_OVERLAP – составная область содержит перекрывающиеся части.
    • SE_SELF_INTERSECTING – линия или граница полигона являются самопересекающимися.

Синтаксис

arcpy.management.CheckGeometry(in_features, out_table, {validation_method})
ParameterОбъяснениеТип данных
in_features
[in_feature,...]

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

Feature Layer
out_table

Отчет (в виде таблицы) о найденных проблемах.

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

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

  • ESRIБудет применен метод проверки геометрии Esri. Это значение по умолчанию.
  • OGC Будет применен метод проверки геометрии Open Geospatial Consortium (OGC).
String

Пример кода

CheckGeometry, пример 1 (окно Python)

В следующем окне скрипта Python показано, как используется функция CheckGeometry в режиме прямого запуска в файловой базе геоданных.

import arcpy
arcpy.env.workspace = "c:/data/data.gdb"
arcpy.CheckGeometry_management(["contours", "roads", "vegetation"], "CheckGeom_Result")
CheckGeometry, пример 2 (автономный скрипт)

Следующий автономный скрипт использует функцию CheckGeometry путем перебора всех классов пространственных объектов в файловой базе геоданных.

# BatchCheckGeometry.py
# Description: Loops through all the feature classes in a geodatabase, and 
#              generates a report of the problems encountered with feature 
#              geometry.
# Import modules
import arcpy
import os
# The geodatabase in which the feature classes will be checked
arcpy.env.workspace = "C:\\data\\St_Lucia.gdb"
out_table = "checkGeometryResult"
 
# A variable that will hold the list of all the feature classes 
# inside the geodatabase
fc_list = []
# Identify all feature classes in the geodatabase
for path, dirnames, fcs in arcpy.da.Walk(arcpy.env.workspace, 
                                         datatype='FeatureClass'):
    for fc in fcs:
        fc_list.append(os.path.join(path, fc))
        
print("Running the check geometry tool on {} feature classes".format(
    len(fc_list)))
arcpy.CheckGeometry_management(fc_list, out_table)
print("{} geometry problems found, see {} for details.".format(
    arcpy.GetCount_management(out_table)[0], out_table))

Информация о лицензиях

  • Basic: Да
  • Standard: Да
  • Advanced: Да

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