Зональная статистика (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).
Входной растр значений может быть либо целочисленным, либо может быть представлен значениями с плавающей точкой. Однако, если тип данных - числа с плавающей точкой, не будут вычислены такие зональные характеристики, как большинство, медиана, меньшинство и разнообразие.
Для вычислений большинства и меньшинства, если есть привязка, выходные данные для зоны основаны на наименьшем из значений привязки.
-
Тип выходных данных зависит от выполняемого зонального вычисления и типа данных входного растра значений. Дополнительную информацию см. в разделе Как работает инструмент Зональная статистика.
-
По умолчанию, этот инструмент использует преимущества многоядерных процессоров. Максимальное число ядер, использующихся инструментом, 4.
Если вы хотите, чтобы инструмент использовал меньшее число ядер, измените параметр среды parallelProcessingFactor.
Синтаксис
Параметр | Объяснение | Тип данных |
in_zone_data |
Набор данных, который определяет зоны. Зоны могут быть определены слоем целочисленного растра или векторным слоем. | Raster Layer | Feature Layer |
zone_field | Поле, в котором содержатся значения, определяющие каждую зону. Это может быть целочисленное или строковое поле набора данных зоны. | Field |
in_value_raster |
Растр, содержащий значения, на основании которых будет вычислена статистика. | Raster Layer |
statistics_type (дополнительно) |
Вычисляемый тип статистики.
| String |
ignore_nodata (дополнительно) |
Показывает, будут ли значения NoData в входных данных Значение (Value) влиять на результаты зоны, в которую они попадают.
| Boolean |
Возвращено значение
Имя | Объяснение | Тип данных |
out_raster |
Выходной растр зональной статистики. | Raster |
Пример кода
В этом примере для каждой зоны определяется диапазон значений ячеек во входном растре значений.
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outZonalStats = ZonalStatistics("zone", "value", "valueraster", "RANGE",
"NODATA")
outZonalStats.save("C:/sapyexamples/output/zonestatout")
В этом примере для каждой зоны определяется диапазон значений ячеек во входном растре значений.
# Name: ZonalStatistics_Ex_02.py
# Description: Calculates statistics on values of a raster
# within the zones of another dataset.
# 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 = "zone"
zoneField = "value"
inValueRaster = "valueraster"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute ZonalStatistics
outZonalStatistics = ZonalStatistics(inZoneData, zoneField, inValueRaster,
"RANGE", "NODATA")
# Save the output
outZonalStatistics.save("C:/sapyexamples/output/zonestatout2")