Таблица пересечений (Tabulate Intersection) (Анализ)
Резюме
Вычисляет пересечение между двумя классами пространственных объектов и создает кросс-таблицы, содержащие площади, длины или число пересекающихся объектов.
Рисунок
Использование
-
Зона включает в себя все объекты из Входных объектов зон (Input Zone Features), для которых совпадают значения опции Поля зоны (Zone Field(s)). Аналогично, класс включает в себя все объекты из списка Объекты входного класса (Input Class Features), для которых совпадают значения опции Поля класса (Class Field(s)). Объекты не обязательно должны граничить друг с другом, чтобы попасть в одну зону или класс. Этот инструмент рассчитывает, какая часть зоны пересекается каждым классом (включая площадь и процент площади зоны).
Если опция Поля класса (Class Field(s)) не задана, все объекты из списка Объектов входного класса (Input Class Features) будут считаться относящимися к одному классу. Выходная таблица (Output Table) будет содержать одну запись для этой зоны.
Если для опции Поля класса (Class Field(s)) указано значение, то Выходная таблица (Output Table) будет содержать n записей для каждой зоны, где n — число классов внутри этой зоны. Например, если зона содержит четыре класса, Выходная таблица (Output Table) будет содержать четыре записи для этой зоны.
Числовые атрибуты из списка Объекты входного класса (Input Class Features) могут суммироваться в пределах зоны с помощью параметра Поля суммирования (Sum Fields). Суммарные значения для класса представляют пропорцию суммарных значений на основе процента класса, пересекающего зону (подобно тому, как работает Правило пропорции (Ratio Policy)).
Внимание:В качестве Полей суммирования (Sum Fields) можно использовать только поля с абсолютными значениями (а не с относительными нормализованными значениями, как, например проценты или плотность), поскольку значения могут быть разделены и перераспределены по разным зонам.
Использование Объектов входного класса (Input Class Features) более высокой размерности, чем Входные объекты зоны (Input Zone Features) не поддерживается. Не поддерживаемые комбинации:
- Зона = точки, класс = полигоны или линии
- Зона = линии, класс = полигоны
Если Входные объекты зоны (Input Zone Features) и Объекты входного класса (Input Class Features) являются полигонами, статистика выходной таблицы будет основана на вычислении площади.
Если Объекты входного класса (Input Class Features) являются линиями, статистика выходной таблицы будет основана на линейных расчетах.
Если Объекты входного класса (Input Class Features) являются точками, статистика выходной таблицы будет основана на подсчете объектов.
Если Входные объекты зоны (Input Zone Features) и Объекты входного класса (Input Class Features) имеют одинаковое измерение (и те, и другие полигоны, линии или точки) выходное поле PERCENTAGE будет содержать процент объекта зоны, пересекаемого классом.
Если Входные объекты зоны (Input Zone Features) и Объекты входного класса (Input Class Features) имеют разные измерения (полигональная зона с линейным классом или линейная зона с точечным классом) выходное поле PERCENTAGE будет содержать процент класса, пересекающего полигон зоны.
Если во Входных объектах зоны (Input Zone Features) или Объектах входного класса (Input Class Features) имеются перекрывающиеся объекты, выходное поле PERCENTAGE может содержать значение, превышающее 100 процентов.
Выходная таблица содержит поле AREA, только если Входные объекты зоны (Input Zone Features) и Объекты входного класса (Input Class Features) являются полигонами. Поле AREA содержит площадь Входных объектов зоны (Input Zone Features), которую пересекают Объекты входного класса (Input Class Features).
Выходная таблица содержит поле LENGTH, если Объекты входного класса (Input Class Features) являются линиями. Поле LENGTH содержит длину пересечения между Входными объектами зоны (Input Zone Features) и Объектами входного класса (Input Class Features).
Выходная таблица содержит поле PNT_COUNT, если Объекты входного класса (Input Class Features) являются точками. Поле PNT содержит количество точек Объектов входного класса (Input Zone Features), которые пересекают Входные объекты зоны (Input Zone Features).
При использовании слоев пространственных объектов, если выбраны какие-либо объекты, только они будут использоваться в вычислениях.
Для определения пересечения зоны с объектами класса используются те же правила, что и при работе с инструментом Пересечение (Intersect).
Используйте инструмент Сводная таблица (Pivot Table) для преобразования Выходной таблицы (Output Table) в таблицу, содержащую одну запись для каждой зоны, в атрибутивных полях которой по отдельности хранятся атрибуты классов. Заполните параметры инструмента Сводная таблица (Pivot Table) следующим образом:
- Входная таблица (Input Table) — Таблица пересечений (Tabulate Intersection) Выходная таблица (Output Table)
- Входные поля (Input Field(s)) — Таблица пересечений (Tabulate Intersection) Поля зоны (Zone Field(s))
- Поле столбцов (Pivot Field) — Таблица пересечений (Tabulate Intersection) Поле класса (Class Field)
- Поле значений (Value Field) — Таблица пересечений (Tabulate Intersection) Поле суммирования (Sum Field) или AREA, LENGTH, PERCENTAGE
Синтаксис
Параметр | Объяснение | Тип данных |
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,...] (дополнительно) |
Суммируемые поля из Объектов входного класса (Input Class Features). | Field |
xy_tolerance (дополнительно) |
Расстояние, определяющее диапазон, в котором объекты или их вершины считаются совпадающими. По умолчанию это расстояние равно значению Допуск XY (XY Tolerance) Входных объектов зоны (Input Zone Features). | Linear Unit |
out_units (дополнительно) |
Единицы измерения, в которых вычисляется площадь или длина. Настройка Выходных единиц (Output Units) не поддерживается, если Объекты входного класса (Input Class Features) являются точками. | String |
Пример кода
Использовании функции Таблица пересечений в окне Python для определения площади, занимаемой каждым типом растительности в каждой зоне.
arcpy.TabulateIntersection_analysis("Zones","zone_id","Vegetation",r"C:\Esri\veganalysis.gdb\vegtypeAreas","VEGTYPE")
Скрипт для запуска функции Таблица пересечений, позволяющий создать простой инструмент-скрипт TabulateArea. Инструмент скрипта TabulateArea принимает на входе только полигональные объекты.
В полях Зона (Zone) и Класс (Class) можно ввести только по одному значению.
'''
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, sys, 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)