很多GEE学习者,都是从下载大范围高空间分辨率遥感影像开始的,或者在GEE上进行一些植被指数处理。本文选择Sentinel-2数据,利用S2_CLOUD_PROBABILITY数据集对其进行去云处理。然后合成无云的Sentinel-2影像及ndvi。本文以四川省为例。代码如下:
var table = ee.FeatureCollection("users/cduthes1991/China_province_2019"), S2_Cloud = ee.ImageCollection("COPERNICUS/S2_CLOUD_PROBABILITY"), S2 =ee.ImageCollection("COPERNICUS/S2");
// 筛选研究区范围
var roi = table.filter(ee.Filter.eq('provinces','sichuan'))
// 习惯性计算一下研究区面积
print(roi.geometry().area().divide(1000000),'sichuanArea(km2)')
// 利用外轮廓红色显示研究区范围
var styling = {color:'black',fillColor:'00000000'}
Map.centerObject(roi,5.7)
// 建立去云函数
function CloudProbability(img,thread){
var prob = img.select('probability')
return img.updateMask(prob.lte(thread))
}
// 利用ee.Join.inner函数将cloud影像和Sentinel-2影像联合,以便后面去云时使用
function MergeImages(primary, secondary) {
var join = ee.Join.inner();
var filter = ee.Filter.equals({
leftField: 'system:index',
rightField: 'system:index'
});
var Col = join.apply(primary, secondary, filter);
Col = Col.map(function(image) {
var img1 = ee.Image(image.get("primary"));
var img2 = ee.Image(image.get("secondary"));
return ee.Image.cat(img1,img2);
});
return ee.ImageCollection(Col);
}
// 这里选择 5-10 月的数据进行处理
function main() {
var startDate = "2021-5-1";
var endDate = "2021-10-1";
var S2Img1 = S2.filterDate(startDate, endDate)
.filterBounds(roi)
var S2Img2 = S2_Cloud.filterDate(startDate, endDate)
.filterBounds(roi);
var S2Imgs = MergeImages(S2Img1, S2Img2);
S2Imgs = S2Imgs.map(function(image) {
return CloudProbability(image, 30);
});
print(S2Img1)
print(S2Img2)
print(S2Imgs)
var ndvi_max = S2Imgs.map(function ndvi(img){
return img.normalizedDifference(['B8','B4'])
}).max().clip(roi)
Map.addLayer(S2Imgs,{bands:['B8','B4','B3'],min:0,max:3000},'S2Imgs')
Map.addLayer(ndvi_max, {min:0, max:0.9}, "ndvi");
}
main();
Map.addLayer(roi.style(styling),{},'sichuan')
欢迎加入GEE遥感训练营。
代码已经测试没有问题。有问题可以后台随时微信我。
后期更多免费代码持续分享,关注点赞在看三连走起!!