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波段时间序列。
文章图片
- 获取创建最大NDVI值对应的影像image
function get_max_value_date(time_series){
var first_date=time_series.first().date();
var max_value=https://www.it610.com/article/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)
算法核心思想:
【Google Earth Engine笔记-寻找影像时间序列最大值对应日期】取影像集中第一个影像的成像时间作为初始时间,并对影像集进行最大值合成,因此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
});
文章图片
推荐阅读
- 网络前沿知识|GEE学习笔记 七十六(【GEE之Python版教程十】字典)
- 网络前沿知识|GEE学习笔记 七十八(干涸的洪泽湖)
- GEE|GEE学习笔记 五十九(GEE中mosiac、qualityMosiac、max区别)
- python|GEE学习笔记 七十五(【GEE之Python版教程九】数值)
- python|GEE学习笔记 七十(【GEE之Python版教程四】Python基础编程二)
- GEE|GEE学习笔记 六十二(保密是头等大事)
- GEE|GEE学习笔记 五十八(设置数值数据保留N位)
- GEE|GEE学习笔记 五十一(Fusion Table将在2019年12月3日关闭)
- GEE|GEE学习笔记 五十六(GEE中如何把文件导出到Google Drive的子目录)
- GEE|GEE学习笔记 五十三(GEE导出的影像波段名称哪去了())