GEE:变化检测算法,干扰检测,LandTrendr代码与说明(变化年份和扰动幅度示例)

LandTrendr是一种用于中等分辨率卫星图像变化检测的算法,尤其适用于Landsat数据。该算法在Google Earth Engine(GEE)上实现了更快更便捷的处理。通过设定参数,如最大段数、阈值等,LandTrendr可以检测出植被变化、扰动幅度和年份。提供的代码示例展示了如何在GEE中运行LandTrendr,生成并可视化扰动幅度和年份的图像,并将结果导出到谷歌云盘。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LandTrendr是什么?

LandTrendr是一组频谱时间分割算法,可用于中等分辨率卫星图像(主要是Landsat)的时间序列中的变化检测以及生成很大程度上不存在年际信号噪声的基于轨迹的频谱时间序列数据。LT最初是用IDL(交互式数据语言)实现的,但是在Google工程师的帮助下,它已移植到GEE平台。


LandTrendr官方说明网站:

https://emapr.github.io/LT-GEE/index.html
该网站介绍了在Google Earth Engine(GEE)中运行LandTrendr(LT)的基础知识。
它描述了LT概念框架,运行LT-GEE所需的内容,如何运行它,输出是什么以及如何格式化它们。它还提供了三个示例脚本,用于LT操作的一系列用户界面以及一个有目的但易于使用的API。
GEE框架几乎消除了IDL实施中繁琐的数据管理和图像预处理方面。它比IDL实施要快几光年,后者的计算时间以分钟而不是天为单位。(GEE谷歌云平台动用全球的服务器运算)


以下介绍动用API,运行LandTrendr的代码。输出结果为最大的扰动发生的幅度和年份。
完整代码:https://code.earthengine.google.com/65d284842e453de5731810be16bfccf3?noload=true
扰动幅度结果如下图所示,(不同颜色代表扰动强度不同)
在这里插入图片描述
扰动发生的年份,结果如下图所示:(不同颜色代表扰动发生的不同年份)
在这里插入图片描述

// 定义影像集参数
var startYear = 1984;
var endYear = 2019;
var startDay = '06-20';
var endDay = '09-01';
//var aoi = ee.Geometry.Point(-122.8848, 43.7929);
var index = 'NBR';
var maskThese = ['cloud', 'shadow', 'snow', 'water'];

// 定义landtrendr参数
var runParams = { 
  maxSegments:            6,
  spikeThreshold:         0.9,
  vertexCountOvershoot:   3,
  preventOneYearRecovery: true,
  recoveryThreshold:      0.25,
  pvalThreshold:          0.05,
  bestModelProportion:    0.75,
  minObservationsNeeded:  6
};

// 定义变化参数
var changeParams = {
  delta:  'loss',
  sort:   'greatest',
  year:   {checked:true, start:1986, end:2019},
  mag:    {checked:true, value:200,  operator:'>'},
  dur:    {checked:true, value:4,    operator:'<'},
  preval: {checked:true, value:300,  operator:'>'},
  mmu:    {checked:true, value:11},
  
};


//各项参数设置好了,就可以开始运行LandTrendr了!

// 加载API
var ltgee = require('users/emaprlab/public:Modules/LandTrendr.js'); 

// add index to changeParams object
changeParams.index = index;

// 运行landtrendr
var lt = ltgee.runLT(startYear, endYear, startDay, endDay, aoi, index, [], runParams, maskThese);

// 得到 change map layers
var changeImg = ltgee.getChangeMap(lt, changeParams);

// 可视化字典
var palette = ['#9400D3', '#4B0082', '#0000FF', '#00FF00', '#FFFF00', '#FF7F00', '#FF0000'];
var yodVizParms = {
  min: startYear,
  max: endYear,
  palette: palette
};

// 可视化参数
var magVizParms = {
  min: 200,
  max: 800,
  palette: palette
};

// 将扰动图可视化
Map.centerObject(aoi, 11);
Map.addLayer(changeImg.select(['mag']), magVizParms, 'Magnitude of Change');
Map.addLayer(changeImg.select(['yod']), yodVizParms, 'Year of Detection');

//设置显示样式:color代表边界颜色;fillcolor代表填充颜色
var styling={color:'red',fillColor:'00000000'}
//JX就是矢量边界
Map.addLayer(aoi.style(styling),{},"JX")

// 将结果下载到谷歌云盘

var exportImg = changeImg.clip(aoi).unmask(0).short();
Export.image.toDrive({
  image: exportImg, 
  description: 'lt-gee_disturbance_map', 
  folder: 'lt-gee_disturbance_map_test', 
  fileNamePrefix: 'lt-gee_disturbance_map', 
  region: aoi, 
  scale: 30, 
  crs: 'EPSG:5070', 
  maxPixels: 1e13
});
评论 64
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_养乐多_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值