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

Краткая информация

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

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

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

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

    • Microsoft SQL Server — Geometry и Geography
    • PostgreSQLPostGIS, Geometry и Geography
    • Oracle — SDO_Geometry
    • SAP HANA — ST_Geometry

    Лицензия:

    Лицензия Desktop Basic позволяет применять этот инструмент только к шейп-файлам и классам объектов, хранящимся в файловой базе геоданных, в GeoPackage или базе данных SpatiaLite. Лицензия Desktop Standard или Desktop Advanced позволяет вам дополнительно применять этот инструмент к классам пространственных объектов, хранящимся в многопользовательской базе данных или многопользовательской базе геоданных.

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

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

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

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

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

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

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

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

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

  • Геометрия, проверенная или восстановленная при помощи опции OGC, будет допустима для опции Esri. Более подробно об обоих методах см. Что такое простой полигон.

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

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

    • CLASS – полный путь и название класса объектов, в котором найдена ошибка.
    • FEATURE_ID– Feature ID (FID) или Object ID (OID) объекта с ошибкой геометрии.
    • TEXT_ID– это поле существует, только если значения Входные объекты хранятся в многопользовательской базе данных, многопользовательской базе геоданных, GeoPackage или базе данных SpatiaLite.
    • 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 – линия или граница полигона являются самопересекающимися.

Параметры

ПодписьОписаниеТип данных
Входные объекты

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

Лицензия:

Лицензия Desktop Basic разрешает в качестве допустимых форматов входных объектов только шейп-файлы и классы объектов, хранящиеся в файловой базе геоданных, в GeoPackage или базе данных SpatiaLite. Лицензия Desktop Standard или Desktop Advanced также позволяет использовать в качестве допустимых форматов входных объектов классы объектов, хранящиеся в многопользовательской базе данных или многопользовательской базе геоданных.

Feature Layer
Выходная таблица
(Дополнительный)

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

Table
Метод проверки
(Дополнительный)

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

  • EsriБудет использоваться метод проверки геометрии Esri. Это значение по умолчанию
  • OGCБудет использоваться метод проверки геометрии OGC.
String

Производные выходные данные

ПодписьОписаниеТип данных
Содержит Ошибки геометрии

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

Boolean

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

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

Лицензия:

Лицензия Desktop Basic разрешает в качестве допустимых форматов входных объектов только шейп-файлы и классы объектов, хранящиеся в файловой базе геоданных, в GeoPackage или базе данных SpatiaLite. Лицензия Desktop Standard или Desktop Advanced также позволяет использовать в качестве допустимых форматов входных объектов классы объектов, хранящиеся в многопользовательской базе данных или многопользовательской базе геоданных.

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

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

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

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

  • ESRIБудет использоваться метод проверки геометрии Esri. Это значение по умолчанию
  • OGCБудет использоваться метод проверки геометрии OGC.
String

Производные выходные данные

ИмяОписаниеТип данных
problems_found

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

Boolean

Пример кода

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

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


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

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

# BatchCheckGeometry.py
# Description: Loop through all the feature classes in a geodatabase, and 
#              generate 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 
# in 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.management.CheckGeometry(fc_list, out_table)

print("{} geometry problems found, see {} for details.".format(
    arcpy.management.GetCount(out_table)[0], out_table))
CheckGeometry, пример 3 (автономный скрипт)

Следующий скрипт использует функцию CheckGeometry и проверяет полученный результат, чтобы определить, были ли найдены какие-либо проблемы


import arcpy

result = arcpy.management.CheckGeometry('c:/data/data.gdb/badgeometryfc')
if result[1] == 'true':
    # Geometry problems found, print the tool messages.
    print(result.getMessages())

else:
    # No problems found
    print("No problems Found")

Параметры среды

Особые случаи

Коэффициент параллельной обработки

Если параметр среды не задан (используется значение по умолчанию) или указан как 0, параллельная обработка будет отключена. Если параметр среды установлен на 100, инструмент будет пытаться задействовать все логические ядра процессора компьютера. Присвоение коэффициенту значения от 1 до 99 приведет к тому, что инструмент определит процент логических ядер для использования по формуле (Коэффициент параллельной обработки / 100 * Логические ядра), округлив результат до ближайшего целого значения. Если результат равен 0 или 1, параллельная обработка не будет включена.

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