筛选了2023年4月1日至2023年9月10日的Sentinel 2 影像,计算全国的EVI(如果要计算其它地方直接更改研究区就好了)
Sentinel-2 的EVI计算公式:

// 定义研究区
var roi = ee.FeatureCollection('users/yongweicao11/China_1984');
var myImage = ee.ImageCollection("COPERNICUS/S2_HARMONIZED")
.filterBounds(roi)
.filterDate('2023-04-01', '2023-09-10') // 筛选指定时间内的Sentinel 2 影像
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20)); // 根据云量要求筛选影像
// 去云函数,GEE 中提供了Sentinel-2的去云函数
function maskS2clouds(image) {
var qa = image.select('QA60');
var mask = qa.bitwiseAnd(1 << 10).eq(0).and(qa.bitwiseAnd(1 << 11).eq(0));
return image.updateMask(mask).divide(10000);
}
// 影像去云
myImage = myImage.map(maskS2clouds)
// 对影像进行中值合成并裁剪
myImage = myImage.median().clip(roi)
// 计算 EVI
var nirScaled = myImage.select('B8');
var redScaled = myImage.select('B4');
var blueScaled = myImage.select('B2');
var numeratorEVI = (nirScaled.subtract(redScaled)).multiply(2.5);
var denomClause1 = redScaled.multiply(6);
var denomClause2 = blueScaled.multiply(7.5);
var denominatorEVI = nirScaled.add(denomClause1).subtract(denomClause2).add(1);
var EVI = numeratorEVI.divide(denominatorEVI).rename('EVI');
print(EVI)
// 将EVI计算结果添加到地图
var vegPalette = ['red', 'white', 'green'];
var visParams = {min: -1, max: 1, palette: vegPalette};
Map.addLayer(EVI, visParams, 'EVI');
上述代码利用了GEE内置的计算函数,比较繁杂,也可以通过自定义函数计算EVI
var roi = ee.FeatureCollection('users/yongweicao11/China_1984');
print('ROI:', roi);
var myImage = ee.ImageCollection("COPERNICUS/S2_HARMONIZED")
.filterBounds(roi)
.filterDate('2023-04-01', '2023-09-10')
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20));
print(myImage)
function maskS2clouds(image) {
var qa = image.select('QA60');
var mask = qa.bitwiseAnd(1 << 10).eq(0).and(qa.bitwiseAnd(1 << 11).eq(0));
return image.updateMask(mask).divide(10000);
}
myImage = myImage.map(maskS2clouds)
myImage = myImage.median().clip(roi)
var eviExpression = myImage.expression({
// 定义计算公式
expression: '2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))',
map: { // 定义公式中的参数值
'NIR': myImage.select('B8'),
'RED': myImage.select('B4'),
'BLUE': myImage.select('B2')
}
});
var vegPalette = ['red', 'white', 'green'];
var visParams = {min: -1, max: 1, palette: vegPalette};
Map.addLayer(eviExpression, visParams, 'EVI');
计算结果
(注意:南方部分地区存在缺失,可能是没有符合筛选条件的影像,可以尝试调节时间筛选和云量筛选,注意GEE要求图像集合不能超过5000个元素,否则会报错)

1903






