使用 LandTrendr 分析变化 (Image Analyst)

获得 Image Analyst 许可后可用。

摘要

使用基于 Landsat 的干扰和恢复趋势检测 (LandTrendr) 方法评估像素值随时间的变化,并生成包含模型结果的变化分析栅格。

了解有关 LandTrendr 工作原理的详细信息

使用情况

  • LandTrendr 算法是一种用于识别像素值随时间变化的方法。 它是针对多波段 Landsat 影像的时间序列开发的,用于检测变化以及对在变化发生之前和之后的土地覆盖进行分类。 该工具适用于来自受支持的传感器的影像,可用于检测单波段栅格中的变化。 例如,该工具可用于检测 NDVI 栅格时间序列中的变化,以识别森林砍伐事件。

  • LandTrendr 算法使用单一光谱波段或光谱指数中的像素值信息来提取每个像素随时间变化的时间序列轨线。 然后,对轨线进行分段以捕获并建模无变化、变化以及从变化中恢复的时间段。

  • 该工具的输出是变化分析栅格中的模型信息,其中每个像素都将存储一组描述该像素随时间变化的历史记录的模型信息。 变化分析栅格是多维栅格,其中每个剖切片是一个多波段栅格,由模型系数、均方根误差 (RMSE) 和观测的变化组成。 可将其用作使用变化分析栅格检测变化工具的输入,该工具会生成一个包含每个像素的变化信息的栅格。

    There is one slice for each year in the analysis.
  • 此工具用于提取观测要素中的变化,因此理想的输入多维影像应在整个时间内捕获一致的观测结果,并且不应包括大气或传感器干扰、云或云阴影。 理想做法是使用已归一化的数据,并且可以使用 QA 波段进行掩膜,例如包含云掩膜的 Landsat Collection 1 表面反射率产品。

  • 该工具将针对每年一个图像进行分析,并且每年的剖切片数必须等于或大于最小观测值个数参数中指定的值。 建议您至少拥有 6 年的数据。

    如果您拥有每月、每周或每天的数据,建议您从每年(最好是从同一季节)中选择多个图像,移除云和云阴影,然后合并这些图像以生成一个能够很好地捕获观测值的图像。 如果提供每月、每周或每天的数据作为输入多维栅格,则该工具将根据最接近在捕捉日期参数中所提供日期的日期来标识一个剖切片以进行分析。

  • 景观中的要素通常需要花费一些时间才能从非永久性变化(例如森林火灾或遭受病虫害)中恢复。 要控制模型识别的恢复率,需要设置恢复阈值参数。 不重复段的恢复率不能超过 1/恢复阈值。

  • 从景观变化中恢复可以出现在正向或负向。 例如,当景观遭受森林破坏时,植被指数值的时间序列将显示指数值下降;而恢复将显示植被指数值逐渐上升,或者呈现正的恢复趋势。 可以使用恢复呈上升趋势参数来指定恢复趋势的方向。

  • 要探索在输出变化分析栅格中算得的变化,请创建时间分布图。 可以使用“拟合值”波段或“坡度”波段为变化分析栅格中的各个位置生成图形,以查看出现变化的位置。 可将指针悬停在图中的点上,以识别变化日期。

  • 该工具可能需要很长时间才能运行,并且需要大量磁盘空间来存储结果。 为缩短处理时间并减少存储空间量,建议执行以下步骤:

    • 关闭金字塔环境。 取消选中环境窗格中的构建金字塔复选框或在 Python 中将环境设置为 NONE
    • 压缩环境设置为 LERC 并将最大误差设置为 0.000001。
    • 如果您希望在此工具的输出上运行使用变化分析检测变化多次,则需要在结果上构建多维转置。

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

参数

标注说明数据类型
输入多维栅格

输入多维栅格数据集。

Raster Dataset; Raster Layer; Mosaic Dataset; Mosaic Layer; Image Service; File
处理波段名称
(可选)

用于随时间分割像素值轨线的图像波段名称。 请选择最能捕获您要观测的要素变化的波段名称。

如果未指定波段值并且输入为多波段影像,则将使用多波段图像中的第一个波段。

String
捕捉日期
(可选)

用于在输入多维数据集中针对每年识别一个剖切片的日期。 将使用日期最接近捕捉日期的剖切片。 如果输入数据集包含次年数据,则此参数为必填项。

默认值为 06-30 或 June 30,大约是某一日历年的年中。

String
最大段数
(可选)

要拟合到每个像素的时间序列的最大段数。 默认值为 5。

Long
折点数过伸阈值
(可选)

在标识折点的初始阶段,超出 max_num_segments + 1 的附加折点数可用于拟合模型。 在建模过程的后期,附加折点数将减少为 max_num_segments + 1。 默认值为 2。

Long
峰值阈值
(可选)

用于衰减像素值轨线中的峰值或异常的阈值。 该值的范围必须介于 0 到 1 之间,其中 1 表示没有衰减。 默认值为 0.9。

Double
恢复阈值
(可选)

恢复阈值,以年为单位。 如果某段的恢复率快于 1/recovery threshold,则该段将被放弃,并且不会包含在时间序列模型中。 该值必须介于 0 到 1 之间。 默认值为 0.25。

Double
防止一年恢复
(可选)

指定是否将排除呈现一年恢复的段。

  • 选中 - 将排除呈现一年恢复的段。 这是默认设置。
  • 未选中 - 将不排除呈现一年恢复的段。

Boolean
恢复具有上升趋势
(可选)

指定恢复是否具有上升(正)趋势。

  • 选中 - 恢复呈现上升趋势。 这是默认设置。
  • 未选中 - 恢复呈现下降趋势。

Boolean
最小观测值个数
(可选)

执行拟合所需的最小有效观测点数。 输入多维数据集中的年数必须等于或大于此值。 默认值为 6。

Long
最佳模型比例
(可选)

最佳模型比例值。 在模型选择过程中,该工具将计算每个模型的 p 值,并根据此比例值来识别折点最多的模型,同时保持最小(最显著)p 值。 值为 1 表示模型的 p 值最低,但折点数量可能不多。 默认值为 1.25。

Double
P 值阈值

要选择的模型的 p 值阈值。 在模型拟合的初始阶段中检测到折点后,该工具将拟合每个段并计算 p 值以确定模型的显著性。 在下次迭代中,模型会将段数减 1 并重新计算 p 值。 由此继续,如果 p 值小于此参数中指定的值,则将选择该模型,并且该工具将停止搜索更好的模型。 如果未选择此类模型,则该工具将选择 p 值小于 lowest p-value × best model proportion value 的模型。 默认值为 0.01。

Double
包含其他波段
(可选)

指定结果中是否将包含其他波段。

  • 选中 - 结果中将包含其他波段。 还会将处理波段参数中指定的初始分割波段的分割和折点信息拟合到多波段图像中的其余波段。 模型结果将首先包含分割波段,然后包含其余波段。
  • 未选中 - 结果中将不包含其他波段。 这是默认设置。

Boolean

返回值

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

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

包含来自 LandTrendr 分析的模型信息的输出变化分析栅格。

Raster

AnalyzeChangesUsingLandTrendr(in_multidimensional_raster, {processing_band}, {snapping_date}, {max_num_segments}, {vertex_count_overshoot}, {spike_threshold}, {recovery_threshold}, {prevent_one_year_recovery}, {recovery_trend}, {min_num_observations}, {best_model_proportion}, pvalue_threshold, {output_other_bands})
名称说明数据类型
in_multidimensional_raster

输入多维栅格数据集。

Raster Dataset; Raster Layer; Mosaic Dataset; Mosaic Layer; Image Service; File
processing_band
(可选)

用于随时间分割像素值轨线的图像波段名称。 请选择最能捕获您要观测的要素变化的波段名称。

如果未指定波段值并且输入为多波段影像,则将使用多波段图像中的第一个波段。

String
snapping_date
(可选)

用于在输入多维数据集中针对每年识别一个剖切片的日期。 将使用日期最接近捕捉日期的剖切片。 如果输入数据集包含次年数据,则此参数为必填项。

默认值为 06-30 或 June 30,大约是某一日历年的年中。

String
max_num_segments
(可选)

要拟合到每个像素的时间序列的最大段数。 默认值为 5。

Long
vertex_count_overshoot
(可选)

在标识折点的初始阶段,超出 max_num_segments + 1 的附加折点数可用于拟合模型。 在建模过程的后期,附加折点数将减少为 max_num_segments + 1。 默认值为 2。

Long
spike_threshold
(可选)

用于衰减像素值轨线中的峰值或异常的阈值。 该值的范围必须介于 0 到 1 之间,其中 1 表示没有衰减。 默认值为 0.9。

Double
recovery_threshold
(可选)

恢复阈值,以年为单位。 如果某段的恢复率快于 1/recovery threshold,则该段将被放弃,并且不会包含在时间序列模型中。 该值必须介于 0 到 1 之间。 默认值为 0.25。

Double
prevent_one_year_recovery
(可选)

指定是否将排除呈现一年恢复的段。

  • ALLOW_ONE_YEAR_RECOVERY将不排除呈现一年恢复的段。
  • PREVENT_ONE_YEAR_RECOVERY将排除呈现一年恢复的段。 这是默认设置。
Boolean
recovery_trend
(可选)

指定恢复是否具有上升(正)趋势。

  • INCREASING_TREND恢复呈现上升趋势。 这是默认设置。
  • DECREASING_TREND恢复呈现下降趋势。
Boolean
min_num_observations
(可选)

执行拟合所需的最小有效观测点数。 输入多维数据集中的年数必须等于或大于此值。 默认值为 6。

Long
best_model_proportion
(可选)

最佳模型比例值。 在模型选择过程中,该工具将计算每个模型的 p 值,并根据此比例值来识别折点最多的模型,同时保持最小(最显著)p 值。 值为 1 表示模型的 p 值最低,但折点数量可能不多。 默认值为 1.25。

Double
pvalue_threshold

要选择的模型的 p 值阈值。 在模型拟合的初始阶段中检测到折点后,该工具将拟合每个段并计算 p 值以确定模型的显著性。 在下次迭代中,模型会将段数减 1 并重新计算 p 值。 由此继续,如果 p 值小于此参数中指定的值,则将选择该模型,并且该工具将停止搜索更好的模型。 如果未选择此类模型,则该工具将选择 p 值小于 lowest p-value × best model proportion value 的模型。 默认值为 0.01。

Double
output_other_bands
(可选)

指定分割过程中是否将包含其他波段。

  • INCLUDE_OTHER_BANDS将包含其他波段。 还会将 processing_band 参数中指定的初始分割波段的分割和折点信息拟合到多波段图像中的其余波段。 模型结果将首先包含分割波段,然后包含其余波段。
  • EXCLUDE_OTHER_BANDS将不包含其他波段。 这是默认设置。
Boolean

返回值

名称说明数据类型
out_multidimensional_raster

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

包含来自 LandTrendr 分析的模型信息的输出变化分析栅格。

Raster

代码示例

AnalyzeChangesUsingLandTrendr 示例 1(Python 窗口)

本示例将对 NDVI 数据的时间序列执行 LandTrendr 算法以进行变化检测。

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

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


changeAnalysisRaster = arcpy.ia.AnalyzeChangesUsingLandTrendr(
	"Monthly_NDVI_30_years.crf","","",10,3,0.9,0.25, 'PREVENT_ONE_YEAR_RECOVERY', 
	'INCREASING_TREND',10,1.25,0.05, 'EXCLUDE_OTHER_BANDS')

# Save output
changeAnalysisRaster.save(r"C:\data\NDVI_ChangeAnalysis.crf")
AnalyzeChangesUsingLandTrendr 示例 2(独立脚本)

本示例将对 Landsat 影像的时间序列执行连续变化检测。

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

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

# Define input parameters
in_multidimensional = r"C:\data\Landsat_time_series.crf"
processing_band = "Band_4"
snapping_date = ""
max_num_segments = 10
vertex_count_overshoot = 3
spike_threshold = 0.9
recovery_threshold = 0.25
prevent_one_year_recovery = "PREVENT_ONE_YEAR_RECOVERY"
recovery_trend = "INCREASING_TREND"
min_num_observations = 6
best_model_proportion = 1.25
pvalue_threshold = 0.01
output_other_bands = "EXCLUDE_OTHER_BANDS"

# Execute
changeAnalysisRaster = arcpy.ia.AnalyzeChangesUsingCCDC(
	in_multidimensional, processing_band, snapping_date, max_num_segments,
	vertex_count_overshoot, spike_threshold, recovery_threshold, prevent_one_year_recovery,
	recovery_trend, min_num_observations, best_model_proportion, pvalue_threshold, output_other_bands)

# Save output
changeAnalysisRaster.save(r"C:\data\Landsat_ChangeAnalysis.crf")

相关主题