GEE批量下载月份的影像数据,基本思路是在年份循环内再嵌套一层月份循环,下面是代码实现:
var roi = table; // 定义成自己的数据集
Map.centerObject(roi);
Map.addLayer(roi, {}, 'yanjiuqu');
// 定义去云函数,默认不去云
// var Cloudmask = function(image){
// var clouds = ee.Algorithms.Landsat.simpleCloudScore(image).select(['cloud'])
// return image.updateMask(clouds.lt(5))
// };
// 定义L8数据集
var L8Images = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
.filterBounds(roi)
.filterDate('2013-04-08', '2022-12-31')
.filterMetadata('CLOUD_COVER', 'less_than', 100) // 根据需要调整阈值
.sort('CLOUD_COVER', true)
.map(function(image){
return image.set('year', ee.Image(image).date().get('year'))
}) // 影像属性里添加年份字段
.map(function(image){
return image.set('month', ee.Image(image).date().get('month'))
}); // 影像属性里添加月份字段
// .map(Cloudmask); //去云处理,需要的话取消注释
print(L8Images); // 一定要查看影像属性!!!
// 批量导出影像
for(var year = 2013; year < 2023; year++){
for(var month = 1; month <= 12; month++){ // 默认12个月份,根据需要自行修改
var filteredImages = L8Images.filter(ee.Filter.calendarRange(year, year, 'year'))
.filter(ee.Filter.calendarRange(month, month, 'month'));
var image = filteredImages.mosaic().clip(roi);
// var imageFloat32 = image.toFloat();
var imageName = 'Image-' + year + '-' + month;
Export.image.toDrive({
image: image.select(['B4', 'B3', 'B2']), // 如需导出全部波段,使用imageFloat32
description: imageName,
folder: 'GEE_downloads',
region: roi,
scale: 30,
crs: 'EPSG:4326',
maxPixels: 1e13
});
}
}
下图是代码执行后的任务视图:
下图是下载的2013年9月份的影像:
注意:如果在导出到云盘这一步出现错误可能是没有影像数据,可以通过查看影像的原始信息来确认!