本博客提供使用GEE按季节下载哨兵2号影像的完整代码,在使用代码的过程中仅需修改下载范围的shp和下载年份即可。其中的原理讲解和部分代码展示在我的另一篇博文中,使用GEE下载哨兵2号影像(初学者版)_gee下载哨兵数据-优快云博客,鼓励大家按照上篇博文的讲解自己摸索,这篇博文将对代码全貌进行展示。
// 1. load shp
var district = ee.FeatureCollection("users/ran09012000/maolan");
var dsize = district.size();
// print(dsize);
var district_geometry = district.geometry();
Map.centerObject(district_geometry, 12);
Map.addLayer(district);
// 2. find data
function maskS2clouds(image) {
var qa = image.select('QA60');
// Bits 10 and 11 are clouds and cirrus, respectively.
var cloudBitMask = 1 << 10;
var cirrusBitMask = 1 << 11;
// Both flags should be set to zero, indicating clear conditions.
var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
.and(qa.bitwiseAnd(cirrusBitMask).eq(0));
return image.updateMask(mask).divide(10000);
// return image.updateMask(mask);
}
// Map the function over one year of data.
// Load Sentinel-2 TOA reflectance data.
var dataset = ee.ImageCollection('COPERNICUS/S2')
.filterBounds(district_geometry)
.filterDate('2017-01-01', '2021-01-01')
// Pre-filter to get less cloudy granules.
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
.map(maskS2clouds);
var rgbVis = {
min: 0.0,
max: 0.3,
bands: ['B4', 'B3', 'B2'],
};
Map.addLayer(dataset.median(), rgbVis, 'RGB');
// 3. export data
var year = 2018;
for (var i=3; i<=12; i+=3) {
if (i < 10){
var start_date = String(year) + '-0' + String(i) + '-01'
} else{
var start_date = String(year) + '-' + String(i) + '-01'
}
print(start_date)
if (i + 3 < 10){
var end_date = String(year) + '-0' + String(i + 3) + '-01'
} else if (i + 3 > 12){
var end_date = String(year + 1) + '-03-01'
} else{
var end_date = String(year) + '-' + String(i + 3) + '-01'
}
print(end_date)
var exportdataset = ee.ImageCollection('COPERNICUS/S2')
.filterBounds(district_geometry)
.filterDate(start_date, end_date)
// Pre-filter to get less cloudy granules.
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
.map(maskS2clouds)
.select(['B2','B3','B4','B5','B6','B7','B8','B8A','B11','B12']);
print(exportdataset.size())
var img = exportdataset.median().clip(district_geometry);
// img = img.toInt16();
Map.addLayer(img, rgbVis, 'RGB_clip' + String(start_date));
Export.image.toDrive({
image: img,
description: 'S2_' + start_date,
fileNamePrefix: 'S2_' + start_date,
folder: 'S2_maolan_season_1017',
region: district_geometry,
crs: "EPSG:4326",
scale: 10,
maxPixels: 1e13
});
}