以下载MOD11A1为例,目的是下载连续二十年中6月到10月10日的数据,并直接换算求平均值,代码如下:
//only dayLST
var roi = table; //table可以直接从assets导入
Map.centerObject(roi, 5);
Map.addLayer(roi, {}, 'Hengduan');
//计算LST,将单位K换成℃同时乘以系数
var LST_calculation = function (image){
var LST = image.expression('Day*1.0',{
'Day': image.select('dayLST').multiply(0.02).subtract(273.15),
});
return LST;
}
//读取2002-2021连续二十年的数据
for (var year = 2002; year <= 2021; year++) {
var startDate = year+'-06-01'; // 开始日期
var endDate = year+'-10-11'; // 结束日期
var mod11a1 = ee.ImageCollection("MODIS/061/MOD11A1")
.filterDate(startDate,endDate)
.filterBounds(roi)
.select(['LST_Day_1km'],['dayLST'])
.map(function(image){
var image1 = image.clip(roi); //直接裁剪
return image1;
});
var mod11a1_lst = mod11a1.select('dayLST');
var list_lst = mod11a1_lst.toList(135); //开辟数据空间,6.1-10.10之间相当于四个月加十天,31×4+10=134,最多有134景影像,可以适当放宽,整月的话不需要。视情况而定。
print(year+'_list_lst',list_lst)
var count = list_lst.size().getInfo();
var image_lst_01=ee.Image(list_lst.get(0));//先计算第一天,作为叠加数组的起始
var arrLST = LST_calculation(image_lst_01);
for (var iD=1;iD<count;iD++)
{
var image_lst = ee.Image(list_lst.get(iD));
var LST = LST_calculation(image_lst);
var arrLST = arrLST.addBands(LST); //将选择的所有数据的波段放在一起
var result = arrLST.reduce(ee.Reducer.mean()); //求mean
}
//print(arrNDVI)
print(result)
//输出到谷歌云端硬盘上
Export.image.toDrive({
image:result,
description:'day'+ year,
folder:'preseason',
crs:'EPSG:4326',
fileNamePrefix:'day' + year,
scale:500,
region:roi,
maxPixels:1e13,
fileFormat:'GeoTIFF',
})
}
over !