获得 Image Analyst 许可后可用。
使用方法
LandTrendr 算法是一种用于识别像素值随时间变化的方法。它是针对多波段 Landsat 影像的时间序列开发的,用于检测变化以及对在变化发生之前和之后的土地覆盖进行分类。该工具适用于来自受支持的传感器的影像,可用于检测单波段栅格中的变化。例如,该工具可用于检测 NDVI 栅格时间序列中的变化,以识别森林砍伐事件。
LandTrendr 算法使用单一光谱波段或光谱指数中的像素值信息来提取每个像素随时间变化的时间序列轨线。然后,对轨线进行分段以捕获并建模无变化、变化以及从变化中恢复的时间段。
该工具的输出是变化分析栅格中的模型信息,其中每个像素都将存储一组描述该像素随时间变化的历史记录的模型信息。变化分析栅格是多维栅格,其中每个剖切片是一个多波段栅格,由模型系数、均方根误差 (RMSE) 和观测的变化组成。可将其用作使用变化分析栅格检测变化工具的输入,该工具会生成一个包含每个像素的变化信息的栅格。
在分析中,每年存在一个剖切片。该工具的目的是提取观测要素中的变化,因此理想的输入多维影像应在整个时间内捕获一致的观测结果,并且不应包括大气或传感器干扰、云或云阴影。最佳做法是使用已归一化的数据,并且可以使用 QA 波段进行掩膜,例如包含云掩膜的 Landsat Collection 1 表面反射率产品。
该工具将针对每年一个图像进行分析,并且每年的剖切片数必须等于或大于最小观测值个数参数中指定的值。建议您至少拥有 6 年的数据。
如果您拥有每月、每周或每天的数据,建议您从每年(最好是从同一季节)中选择多个图像,移除云和云阴影,然后合并这些图像以生成一个能够很好地捕获观测值的图像。如果提供每月、每周或每天的数据作为输入多维栅格,则该工具将根据最接近在捕捉日期参数中所提供日期的日期来标识一个剖切片以进行分析。
景观中的要素通常需要花费一些时间才能从非永久性变化(例如森林火灾或遭受病虫害)中恢复。要控制模型识别的恢复率,需要设置恢复阈值参数。不重复段的恢复率不能超过 1/恢复阈值。
从景观变化中恢复可以出现在正向或负向。例如,当景观遭受森林破坏时,植被指数值的时间序列将显示指数值下降;而恢复将显示植被指数值逐渐上升,或者呈现正的恢复趋势。可以使用恢复呈上升趋势参数来指定恢复趋势的方向。
要探索在输出变化分析栅格中算得的变化,请创建时间分布图。可以使用“拟合值”波段或“坡度”波段为变化分析栅格中的各个位置生成图形,以查看出现变化的位置。可将指针悬停在图中的点上,以识别变化日期。
该工具可能需要很长时间才能运行,并且需要大量磁盘空间来存储结果。为缩短处理时间并减少存储空间量,建议执行以下步骤:
此工具可生成采用云栅格格式 (CRF) 的多维栅格数据集。目前尚不支持其他输出格式。
语法
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 (可选) | 指定是否将排除呈现一年恢复的段。
| Boolean |
recovery_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 (可选) | 指定分割过程中是否将包含其他波段。
| Boolean |
返回值
名称 | 说明 | 数据类型 |
out_multidimensional_raster | 输出云栅格格式 (CRF) 多维栅格数据集。 包含来自 LandTrendr 分析的模型信息的输出变化分析栅格。 | Raster |
代码示例
本示例将对 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")
本示例将对 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")
许可信息
- Basic: 需要 Image Analyst
- Standard: 需要 Image Analyst
- Advanced: 需要 Image Analyst