获得 Image Analyst 许可后可用。
描述
用于面向多维栅格中一个或多个变量估计每个像素沿维度的趋势。
使用方法
此工具的一个使用示例是:您有 40 年的月度海洋温度数据,且您希望为每个像素拟合趋势线,以查看温度随时间变化的位置和方式。
受支持的多维栅格数据集包括云栅格格式 (CRF)、多维镶嵌数据集或者由 netCDF、GRIB 或 HDF 文件生成的多维栅格图层。
此工具可生成采用云栅格格式 (CRF) 的多维栅格数据集。目前尚不支持其他输出格式。
默认情况下,将使用 LZ77 压缩类型压缩多维栅格输出。但是,建议您将压缩类型更改为 LERC,并根据您的数据调整最大误差。例如,如果您希望将分析结果精确到三位小数,则请将最大误差值设置为 0.001。最好避免不必要的精度要求,因为这会导致处理时间和存储大小增加。
该工具可用于沿线性、谐波或多项式趋势线拟合数据,也可用于使用 Mann-Kendall 或 Seasonal-Kendall 测试执行趋势检测。
Mann-Kendall 和 Seasonal-Kendall 测试可用于确定数据中是否存在单调性趋势。上述测试为非参数测试,这意味着它们不会假设具体的数据分布。Mann-Kendall 测试不会考虑序列相关性或季节性影响。如果数据为季节性数据,则 Seasonal-Kendall 测试更为适合。
如果使用该工具执行 Mann-Kendall 或 Seasonal-Kendall 测试,则输出将为五波段栅格,如下所示:
- 波段 1 = Sen 斜率
- 波段 2 = p 值
- 波段 3 = Mann-Kendall 得分 (S)
- 波段 4 = S 方差
- 波段 5 = Z 得分
Mann-Kendall 或 Seasonal-Kendall 测试的输出可用于确定多维时间序列中的哪些像素具有统计显著性趋势。您可以将此信息与线性、谐波或多项式趋势分析结合使用,以提取时间序列中的重要趋势。您可以生成包含像素(像素带有显著 p 值)的掩膜,将该掩膜应用于多维栅格,以及将此掩膜多维栅格用作工具的输入,以执行线性、谐波或多项式趋势分析。
系统提供三个趋势线选项用于沿维度拟合变量值的趋势:线性、谐波和多项式。三个趋势拟合选项如下所述。
- 线性 - 线性趋势线是最佳拟合直线,可用于估计简单的线性关系。线性趋势可突出显示以稳定速率增加或减少的变化率。线性趋势线的公式如下:
- y = 像素变量值
- x = 维度值
- ß0 = y 截距
- ß1 = 线性斜率或变化率
ß1 > 0 表示增加趋势
ß1 < 0 表示减少趋势
- 谐波 - 谐波趋势线是周期性重复的曲线,最适用于描述遵循周期性模式的数据,例如季节性温度变化。谐波趋势线的公式如下:
- y = 像素变量值
- t = 儒略日
- ß0 = y 截距
- ß1 = 变化率
- α, γ = 年际或年内变化的系数
- ω = i
- f = 谐波频率
- 多项式 - 多项式趋势线是一条曲线,可用于波动的数据。在这种情况下,多项式的阶数值用于指示发生的最大波动数。多项式趋势线的公式如下:
- y = 像素变量值
- x = 维度值
- ß0, ß1, ß2, ß3, ..., ßn = 常系数
- 线性 - 线性趋势线是最佳拟合直线,可用于估计简单的线性关系。线性趋势可突出显示以稳定速率增加或减少的变化率。线性趋势线的公式如下:
如果使用该工具执行线性、谐波或多项式趋势分析,则可以将输出趋势栅格用作使用趋势栅格预测工具的输入。趋势栅格为多维栅格,其中每个剖切均为包含趋势线相关信息的多波段栅格。如果要分析包含单个维度(例如,时间)的数据集的单个变量趋势,则输出数据集中将具有单个剖切。如果要分析包含多个维度(例如,时间和深度)的数据集的单个变量,则每个剖切将包含沿分析中未包含维度的每个维度值的趋势信息。
对于线性趋势分析,输出包含三波段栅格,其中:
- 波段 1 = 斜率
- 波段 2 = 截距
- 波段 3 = 均方根误差 (RMSE) 或最佳拟合线周围的误差
对于谐波趋势分析,输出中的波段数取决于谐波频率。当频率设置为 1 时,输出将为五波段栅格,如下所示:
- 波段 1 = 斜率
- 波段 2 = 截距
- 波段 3 = Harmonic_sin1
- 波段 4 = Harmonic_cos1
- 波段 5 = RMSE
当频率设置为 2 时,输出将为七波段栅格,如下所示
- 波段 1 = 斜率
- 波段 2 = 截距
- 波段 3 = Harmonic_sin1
- 波段 4 = Harmonic_cos1
- 波段 5 = Harmonic_sin2
- 波段 6 = Harmonic_cos2
- 波段 7 = RMSE
对于多项式趋势分析,输出中的波段数取决于多项式阶数。二阶多项式拟合将生成四波段栅格,如下所示:
- 波段 1 = Polynomial_2
- 波段 2 = Polynomial_1
- 波段 3 = Polynomial_0
- 波段 4 = RMSE
三阶多项式拟合将生成五波段栅格,如下所示:
- 波段 1 = Polynomial_3
- 波段 2 = Polynomial_2
- 波段 3 = Polynomial_1
- 波段 4 = Polynomial_0
- 波段 5 = RMSE
谐波趋势分析的周期长度参数用于表示您希望在一天或全年的数据中看到的周期数量和周期长度。例如,如果您希望数据在一年中经历两个变化周期,则周期长度将为 182.5 天或 0.5 年。如果您每三小时采集一次温度数据,并且每天存在一个变化周期,则周期长度将为 1 天。
谐波趋势分析的频率参数用于描述谐波模型以拟合至数据。如果频率设置为 1,则将使用线性和一阶谐波曲线的组合来拟合模型。如果频率为 2,则将使用线性、一阶谐波和二阶谐波曲线的组合来拟合数据。如果频率为 3,则将使用附加的三阶谐波曲线对数据进行建模,依此类推。
可以生成模型拟合优度统计数据作为线性、谐波和多项式趋势栅格的可选输出。可以计算均方根误差 (RMSE)、R 平方和趋势斜率 p 值并在输出栅格的属性窗口的统计数据部分中显示。也可以通过使用 RGB 符号系统符号化输出趋势栅格并将统计数据指定为红色、绿色和蓝色波段来显示统计数据。
语法
GenerateTrendRaster(in_multidimensional_raster, dimension, {variables}, {line_type}, {frequency}, {ignore_nodata}, {cycle_length}, {cycle_unit}, {rmse}, {r2}, {slope_p_value}, {seasonal_period})
参数 | 说明 | 数据类型 |
in_multidimensional_raster | 输入多维栅格数据集。 | Raster Dataset; Raster Layer; Mosaic Dataset; Mosaic Layer; Image Service; File |
dimension | 将沿此维度为分析中所选的一个或多个变量提取趋势。 | String |
variables [variables,...] (可选) | 将计算趋势的一个或多个变量。如果未指定变量,则将分析多维栅格中的第一个变量。 | String |
line_type (可选) | 指定用于执行沿维度像素值的趋势分析的类型。
| String |
frequency (可选) | 趋势拟合中使用的频率或多项式阶数。如果趋势类型是多项式,则此参数将指定多项式阶数。如果趋势类型为谐波,则此参数将指定用于拟合趋势的模型数量。 仅当分析的维度是时间时,趋势分析中才会包含此参数。 如果 line_type 参数为 HARMONIC,则默认值为 1,这意味着将使用一阶谐波曲线来拟合模型。 如果 line_type 参数是 POLYNOMIAL,则默认值为 2 或二阶多项式。 | Long |
ignore_nodata (可选) | 指定分析中是否忽略 NoData 值。
| Boolean |
cycle_length (可选) | 要进行建模的周期性变化的长度。line_type 设置为 HARMONIC 时需要此参数。例如,叶绿度通常在一年中具有一个较强的变化周期,因此周期长度为 1 年。每小时温度数据在一天中具有一个较强的变化周期,因此周期长度为 1 天。 对于每年周期变化的数据,默认长度为 1 年。 | Double |
cycle_unit (可选) | 指定用于谐波周期长度的时间单位。
| String |
rmse (可选) | 指定是否将计算趋势拟合线的均方根误差 (RMSE)。
| Boolean |
r2 (可选) | 指定是否将为趋势拟合线计算 R 平方拟合优度统计数据。
| Boolean |
slope_p_value (可选) | 指定是否将为趋势线的斜率系数计算 p 值统计数据。
| Boolean |
seasonal_period (可选) | 指定在执行 Seasonal-Kendall 测试时用于季节性期间长度的时间单位。
| String |
返回值
名称 | 说明 | 数据类型 |
out_multidimensional_raster | 输出云栅格格式 (CRF) 多维栅格数据集。 | Raster |
代码示例
本示例将计算降水数据随时间变化的多项式趋势拟合。
# Import system modules
import arcpy
from arcpy.ia import *
# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")
# Execute
trendCoeffMultidim = arcpy.ia.GenerateTrendRaster("model_time_series.crf",
"StdTime", "precip", "POLYNOMIAL", 2, "DATA", None, '', "RMSE","R2", None)
# Save output
trendCoeffMultidim.save("C:/data/polynomial_trend_coefficients.crf")
本示例将计算温度和盐度数据随深度变化的线性趋势拟合。
# Import system modules
import arcpy
from arcpy.ia import *
# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")
# Define input parameters
inFile = "C:/Data/ClimateVariables.crf"
dimensionName = "Depth"
variables = "salinity;temp"
trend_model = "LINEAR"
ignore_Nodata = "DATA"
# Execute - fit a linear model for salinity and temperature
trendCoeffMultidim = GenerateTrendRaster(inFile, dimensionName,
variables, trend_model, None, ignore_nodata)
# Save output
trendCoeffMultidim.save("C:/data/linear_trend_coefficients.crf")
本示例将测试单调性趋势,然后计算沿 NDVI 时间序列的谐波趋势拟合。
# Import system modules
import arcpy
from arcpy.ia import *
# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")
# Define input parameters
inFile = "C:/data/ndvi_time_series.crf"
dimensionName = "StdTime"
variables = "ndvi"
trend_test = "SEASONAL_KENDALL"
trend_model = "HARMONIC"
harmonic_frequency = 1
ignore_Nodata = "DATA"
length_of_cycle = 365.25
rmse = RMSE
r_square = NO_r2
p_value = NO_SLOPEPVALUE
# Test for monotonic trend
trendtest = GenerateTrendRaster(inFile, dimensionName, variables,
trend_test, '', ignore_Nodata, '', '', '', '', '', 'MONTHS')
# Execute
trendCoeffMultidim = GenerateTrendRaster(inFile, dimensionName,
variables, trend_model, harmonic_frequency, ignore_nodata,
length_of_cycle,rmse,r_square,p_value)
# Save output
trendCoeffMultidim.save("C:/data/harmonic_trend_coefficients.crf")
许可信息
- Basic: 需要 Image Analyst
- Standard: 需要 Image Analyst
- Advanced: 需要 Image Analyst