Таблица площадей (Spatial Analyst)
Краткая информация
Вычисляет перекрестную таблицу площадей между двумя наборами данных и выдает таблицу.
Рисунок
![]() |
TabulateArea(ZoneRas, "ЗНАЧЕНИЕ", ClassRas, "ЗНАЧЕНИЕ", Tabarea1.dbf, 1) |
Использование
-
Зона определяется как все области входных данных, имеющие одно значение. Области не обязательно должны быть непрерывными. Наборы растровых данных и наборы классов объектов могут использоваться для входных данных зоны.
-
Если входные данные и для зон, и для классов представлены растрами с одинаковым разрешением, они будут использованы напрямую.
Если разрешения растров отличаются, до выполнения зональной операции для приведения растров в соответствие друг другу применяется внутренний пересчет.
-
Если входные данные зон представлены набором растровых данных, он должен иметь таблицу атрибутов. Таблица атрибутов обычно создается для целочисленных растров автоматически, но при определенных обстоятельствах этого может не произойти. Для создания можно использовать средство Построить таблицу атрибутов растра.
-
Если входные данные зоны представлены набором классов объектов, к нему будет внутренне применено преобразование "вектор в растр".
Чтобы убедиться, что результаты преобразования будут корректно совмещены с входными растровыми данными классов, рекомендуется проверить, заданы ли в параметрах среды и в параметрах анализа растров корректные параметры экстента и привязки растра.
При указании входной зоны или данных класса полем по умолчанию будет первое доступное и допустимое поле. Если других допустимых полей нет, по умолчанию используется поле ObjectID (например, OID или FID).
Если для Поля зоны (Zone field) выбрано зарезервированное поле (например, OBECTID, FID или OID), это может привести к неоднозначному результату. Результат содержит имя определенного зарезервированного поля, необходимое для конкретного типа выходного формата, а также заданное Поле зоны (Zone field). Если имя указанного поля такое же, как у зарезервированного поля для конкретного выходного формата, имя поля зоны в выходных данных будет изменено таким образом, чтобы все имена полей в результате были уникальными.
Примечание:
Чтобы получить поле уникальных значений, которое не имеет зарезервированного имени, используйте инструменты геообработки Добавить поле (Add Field) и Вычислить поле (Calculate Field).
-
Если входные данные классов представлены набором векторных данных, к ним будет внутренне применено преобразование "вектор в растр". Условия, приведенные в предыдущем совете для входных векторных данных зон, также применимы и для входных векторных данных классов.
-
В целом, рекомендуется использовать растры только в качестве входных данных зоны и класса. Если входными данными является объект, сначала конвертируйте его в растры с помощью инструментов конвертации В растр (To Raster). Это обеспечивает больший контроль за выполнением преобразований «вектор в растр», позволяя достичь постоянных, ожидаемых результатов.
-
Если в качестве данных классов используется точечный или линейный набор данных, в итоговую таблицу будут включены площади областей, пересекаемых этими объектами.
-
Выходными данными инструмента Таблица площадей (Tabulate Area) является таблица.
В этой таблице
- Содержится запись о каждом уникальном значении в наборе данных зоны.
- Содержится поле для каждого уникального значения в наборе данных класса.
- Каждая запись будет хранить площадь каждого класса в пределах каждой зоны.
-
Обратитесь к статье Работа с инструментом Таблица площадей (Tabulate Area) для конкретного выбранного формата выходного растра, а также предложений по работе с ними.
Синтаксис
Параметр | Объяснение | Тип данных |
in_zone_data |
Набор данных, который определяет зоны. Зоны могут быть определены слоем целочисленного растра или векторным слоем. | Raster Layer | Feature Layer |
zone_field | Поле, в котором содержатся значения, определяющие каждую зону. Это может быть целочисленное или строковое поле набора данных зоны. | Field |
in_class_data |
Набор данных, определяющий классы, для которых вычисляется суммарная площадь внутри каждой зоны. Входные данные классов могут быть представлены слоем целочисленного растра или векторным слоем. | Raster Layer | Feature Layer |
class_field |
Поле, содержащее значения классов. Поле может быть представлено целочисленным или строковым полем входных данных классов. | Field |
out_table |
Выходная таблица, которая будет содержать итоговые суммарные значения площадей каждого класса в пределах каждой зоны. Формат таблицы определяется выходным местоположением и путем к ней. Если расширение не указано, это будет таблица INFO. Если в качестве местоположения задана база геоданных, будет создана выходная таблица соответствующего типа (например, таблица файловой или базы геоданных ArcSDE). Если имя имеет расширение .dbf, выходные данные будут записаны в формате dBASE. | Table |
processing_cell_size (дополнительно) |
Размер обрабатываемой ячейки для выполнения зональной операции. Значение, устанавливаемое в параметрах среды. Если не заданы параметры среды, значение по умолчанию для размера ячейки определяется по типу данных зоны, как показано ниже:
| Analysis Cell Size |
Пример кода
В этом примере выдаётся таблица с областью каждого значения класса, которые содержатся в каждой зоне.
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
TabulateArea("zonedata.shp", "IDStr", "valueraster", "VALUE",
"C:/sapyexamples/output/areatable.dbf", 2)
В этом примере выдаётся таблица с областью каждого значения класса, которые содержатся в каждой зоне.
# Name: TabulateArea_Ex_02.py
# Description: Calculates cross tabulated areas between two datasets.
# Requirements: Spatial Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
env.extent = "classgrid"
env.snapRaster = "classgrid"
# Set local variables
inZoneData = "zonedata.shp"
zoneField = "IDStr"
inClassData = "valueraster"
classField = "VALUE"
outTable = "C:/sapyexamples/output/areatable02.dbf"
processingCellSize = 2
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute TabulateArea
TabulateArea(inZoneData, zoneField, inClassData, classField, outTable,
processingCellSize)