Google Earth Engine笔记-寻找影像时间序列最大值对应日期

2 寻找影像时间序列最大值对应日期

在GEE中,时间序列分析经常用到,有时根据研究需要,会统计在每个pixel上时间序列最大值所对应的日期或时间,这一操作,这一操作的算法思想与取一个列表中最大值所对应的索引有异曲同工之处。

废话不多说直接上代码

  • 准备数据集
var wuhan = ee.FeatureCollection("users/yp7454982/wuhan");
var dataset=ee.ImageCollection("MODIS/006/MOD13Q1")
              .filterDate('2019-01-01','2019-12-31')
              .select("NDVI")
print(dataset)

这里以MOD13Q1的16天产品2019年时间序列为例,选择对应的NDVI波段时间序列。
Google Earth Engine笔记-寻找影像时间序列最大值对应日期_第1张图片

  • 获取创建最大NDVI值对应的影像image
function get_max_value_date(time_series){
  var first_date=time_series.first().date();
  var max_value=time_series.max();
  var eq_max_col=time_series.map(function (image){
    var eq_0_1=image.eq(max_value);
    var img_doy=image.date().difference(first_date,'day')
    return ee.Image(img_doy).toFloat().multiply(eq_0_1)
  })
  return eq_max_col.sum()
}
var max_value_date=get_max_value_date(dataset)
print(max_value_date)

算法核心思想:

取影像集中第一个影像的成像时间作为初始时间,并对影像集进行最大值合成,因此max_value图层每个pixel都是时间序列上的最大值,在对原始时间序列进行遍历,逐一与max_value进行eq比较,产生二值逻辑图像,等于1的pixel则为对应最大值对应的pixel,将其乘上对应的影像时间差,最终将eq_max_col来进行逐像素时间序列合成即可得到对应图像。

  • 输出直方图并导出影像
var chart=ui.Chart.image.histogram({
  image:max_value_date.clip(wuhan),
  region:wuhan,
  scale:250,
  //maxPixels:1e13
})
print(chart)
var vis={
  min:0,
  max:360,
  palette: [
    'FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901',
    '66A000',
  ]  
}
Map.centerObject(wuhan,8)
Map.addLayer(max_value_date.clip(wuhan),vis,'day')
Export.image.toDrive({
  image: max_value_date.clip(wuhan),
  description: "wuhan_ndvi_2019_max_value_date",
  scale: 250,
  region: wuhan.geometry(),
  maxPixels: 1e13
});

Google Earth Engine笔记-寻找影像时间序列最大值对应日期_第2张图片

你可能感兴趣的:(GEE)