分区统计 (Spatial Analyst)

需要 Spatial Analyst 许可。

获得 Image Analyst 许可后可用。

描述

计算位于另一数据集区域内的栅格值的统计信息。

了解有关“分区统计”工作原理的详细信息

插图

分区统计图示
OutRas = ZonalStatistics(ZoneRas, "VALUE", ValRas, "MINIMUM", "DATA", "ALL_SLICES")

使用方法

  • 区域定义为输入中具有相同值的所有区域。各区域无需相连。栅格和要素都可用于区域输入。

  • 如果输入栅格或要素区域数据(Python 中的 in_zone_data)为栅格,则其必须为整型栅格。

  • 如果输入栅格或要素区域数据(Python 中的 in_zone_data)为要素,则将使用输入值栅格(Python 中的 in_value_raster)的像元大小和像元对齐方式在内部将其转换为栅格。

  • 如果输入栅格或要素区域数据(Python 中的 in_zone_data)与输入值栅格(Python 中的 in_value_raster)的像元大小不同,则输出像元大小的值将为输入的最大值,且输入值栅格将在内部用作捕捉栅格。如果像元大小相同,但是像元未对齐,则输入值栅格将在内部用作捕捉栅格。在执行区域操作之前,上述任一情况都会触发内部重采样。

    如果区域输入和值输入均为具有相同像元大小的栅格,并且像元已对齐,则可将其直接应用于工具中,且工具执行期间不会对其进行内部重采样。

  • 如果输入栅格或要素区域数据(Python 中的 in_zone_data)为要素,对于不与值栅格的任何像元中心重叠的任何区域要素,这些区域将不会转换为内部区域栅格。因此,这些区域将不会在输出中表示。您可以通过为保留要素区域所需细节层次的像元大小环境指定适当的值来管理这些区域并在分析环境中指定这些区域。

  • 如果输入栅格或要素区域数据(Python 中的 in_zone_data)为点要素,则其可能具有值输入栅格的任何特定像元内所含的多个点。对于这样的像元,区域值将通过具有最低 ObjectID 字段的点(例如 OIDFID)来确定。

  • 如果输入栅格或要素区域数据(Python 中的 in_zone_data)具有重叠面,则无法针对每个单独的面执行区域分析。因为要素输入已转换为栅格,所以每个位置只能拥有一个值。

    另一种方法就是要为每个面区域反复进行区域操作并核对结果。

  • 在指定输入栅格或要素区域数据(Python 中的 in_zone_data)时,默认区域字段将为第一个可用的整型或文本字段。如果不存在其他有效字段,则 ObjectID 字段(如 OIDFID)将成为默认字段。

  • 输入值栅格(Python 中的 in_value_raster)可以为整型,也可以为浮点型。但是,当它是浮点型时,将无法计算众数、中值、少数和变异性。

  • 对于众数和少数计算,当存在平局时,区域的输出将基于平局值的最低值。有关详细信息,请参阅“分区统计”的工作原理

  • 支持的多维栅格数据集类型包括多维栅格图层、镶嵌、图像服务和 Esri 的 CRF。

  • 输出的数据类型(整型或浮点型)取决于所执行的分区计算以及输入值栅格类型。

  • 默认情况下,此工具会利用多核处理器。可供使用的最大核数为四。

    要使用较少的核,请使用 parallelProcessingFactor 环境设置。

  • 有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst

语法

ZonalStatistics(in_zone_data, zone_field, in_value_raster, {statistics_type}, {ignore_nodata}, {process_as_multidimensional}, {percentile_value})
参数说明数据类型
in_zone_data

定义区域的数据集。

可通过整型栅格或要素图层来定义区域。

Raster Layer; Feature Layer
zone_field

包含定义每个区域的值的字段。

该字段可以是区域数据集的整型字段或字符串型字段。

Field
in_value_raster

含有要计算统计数据的值的栅格。

Raster Layer
statistics_type
(可选)

指定要计算的统计数据类型。

  • MEAN将计算值栅格中与输出像元同属一个区域的所有像元的平均值。
  • MAJORITY将计算值栅格中与输出像元同属一个区域的所有像元中最常出现的值。
  • MAXIMUM将计算值栅格中与输出像元同属一个区域的所有像元的最大值。
  • MEDIAN将计算值栅格中与输出像元同属一个区域的所有像元的中值。
  • MINIMUM将计算值栅格中与输出像元同属一个区域的所有像元的最小值。
  • MINORITY将计算值栅格中与输出像元同属一个区域的所有像元中出现次数最少的值。
  • PERCENTILE将计算值栅格中与输出像元同属一个区域的所有像元的百分比值。默认情况下将计算 90% 百分比数。您可以使用百分数值参数来指定其他值(从 0 到 100)。
  • RANGE将计算值栅格中与输出像元同属一个区域的所有像元的最大值与最小值之差。
  • STD将计算值栅格中与输出像元同属一个区域的所有像元的标准偏差。
  • SUM将计算值栅格中与输出像元同属一个区域的所有像元的合计值。
  • VARIETY将计算值栅格中与输出像元同属一个区域的所有像元中唯一值的数目。
String
ignore_nodata
(可选)

指定值输入中的 NoData 值是否会在其所落入区域的结果中被忽略。

  • DATA在任意特定区域内,仅使用在输入值栅格中拥有值的像元来确定该区域的输出值。在统计计算过程中,值栅格内的 NoData 像元将被忽略。这是默认设置。
  • NODATA在任何特定区域中,如果 NoData 像元存在于值栅格中,则它们不会被忽略,并且 NoData 像元的存在表明没有足够的信息来对该区域中的所有像元执行统计计算。因此,整个区域将在输出栅格上接收 NoData 值。
Boolean
process_as_multidimensional
(可选)

用于指定多维输入栅格的处理方式。

  • CURRENT_SLICE将计算输入多维数据集的当前剖切片中的统计数据。这是默认设置。
  • ALL_SLICES将计算输入多维数据集的所有维度的统计数据。
Boolean
percentile_value
(可选)

要计算的百分比数。默认值为 90,指示 90%。

取值范围为 0 到 100。0% 基本上等同于“最小值”统计数据,而 100% 则等同于“最大值”。值 50 所生成的结果基本等同于“中值”统计数据的结果。

此选项仅在将 statistics_type 参数设置为 PERCENTILE 后受支持。

Double

返回值

名称说明数据类型
out_raster

输出分区统计栅格。

Raster

代码示例

ZonalStatistics 示例 1(Python 窗口)

本示例为各区域确定了值输入栅格中的像元值范围。

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")
ZonalStatistics 示例 2(独立脚本)

本示例通过为每个区域计算输入多维值栅格中的最大值来创建多维区域输出。

# Name: ZonalStatistics_Ex_standalone.py
# Description: Summarizes values of a multidimensional raster within the zones 
#              of another dataset.
# Requirements: Spatial Analyst Extension

# Import system modules
import arcpy
from arcpy.sa import *

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Set the analysis environments
arcpy.env.workspace = "C:/sapyexamples/data"

# Set the local variables
inZoneData = "zones.shp"
zoneField = "sampleID"
inValueRaster = "multidimensional_valueraster.crf" 

# Execute ZonalStatistics
outZonalStatistics = ZonalStatistics(inZoneData, zoneField, inValueRaster,
                                     "MAXIMUM", "NODATA", "ALL_SLICES")

# Save the output 
outZonalStatistics.save("C:/sapyexamples/output/zonestatout2.crf")

许可信息

  • Basic: 需要 Spatial Analyst 或 Image Analyst
  • Standard: 需要 Spatial Analyst 或 Image Analyst
  • Advanced: 需要 Spatial Analyst 或 Image Analyst

相关主题