像元统计 (Spatial Analyst)

摘要

根据多个栅格计算每个像元的统计数据。

可用的统计数据包括众数、最大值、平均值、中值、最小值、少数、百分比数、范围、标准差、总和及变异度。

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

插图

像元统计工具输入和输出值示例
OutRas = CellStatistics([InRas1, InRas2, InRas3], "SUM", "NODATA", "SINGLE_BAND")

使用情况

  • 使用此工具时输入栅格的顺序不重要。

  • 对于最大值、最小值、均值、中位数、众数、少数、百分比数及总和这些统计数据类型,如果将单个栅格数据用作输入,则输出像元值将与输入像元值相同。 对于范围和标准差这些统计数据类型,输出像元值全部为 0。 对于变异度这种统计数据,输出像元值为 1。

  • 如果未选中以多波段方式处理参数(在 Python 中,process_as_multiband 设置为 SINGLE_BAND),则来自多波段栅格输入的每个波段将作为单波段栅格单独处理,并且输出将是单波段栅格。

    单波段输出(作为 SINGLE_BAND 处理时)
    当作为 SINGLE_BAND 进行处理时,“像元统计”工具将创建单波段输出。
  • 如果选中了以多波段方式处理参数(在 process_as_multiband 中,MULTI_BAND 设置为 Python),每个多波段栅格输入将被处理为多波段栅格,并且输出将是多波段栅格。 如果输入是多波段栅格和常数的组合,则输出也将为多波段栅格。 每个多波段输入中的波段数必须相同。

    该工具将在一个输入的每个波段上使用另一输入的相应波段执行操作。 如果输入之一是多波段栅格,而另一个输入是常量,则该工具将使用多波段输入中每个波段的常量值执行操作。

    多波段输出(作为 MULTI_BAND 处理时)
    当作为 MULTI_BAND 进行处理时,“像元统计”工具将创建多波段输出。
  • 如果所有输入均为具有相同数量变量的多维栅格数据,则该工具将对具有相同维度值的所有剖切片执行运算。 输出将是 CRF 格式的多维栅格。 输入中的变量必须至少具有一个常见维度和一个常见维度值以供此工具进行处理,否则将发生错误。

    如果所有输入均具有一个变量但名称不同,请在执行运算之前取消选中匹配多维变量地理处理环境(在 Python 中设置 arcpy.env.matchMultidimensionalVariable = False)。

    如果其中一个或多个输入为多维栅格,而其他输入为常量,则该工具将使用常量值对所有变量的所有剖切片执行运算,并且输出将为多维栅格。

  • 对于众数和少数计算,当存在平局时,输出将为平局值的最低值。

参数

标注说明数据类型
输入栅格或常量值

将在分析窗口中,为每个像元计算统计运算的输入栅格列表。

数字可以作为输入,但是必须先在环境中设置像元大小和范围。

如果选中了以多波段方式处理参数,则所有多波段输入都必须具有相同数量的波段。

Raster Layer; Constant
叠加统计
(可选)

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

默认统计类型为平均值

  • 平均值将计算输入的平均值。 这是默认设置。
  • 众数将确定输入的众数(出现次数最多的值)。
  • 最大值将确定输入的最大值。
  • 中值将计算输入的中值。
  • 最小值将确定输入的最小值。
  • 少数将确定输入的少数(出现次数最少的值)。
  • 百分比数将计算输入的百分比数。 默认情况下将计算 90% 百分比数。 您可以使用百分比值参数来指定其他值(从 0 到 100)。
  • 范围将计算输入的范围(最大值和最小值之差)。
  • 标准差将计算输入的标准偏差。
  • 总和将计算输入的总和(所有值的总和)。
  • 变异度将计算输入的变异度(唯一值的数量)。
String
在计算中忽略 NoData
(可选)

指定在进行统计计算时是否将忽略 NoData 值。

  • 选中 - 在处理像元位置处,如果任意输入栅格具有 NoData,则将忽略该 NoData 值。 仅考虑具有有效数据的像元来计算统计数据。 这是默认设置。
  • 未选中 - 如果任意输入栅格的处理像元位置为 NoData,则该像元的输出将为 NoData。
Boolean
以多波段方式处理
(可选)

指定如何处理输入多波段栅格波段。

  • 未选中 - 来自多波段栅格输入的每个波段将被单独处理为单波段栅格。 这是默认设置。
  • 选中 - 每个多波段栅格输入都将作为多波段栅格进行处理。 将使用其他输入的相应波段数对一个输入的每个波段执行操作。
Boolean
百分比值
(可选)

将计算的百分比值。 默认值为 90,表示 90%。

值范围可以介于 0 到 100 之间。 0% 基本上等同于最小值统计数据,而 100% 则等同于最大统计数据。 值 50 所生成的结果基本等同于中值统计数据的结果。

仅在将叠加统计参数参数设置为百分比数时,此参数才可用。

Double
百分比插值类型
(可选)

指定当指定的百分比值介于两个输入像元值之间时将使用的插值方法。

  • 自动检测如果输入栅格的像素类型为整型,则将使用最邻近方法。 如果输入栅格的像素类型为浮点型,则将使用线性方法。 这是默认设置。
  • 最邻近将使用最接近所需的百分位数的可用值。 在这种情况下,输出像素类型与输入栅格的像素类型相同。
  • 线性使用接近百分比数的两个值的加权平均值。 在本例中,输出像素类型为浮点型。
String

返回值

标注说明数据类型
输出栅格

输出栅格。

对于各个像元,可通过将指定统计数据类型应用到该位置处的输入栅格来确定该值。

Raster

CellStatistics(in_rasters_or_constants, {statistics_type}, {ignore_nodata}, {process_as_multiband}, {percentile_value}, {percentile_interpolation_type})
名称说明数据类型
in_rasters_or_constants
[in_raster_or_constant,...]

将在分析窗口中,为每个像元计算统计运算的输入栅格列表。

数字可以作为输入,但是必须先在环境中设置像元大小和范围。

如果将 processing_as_multiband 参数设置为 MULTI_BAND,则所有多波段输入应具有相等数量的波段。

Raster Layer; Constant
statistics_type
(可选)

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

  • MEAN将计算输入的平均值。 这是默认设置。
  • MAJORITY将确定输入的众数(出现次数最多的值)。
  • MAXIMUM将确定输入的最大值。
  • MEDIAN将计算输入的中值。
  • MINIMUM将确定输入的最小值。
  • MINORITY将确定输入的少数(出现次数最少的值)。
  • PERCENTILE将计算输入的百分比数。 默认情况下将计算 90% 百分比数。 您可以使用 percentile_value 参数来指定其他值(从 0 到 100)。
  • RANGE将计算输入的范围(最大值和最小值之差)。
  • STD将计算输入的标准偏差。
  • SUM将计算输入的总和(所有值的总和)。
  • VARIETY将计算输入的变异度(唯一值的数量)。

默认统计类型为 MEAN

String
ignore_nodata
(可选)

指定在进行统计计算时是否将忽略 NoData 值。

  • DATA在处理像元位置处,如果任意输入栅格具有 NoData,则将忽略该 NoData 值。 仅考虑具有有效数据的像元来计算统计数据。 这是默认设置。
  • NODATA如果任意输入栅格的处理像元位置为 NoData,则该像元的输出将为 NoData。
Boolean
process_as_multiband
(可选)

指定如何处理输入多波段栅格波段。

  • SINGLE_BAND来自多波段栅格输入的每个波段将被单独处理为单波段栅格。 这是默认设置。
  • MULTI_BAND每个多波段栅格输入都将作为多波段栅格进行处理。 将使用其他输入的相应波段数对一个输入的每个波段执行操作。
Boolean
percentile_value
(可选)

将计算的百分比值。 默认值为 90,表示 90%。

值范围可以介于 0 到 100 之间。 0% 基本上等同于最小值统计数据,而 100% 则等同于最大统计数据。 值 50 所生成的结果基本等同于中值统计数据的结果。

仅当 statistics_type 参数设置为 PERCENTILE 时,系统才支持此参数。

Double
percentile_interpolation_type
(可选)

指定当指定的百分比值介于两个输入像元值之间时将使用的插值方法。

  • AUTO_DETECT如果输入栅格的像素类型为整型,则将使用 NEAREST 方法。 如果输入栅格的像素类型为浮点型,则将使用 LINEAR 方法。 这是默认设置。
  • NEAREST将使用最接近所需的百分位数的可用值。 在这种情况下,输出像素类型与输入栅格的像素类型相同。
  • LINEAR使用接近百分比数的两个值的加权平均值。 在本例中,输出像素类型为浮点型。
String

返回值

名称说明数据类型
out_raster

输出栅格。

对于各个像元,可通过将指定统计数据类型应用到该位置处的输入栅格来确定该值。

Raster

代码示例

CellStatistics 示例 1(Python 窗口)

在本示例中,将针对多个输入 Grid 栅格中的每个像元计算标准差,并将结果输出为 IMG 栅格。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outCellStats = CellStatistics(["degs", "negs", "cost"], "STD", "DATA")
outCellStats.save("C:/sapyexamples/output/outcellstats.img")
CellStatistics 示例 2(独立脚本)

本示例将针对多个输入多波段栅格计算每个波段每个像元的范围,并创建一个多波段输出栅格。

# Name: CellStatistics_Ex_standalone.py
# Description: Calculates a per-cell statistic from multiple multiband rasters
#               and process as multiband.
# 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
inRaster01 = "degs_MB"
inRaster02 = "negs_MB"
inRaster03 = "cost_MB"

# Execute CellStatistics
outCellStatistics = CellStatistics([inRaster01, inRaster02, inRaster03], "RANGE", "NODATA", "MULTI_BAND")

# Save the output 
outCellStatistics.save("C:/sapyexamples/output/cellstats_MB.tif")

相关主题