Краткая информация
Сравнивает два класса пространственных объектов или слоя. Инструмент Сравнить пространственные объекты позволяет выявить отличия в типе геометрии, табличных значениях, пространственной привязке и атрибутивных полях.
Использование
Этот инструмент выдает сообщение с результатами сравнения. По умолчанию этот инструмент завершает работу и выдает результат после обнаружения первого несоответствия при сравнении. Чтобы получить информацию о всех различиях, отметьте параметр Продолжить сравнение.
Могут быть определены несколько полей для сортировки. Сортируется первое поле, затем второе, и т.д. в порядке возрастания. Сортировка по общему и для Исходных объектов и для Тестовых объектов полю обеспечивает проверку идентичных строк в входных наборах данных.
По умолчанию установлен тип сравнения Все (ALL в Python). Это означает, что будут сравниваться все свойства проверяемых пространственных объектов, включая, например, пространственную привязку, свойства поля, атрибуты и геометрию. Однако, вы можете выбрать другую опцию, чтобы сравнить только конкретные свойства сопоставляемых пространственных объектов.
Параметр Игнорировать опции позволяет исключить такие свойства, как атрибуты измерения, z атрибуты, атрибуты идентификаторов точек и дополнительные свойства. Два класса пространственных объектов могут быть идентичными, но один имеет измерения и координаты по z, а другой – нет. Вы можете игнорировать эти свойства при сравнении. Опция Не сравнивать свойства расширения (IGNORE_EXTENSION_PROPERTIES в Python) обращается к дополнительной информации, добавленной к классу пространственных объектов или таблице. Например, пространственные объекты двух классов объектов аннотаций могут быть идентичными, но классы пространственных объектов могут иметь различные дополнительные свойства, например, разные символы в наборе символов и разное поведение при редактировании.
По умолчанию для допуска XY используется значение допуска в свойствах Исходные объекты. Для минимизации ошибок выбранное вами значение допуска сравнения должно быть настолько мало, насколько это возможно. Если введен 0 в качестве Допуска XY, выполняется точное сопоставление.
Допуск M по умолчанию и Допуск Z по умолчанию определяется соответствующими установками для Исходных объектов. При этом используются те же единицы что и у Исходных объектов. Если вы вводите 0 для допуска M и Z, то будет выполнено точное сопоставление.
Если выбран тип сравнения Только геометрия (GEOMETRY_ONLY в Python), пространственные привязки должны совпадать. Если пространственные привязки отличаются, появится сообщение о несовпадении. Если входные системы координат отличаются, объекты не будут совпадать. Данный инструмент не проецирует на лету.
Параметр Пропустить поля – это перечень полей, которые не будут включены в сравнение пересчета полей, определения этих полей и табличные значения игнорируются.
Атрибутивные допуски могут быть определены только для числовых типов полей.
Выходной файл сравнения будет содержать все сходства и различия между Исходными объектами и Тестовыми объектами. Этот файл – текстовый файл с запятой в качестве разделителя, который можно просмотреть и использовать как таблицу в ArcGIS. Например, эта таблица может требоваться для получения значений ObjectID для всех строк, которые различаются. Поле «has_error» указывает, что запись содержит ошибку. True указывает, что есть различие.
Одним из первых сравниваем число объектов. Если число пространственных объектов отличается, а параметру Продолжить сравнение присвоено значение TRUE, последующие сообщения о сравнении могут некорректно отображать дополнительные различия между Исходными объектами и Тестовыми объектами. Это происходит потому, что инструменту Сравнить пространственные объекты не удается определить, какие объекты добавлены в Тестовые объекты, а какие объекты удалены из них, поэтому он просто переходит на следующую строку в каждой таблице атрибутов. В той позиции в таблице атрибутов, где объект был добавлен или удален, инструмент переходит на следующую строку и сравнивает базовый объект с некорректным тестовым объектом, потому что корректный объект во Входных базовых данных был удален или объект был добавлен до этого.
При использовании этого инструмента в Python вы можете получить статус инструмента, используя синтаксис result.getOutput(1). Значение будет равно 'true', если не было найдено различий, и 'false' – если различия были обнаружены.
Дополнительные сведения об использовании инструментов в Python
Синтаксис
FeatureCompare_management (in_base_features, in_test_features, sort_field, {compare_type}, {ignore_options}, {xy_tolerance}, {m_tolerance}, {z_tolerance}, {attribute_tolerances}, {omit_field}, {continue_compare}, {out_compare_file})
Параметр | Объяснение | Тип данных |
in_base_features | Исходные объекты сравниваются с Тестовыми объектами. Исходные объекты соответствуют данным, которые считаются корректными. Они имеют корректную геометрию, поля и пространственную привязку. | Feature Layer |
in_test_features | Тестовые объекты сопоставляются с Исходными объектами. Тестовые объекты соответствуют данным, в которые внесены изменения при редактировании или компиляции новых объектов. | Feature Layer |
sort_field [sort_field,...] | Одно или несколько полей, используемые для сортировки записей в Исходной таблице и Тестовой таблице. Записи сортируются по возрастанию. Сортировка по общему и для Исходных объектов и для Тестовых объектов полю обеспечивает проверку идентичных строк в входных наборах данных. | Value Table |
compare_type (Дополнительный) | Тип сравнения. По умолчанию выбран Все, в этом случае сравниваются все свойства сопоставляемых пространственных объектов.
| String |
ignore_options [ignore_option,...] (Дополнительный) | Эти свойства не будут сравниваться.
| String |
xy_tolerance (Дополнительный) | Расстояние, в пределах которого объекты будут считаться идентичными. Для минимизации ошибок выбранное вами значение допуска сравнения должно быть настолько мало, насколько это возможно. По умолчанию, в качестве этого параметра устанавливается допуск XY исходных объектов. | Linear unit |
m_tolerance (Дополнительный) | Минимальное расстояние между измерениями. На меньшем расстоянии измерения будут считаться идентичными. | Double |
z_tolerance (Дополнительный) | Допуск Z – это минимальное расстояние между координатами Z, до того, как они будут считаться равными. | Double |
attribute_tolerances [[Field, {Tolerance}],...] (Дополнительный) | Диапазон, в котором значения будут считаться идентичными. Используется только для числовых полей. | Value Table |
omit_field [omit_field,...] (Дополнительный) | Одно или несколько полей, которые будут пропущены в процессе сравнения. Свойства и значения данных полей будут проигнорированы. | String |
continue_compare (Дополнительный) | Определяет необходимость продолжения сравнения после обнаружения первого несовпадения.
| Boolean |
out_compare_file (Дополнительный) | Данный файл будет хранить информацию обо всех совпадениях и отличиях исходных и текстовых объектов. Это текстовый файл с запятой в качестве разделителя, который можно просмотреть и использовать как таблицу в ArcGIS. | File |
Пример кода
FeatureCompare, пример (окно Python)
Пример скрипта Python для выполнения функции Feature Compare с запуском из окна Python в ArcGIS.
import arcpy
arcpy.FeatureCompare_management(r'C:/Workspace/baseroads.shp', r'C:/Workspace/newroads.shp', 'ROAD_ID', 'ALL', 'IGNORE_M;IGNORE_Z', '0.001 METERS', 0, 0, 'Shape_Length 0.001', '#', 'CONTINUE_COMPARE', r'C:/Workspace/roadcompare.txt')
FeatureCompare, пример (автономный скрипт)
Пример использования инструмента Feature Compare в автономном скрипте.
# Name: FeatureCompare.py
# Description: Compare two feature classes and return comparison result.
# import system modules
import arcpy
try:
# Set local variables
base_features = "C:/Workspace/baseroads.shp"
test_features = "C:/Workspace/newroads.shp"
sort_field = "ROAD_ID"
compare_type = "ALL"
ignore_option = "IGNORE_M;IGNORE_Z"
xy_tolerance = "0.001 METERS"
m_tolerance = 0
z_tolerance = 0
attribute_tolerance = "Shape_Length 0.001"
omit_field = "#"
continue_compare = "CONTINUE_COMPARE"
compare_file = "C:/Workspace/roadcompare.txt"
# Process: FeatureCompare
compare_result = arcpy.FeatureCompare_management(base_features, test_features, sort_field, compare_type, ignore_option, xy_tolerance, m_tolerance, z_tolerance, attribute_tolerance, omit_field, continue_compare, compare_file)
print(compare_result.getOutput(1))
print(arcpy.GetMessages())
except Exception as err:
print(err.args[0])
Параметры среды
Этот инструмент не использует параметры среды геообработки
Информация о лицензиях
- ArcGIS Desktop Basic: Да
- ArcGIS Desktop Standard: Да
- ArcGIS Desktop Advanced: Да