Сводка
Вычисляет пересечение между двумя классами пространственных объектов и создает кросс-таблицы, содержащие площади, длины или число пересекающихся объектов.
Иллюстрация
Использование
Зона включает в себя все объекты из Входных объектов зон, для которых совпадают значения в Полях зоны. Аналогично, класс включает в себя все объекты из списка Объекты входного класса, для которых совпадают значения в Полях класса. Объекты не обязательно должны граничить друг с другом, чтобы попасть в одну зону или класс. Этот инструмент рассчитывает, какая часть зоны пересекается каждым классом (включая площадь и процент площади зоны).
Если значение Поля класса не задано, все объекты из списка Объектов входного класса будут считаться относящимися к одному классу. Выходная таблица будет содержать одну запись для этой зоны.
Если значение Поля класса задано, то Выходная таблица будет содержать n записей для каждой зоны, где n – число классов внутри этой зоны. Например, если зона содержит четыре класса, Выходная таблица будет содержать четыре записи для этой зоны.
Числовые атрибуты из списка Объекты входного класса могут суммироваться в пределах зоны с помощью параметра Поля суммирования. Суммарные значения для класса представляют пропорцию суммарных значений на основе процента класса, пересекающего зону.
Внимание:
Используйте в качестве Полей суммирования поля с абсолютными значениями (а не с относительными нормализованными значениями, как, например проценты или плотность), поскольку значения могут быть разделены и перераспределены по разным зонам.
Использование Объектов входного класса более высокой размерности, чем Входные объекты зоны не поддерживается.
- Если Входные объекты зон являются точками, Входные объекты классов не могут быть полигонами или линиями.
- Если Входные объекты зон являются Линиями, Входные объекты классов не могут быть полигонами.
Если Входные объекты зоны и Объекты входного класса являются полигонами, статистика выходной таблицы будет основана на вычислении площади.
Если Объекты входного класса являются линиями, статистика выходной таблицы будет основана на линейных расчетах.
Если Объекты входного класса являются точками, статистика выходной таблицы будет основана на подсчете объектов.
Если Входные объекты зоны и Объекты входного класса имеют одинаковое измерение (и те, и другие полигоны, линии или точки) выходное поле PERCENTAGE будет содержать процент объекта зоны, пересекаемого классом.
Если Входные объекты зоны и Объекты входного класса имеют разные измерения (полигональная зона с линейным классом или линейная зона с точечным классом), выходное поле PERCENTAGE будет содержать процент класса, пересекающего полигон зоны.
В поле PERCENTAGE можно записать процентное значение, превышающее 100, если имеются перекрывающиеся объекты во Входных объектах зоны или Входных объектах класса.
Выходная таблица содержит поле AREA, только если Входные объекты зоны и Входные объекты класса являются полигонами. Поле AREA содержит площадь Входных объектов зоны, которую пересекают Входные объекты класса.
Выходная таблица содержит поле LENGTH, если Входные объекты класса являются линиями. Поле LENGTH содержит длину пересечения между Входными объектами зоны и Входными объектами класса.
Выходная таблица содержит поле PNT_COUNT, если Входные объекты класса являются точками. Поле PNT_COUNT содержит количество точек Входных объектов класса, которые пересекают Входные объекты зоны.
Если в векторных слоях выбраны какие-либо объекты, то только они будут использоваться в вычислениях.
Для определения пересечения зоны с объектами класса используются те же правила, что и при работе с инструментом Пересечение.
Используйте инструмент Сводная таблица для преобразования Выходной таблицы в таблицу, содержащую одну запись для каждой зоны, в атрибутивных полях которой по отдельности хранятся атрибуты классов. Заполните параметры инструмента Сводная таблица следующим образом:
- Входная таблица – Таблица пересечений Выходная таблица
- Входные поля – Таблица пересечений Поля зоны
- Поле столбцов – Таблица пересечений Поля класса
- Поле значений – Таблица пересечений Поле суммирования или AREA, LENGTH, PERCENTAGE
Синтаксис
arcpy.analysis.TabulateIntersection(in_zone_features, zone_fields, in_class_features, out_table, {class_fields}, {sum_fields}, {xy_tolerance}, {out_units})
Parameter | Объяснение | Тип данных |
in_zone_features | Объекты, используемые для определения зон. | Feature Layer |
zone_fields [zone_fields,...] | Атрибутивное поле или поля, которые будут использованы для определения зон. | Field |
in_class_features | Объекты, используемые для идентификации классов. | Feature Layer |
out_table | Таблица, содержащая кросс-таблицу пересечений между зонами и классами. | Table |
class_fields [class_fields,...] (Дополнительный) | Атрибутивное поле или поля, используемые для определения классов. | Field |
sum_fields [sum_fields,...] (Дополнительный) | Суммируемые поля из Объектов входного класса. | Field |
xy_tolerance (Дополнительный) | Расстояние, определяющее диапазон, в котором объекты или их вершины считаются совпадающими. По умолчанию это расстояние равно значению Допуска XY Входных объектов зоны. Внимание:Изменение значения этого параметра может привести к сбою или неожиданным результатам. Рекомендуется не изменять этот параметр. Он был удален из поля зрения в диалоговом окне инструмента. По умолчанию используется свойство пространственной привязки допуск x,y входного класса пространственных объектов. | Linear Unit |
out_units (Дополнительный) | Единицы измерения, в которых вычисляется площадь или длина. Настройка выходных единиц не поддерживается, если объекты входного класса являются точками.
| String |
Пример кода
Используйте TabulateIntersection в окне Python для определения площади, занимаемой каждым типом растительности в каждой зоне.
import arcpy
arcpy.TabulateIntersection_analysis("Zones", "zone_id", "Vegetation",
r"C:\Esri\veganalysis.gdb\vegtypeAreas",
"VEGTYPE")
Этот скрипт запускает функцию TabulateIntersection, позволяющую создать простой инструмент-скрипт TabulateArea. Инструмент скрипта TabulateArea принимает на входе только полигональные объекты.
В полях Зона и Класс можно ввести только по одному значению.
'''
TabulateArea.py
Description: Shows how to wrap the TabulateIntersection tool to create a TabulateArea script tool
Requirements: Polygon Zone Feature Class, Polygon Class Feature Class
'''
import arcpy
import sys
import os
def AddMsgAndPrint(msg, severity=0):
# Adds a Message (in case this is run as a tool)
# and also prints the message to the screen (standard output)
#
print(msg)
# Split the message on \n first, so that if it's multiple lines,
# a GPMessage will be added for each line
try:
for string in msg.split('\n'):
# Add appropriate geoprocessing message
#
if severity == 0:
arcpy.AddMessage(string)
elif severity == 1:
arcpy.AddWarning(string)
elif severity == 2:
arcpy.AddError(string)
except:
pass
## Get Parameters
zoneFC = arcpy.GetParameterAsText(0)
zoneFld = arcpy.GetParameterAsText(1) # Only allow one field
classFC = arcpy.GetParameterAsText(2)
outTab = arcpy.GetParameterAsText(3)
classFld = arcpy.GetParameterAsText(4) # Optional and only allow one field
sum_Fields = ""
xy_tol = ""
outUnits = arcpy.GetParameterAsText(5)
## Validate parameters
# Inputs can only be polygons
zoneDesc = arcpy.Describe(zoneFC)
classDesc = arcpy.Describe(classFC)
if zoneDesc.shapeType != "Polygon" or classDesc.shapeType != "Polygon":
AddMsgAndPrint("Inputs must be of type polygon.", 2)
sys.exit()
# Only one zone field and class field
if zoneFld != "":
if zoneFld.find(";") > -1 or classFld.find(";") > -1:
AddMsgAndPrint("A maximum of one zone and/or class field is allowed.", 2)
sys.exit()
## Run TI with restricted parameters
try:
arcpy.TabulateIntersection_analysis(zoneFC, zoneFld, classFC, outTab,
classFld, sum_Fields, xy_tol, outUnits)
except:
arcpy.AddMessage("Tabulate Intersection Failed.")
AddMsgAndPrint(arcpy.GetMessages(), 0)
Environments
Информация о лицензиях
- Basic: Нет
- Standard: Нет
- Advanced: Да