生成多维异常 (Spatial Analyst)

获得 Image Analyst 许可后可用。

需要 Spatial Analyst 许可。

描述

计算现有多维栅格中每个剖切片的异常,以生成新的多维栅格。

异常是观察值与其标准值或平均值的偏差。

使用方法

  • 支持的多维栅格数据集包括 netCDF、GRIB、HDF 和 Esri 的 CRF。此外,还支持多维镶嵌数据集。

  • 此工具可生成采用云栅格格式 (CRF) 的多维栅格数据集。目前尚不支持其他输出格式。

  • 此工具可计算多维栅格中一个或多个变量随时间的异常。如果除时间维度外还有非时间维度,则将计算附加维度中每个时间步长的异常。

    例如,您拥有按每 1 米(最高 100 米)深度采集的每月海洋温度数据,并且您想要将温度异常计算为与年平均值的偏差。如果将平均值计算间隔参数设置为每年,则生成多维异常工具将基于年平均值确定温度异常,并针对所有 100 个深度返回异常值。

  • 该工具仅支持具有时间维度的多维栅格数据集。

  • 下面列出了用于计算异常值的数学方法。可以将平均值或中值用作平均值的定义来计算异常。如果数据分布发生偏斜,则平均值可能会在很大程度上受到异常值的影响,因此中值或 z 得分方法可能更适合此类数据。

    • 与平均值的差值 = x - µ
      • x = 剖切片中的像素值
      • μ = 给定时间间隔内该像素值的平均值
    • 与平均值的百分比差值 = |x - µ| / [(x + µ)/2]
      • x = 剖切片中的像素值
      • μ = 给定时间间隔内该像素值的平均值
      • |x - µ| = 该值与平均值之差的绝对值
    • 平均值百分比 = x / µ
      • x = 剖切片中的像素值
      • μ = 给定时间间隔内该像素值的平均值
    • 与中值的差值 = x - ß
      • x = 剖切片中的像素值
      • ß = 给定时间间隔内该像素值的中值
    • 与中值的百分比差值 = |x - ß| / [(x + ß)/2]
      • x = 剖切片中的像素值
      • ß = 给定时间间隔内该像素值的中值
      • |x - ß| = 该值与中值之差的绝对值
    • 中值的百分比 = x / ß
      • x = 剖切片中的像素值
      • ß = 给定时间间隔内该像素值的中值
    • Z 得分 = (x - µ) / S
      • x = 剖切片中的像素值
      • μ = 给定时间间隔内该像素值的平均值
      • S = 像素值在给定时间间隔内的标准差

  • 将根据输入多维栅格计算平均值或中值,您也可以直接提供平均值或中值作为平均值计算间隔参数中的栅格输入。外部栅格可以为单个栅格或多维栅格。如果输入为单个栅格,则将通过比较每个剖切片中的像素值与外部栅格中的相应像素值来计算平均值的差值。如果输入为多维栅格,则将比较相应的剖切片以计算平均值的差值,因此变量和维度的数量和名称必须匹配。

    外部栅格必须与输入多维栅格具有相同的范围、像元大小和空间参考。

  • 如果使用外部栅格来计算平均值的差值,则不支持 z 得分异常计算方法。

语法

GenerateMultidimensionalAnomaly(in_multidimensional_raster, {variables}, {method}, {calculation_interval}, {ignore_nodata}, {reference_mean_raster})
参数说明数据类型
in_multidimensional_raster

输入多维栅格数据集。

Raster Dataset; Raster Layer; Mosaic Dataset; Mosaic Layer; Image Service; File
variables
[variables,...]
(可选)

将计算异常的一个或多个变量。如果未指定变量,则将分析具有时间维度的所有变量。

String
method
(可选)

指定将用于计算异常的方法。

  • DIFFERENCE_FROM_MEAN将计算像素值与该像素值跨由间隔定义的剖切片的平均值之差。这是默认设置。
  • PERCENT_DIFFERENCE_FROM_MEAN将计算像素值与该像素值跨剖切片(由间隔定义)的平均值的百分比差值。
  • PERCENT_OF_MEAN将计算平均值的百分比。
  • Z_SCORE将计算每个像素的 z 得分。z 得分为 0 表示像素值等于平均值。z 得分为 1 表示像素值与平均值相差 1 个标准差。如果 z 得分是 2,则像素值与平均值相差 2 个标准差,依此类推。
  • DIFFERENCE_FROM_MEDIAN将计算像素值与该像素值跨由间隔定义的剖切片的数学中值之差。
  • PERCENT_DIFFERENCE_FROM_MEDIAN将计算像素值与该像素值跨由间隔定义的剖切片的数学中值的百分比差值。
  • PERCENT_OF_MEDIAN将计算数学中值的百分比。
String
calculation_interval
(可选)

指定将用于计算平均值的时间间隔。

  • ALL针对每个像素在所有剖切片上计算平均值。
  • YEARLY针对每个像素计算每年平均值。
  • RECURRING_MONTHLY针对每个像素计算每月平均值。
  • RECURRING_WEEKLY针对每个像素计算每周平均值。
  • RECURRING_DAILY针对每个像素计算每日平均值。
  • HOURLY针对每个像素计算每小时平均值。
  • EXTERNAL_RASTER将引用包含每个像素的平均值或中间值的现有栅格数据集。
String
ignore_nodata
(可选)

指定分析中是否忽略 NoData 值。

  • DATA 分析将包括沿给定维度的所有有效像素,并忽略所有 NoData 像素。这是默认设置。
  • NODATA如果沿给定维度的像素包含任意 NoData 值,则分析结果将变为 NoData。
Boolean
reference_mean_raster
(可选)

参考栅格数据集,其中包含之前针对每个像素计算的平均值。将以与该平均值进行比较的方式来计算异常。

Raster Layer; Raster Dataset; Mosaic Layer; Mosaic Dataset

返回值

名称说明数据类型
out_multidimensional_raster

输出云栅格格式 (CRF) 多维栅格数据集。

Raster

代码示例

GenerateMultidimensionalAnomaly 示例 1(Python 窗口)

此示例通过将像素值与所有剖切片的平均像素值进行比较,为温度数据生成异常多维栅格。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
arcpy.CheckOutExtension("Spatial")
outTempAnomaly = GenerateMultidimensionalAnomaly(
	"C:/sapyexamples/data/climateData.nc", "temperature", "DIFFERENCE_FROM_MEAN",
        "ALL", "DATA")
outTempAnomaly.save("C:/sapyexamples/output/TempAnomaly.crf")
GenerateMultidimensionalAnomaly 示例 2(独立脚本)

此示例通过将像素值与每年平均值进行比较,为海洋温度数据生成异常多维栅格。

# Name: GenerateMultidimensionalAnomaly_Ex_02.py
# Description: Generates an anomaly multidimensional raster for
#           ocean temperature data, comparing pixel values with the yearly mean
# 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"

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

""""
Usage: out_multidimensional_raster = GenerateMultidimensionalAnomaly(in_multidimensional_raster,
                                     {variables}, {method}, {temporal_interval})
"""

# Define input parameters
inputFile = "C:/sapyexamples/data/climateData.crf"
variable = "oceantemp"
averageMethod = "PERCENT_DIFFERENCE_FROM_MEAN"
averageInterval = "YEARLY"
ignoreNoData = "DATA"

# Execute GenerateMultidimensionalAnomaly
outYearlyAnomaly = GenerateMultidimensionalAnomaly(inputFile, variable, 
	averageMethod, averageInterval, ignoreNoData)

# Save the output
outYearlyAnomaly.save("C:/sapyexamples/output/TempAnomaly.crf")

许可信息

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

相关主题