Зональная статистика в таблицу (Zonal Statistics as Table) (Spatial Analyst)
Резюме
Резюмирует значения растра в пределах зон другого набора данных и записывает результаты в таблицу.
Более подробно о том, как работает инструмент Зональная статистика
Рисунок
Использование
-
Зона определяется как все области входных данных, имеющие одно значение. Области не обязательно должны быть непрерывными. Наборы растровых данных и наборы классов объектов могут использоваться для входных данных зоны.
Когда и входные данные зон, и входные данные значений представлены растрами с одинаковым разрешением, они будут использованы напрямую.
Если разрешения растров отличаются, до выполнения зональной операции для приведения растров в соответствие друг другу применяется внутренняя передискретизация.
Если во входных данных есть ячейки с значением NoData, передискретизация может привести к тому, что в выходных данных участки с значением NoData могут быть больше, чем вы ожидаете. Чтобы избежать этой ситуации, следует Изменить разрешение (Resample) более грубого входного растра до разрешения более мелкого входного растра, или присвоить Размеру ячейки (Cell size) значение Минимальный из всех входных (Minimum Of Inputs) в среде анализа растра.
Если входные данные зон представлены набором растровых данных, он должен иметь таблицу атрибутов. Таблица атрибутов обычно создается для целочисленных растров автоматически, но при определенных обстоятельствах этого может не произойти. Для создания можно использовать средство Построить таблицу атрибутов растра.
Если входные данные зон представлены набором векторных данных, к нему будет внутренне применено преобразование «вектор в растр». Чтобы убедиться, что результаты преобразования будут корректно совмещены с входными растровыми данными классов, рекомендуется проверить, заданы ли в параметрах среды и в параметрах анализа растров корректные параметры экстента и привязки растра.
Поскольку внутренний растр должен иметь таблицу атрибутов, будет выдано сообщение об ошибке, если в процессе преобразования таковой создано не было. Если это произошло, преобразуйте набор классов объектов непосредственно в Объекты в растр (Feature To Raster), Полигон в растр (Polygon To Raster), Точки в растр (Point To Raster) или Полилинии в растр (Polyline To Raster). Создайте таблицу атрибутов для него, как описано в предыдущей подсказке, и используйте результирующий растр как входные данные Зоны (Zone).
Если входные данные зоны являются набором классов объектов со сравнительно небольшими пространственными объектами, помните, что разрешение информации, необходимой для соответствия сходно с разрешением растра значения. Если площади автономных пространственных объектов такие же или меньше, чем площадь автономных ячеек в растре значения, при преобразовании пространственного объекта в растр некоторые из этих зон могут быть не представлены.
Чтобы убедиться в этом, попробуйте преобразовать набор классов объектов в растр с помощью соответствующего инструмента конвертации объекта в растр и задайте такое же разрешение, как у растра Value. Результат этого преобразования укажет на то, какими будут выходные данные зональной операции по умолчанию.
Если результаты в выходных данных меньше, чем вы ожидали, вам необходимо определить соответствующее разрешение растра, которое будет представлять детали входных пространственных объектов. Используйте это разрешение как Размер ячейки (Cell Size) параметров среды растрового анализа.
Если входные данные зон представлены набором точечных данных, возможно, что в каждую конкретную ячейку входного растра значений попадет больше одной точки. Для таких ячеек, значение зоны определяется точкой с наибольшим идентификатором объекта ID.
Если входные векторные данные зон имеют перекрывающиеся полигоны, зональный анализ не будет выполняться для каждого индивидуального полигона. Поскольку векторные входные данные конвертируются в растр, каждое местоположение может иметь только одно значение.
Альтернативный метод заключается в обработке зональной статистики итеративно для каждой из полигональных зон с последующим сопоставлением результатов.
В качестве входных данных зон рекомендуется использовать только растры, поскольку это обеспечивает больший контроль за выполнением преобразований «вектор в растр». Соответственно, это позволит вам получить ожидаемые результаты.
При указании данных входной зоны полем зоны по умолчанию будет первое доступное и допустимое поле. Если других допустимых полей нет, по умолчанию используется поле ObjectID (например, OID или FID).
Если для Поля зоны (Zone field) выбрано зарезервированное поле (например, OBECTID, FID или OID), это может привести к неоднозначному результату. Результат содержит имя определенного зарезервированного поля, необходимое для конкретного типа выходного формата, а также заданное Поле зоны (Zone field). Если имя указанного поля такое же, как у зарезервированного поля для конкретного выходного формата, имя поля зоны в выходных данных будет изменено таким образом, чтобы все имена полей в результате были уникальными.
Примечание:Чтобы получить поле уникальных значений, которое не имеет зарезервированного имени, используйте инструменты геообработки Добавить поле (Add Field) и Вычислить поле (Calculate Field).
Входной растр значений может быть либо целочисленным, либо может быть представлен значениями с плавающей точкой. Однако, если тип данных - числа с плавающей точкой, не будут вычислены такие зональные характеристики, как большинство, медиана, меньшинство и разнообразие.
Для вычислений большинства и меньшинства, если есть привязка, выходные данные для зоны основаны на наименьшем из значений привязки.
-
В выходной таблице будет создано поле или ряд полей, в зависимости от параметра Тип статистики. Если входное Значение (Value) - целое число, для вычисления доступны все типы статистики (Площадь (Area), Минимум (Min), Максимум (Max), Диапазон (Range), Среднее (Mean), Стандартное отклонение (STD), Сумма (Sum), Разнообразие (Variety), Большинство (Majority), Меньшинство (Minority) и Медиана (Median)). Если входное Значение (Value) - с плавающей точкой, типы статистики Большинство (Majority), Меньшинство (Minority), Медиана (Median) и Разнообразие (Variety) не будут вычисляться.
-
Тип данных для каждого значения в полях выходной таблицы зависит от выполняемых зональных вычислений. Обратитесь к статье Как работает инструмент Зональная статистика за информацией по конкретным характеристикам статистических показателей.
-
Число строк в выходной таблице равно числу зон.
Синтаксис
Параметр | Объяснение | Тип данных |
in_zone_data |
Набор данных, который определяет зоны. Зоны могут быть определены слоем целочисленного растра или векторным слоем. | Raster Layer | Feature Layer |
zone_field | Поле, в котором содержатся значения, определяющие каждую зону. Это может быть целочисленное или строковое поле набора данных зоны. | Field |
in_value_raster |
Растр, содержащий значения, на основании которых будет вычислена статистика. | Raster Layer |
out_table |
Выходная таблица, которая содержит итоговую информацию по значениям в каждой зоне. | Table |
ignore_nodata (дополнительно) |
Показывает, будут ли значения NoData в входных данных Значение (Value) влиять на результаты зоны, в которую они попадают.
| Boolean |
statistics_type (дополнительно) |
Вычисляемый тип статистики.
| String |
Пример кода
В этом примере суммируются значения растра в зонах, определенных шейп-файлом полигона, и результаты записываются в таблицу.
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outZSaT = ZonalStatisticsAsTable("zones.shp", "Classes", "valueforzone",
"zonalstattblout", "NODATA", "SUM")
В этом примере суммируются значения растра в зонах, определенных шейп-файлом полигона, и результаты записываются в файл .dbf.
# Name: ZonalStatisticsAsTable_Ex_02.py
# Description: Summarizes values of a raster within the zones of
# another dataset and reports the results to a table.
# 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"
# Set local variables
inZoneData = "zones.shp"
zoneField = "Classes"
inValueRaster = "valueforzone"
outTable = "zonalstattblout02.dbf"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute ZonalStatisticsAsTable
outZSaT = ZonalStatisticsAsTable(inZoneData, zoneField, inValueRaster,
outTable, "NODATA", "MEAN")