Sentinel数据S2_SR_HARMONIZED连续云掩膜+中位数合成
在GEE中实现时,发现简单的QA60是无法去云的,最近S2地表反射率数据集又进行了更新,原有的属性集也进行了变化,现在的SR数据集名称是“S2_SR_HARMONIZED”。那么:
要想得到研究区无云的图像,可以参考执行以下几个步骤,
-  遥感图像中筛选云占比不超过10%的图像 
 // 加载Sentinel-2 L2A图像
 var s2 = ee.ImageCollection(‘COPERNICUS/S2_SR_HARMONIZED’)
 .filterDate(‘2021-09-01’, ‘2021-10-31’)
 .filter(ee.Filter.lt(‘CLOUDY_PIXEL_PERCENTAGE’,10))
 .filterBounds(basin_shp);
-  QA60云掩膜 
 // 第一次云掩膜:使用QA60
 function maskS2clouds(image) {
 var qa = image.select(‘QA60’);
 var cloudBitMask = 1 << 10;
 var cirrusBitMask = 1 << 11;
 var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
 .and(qa.bitwiseAnd(cirrusBitMask).eq(0));
 return image.updateMask(mask);
 }
 var s2_masked = s2.map(maskS2clouds);
  
-  SCL在最新的S2_SR_HARMONIZED产品中是存在的,判断云和云阴影 
 //SCL Cloud mask
 function maskS2cloudsSCL(image) {
 var scl = image.select(‘SCL’);
 // 去除云(8)和云阴影(9)
 var mask = scl.neq(8).and(scl.neq(9));
 return image.updateMask(mask);
 }
 var s2_masked = s2_masked.map(maskS2cloudsSCL);
-  继续用像元云概率进行判断,要求每个像元是云的概率小于10% 
 // MSK_CLDPRB Mask(Sen2Cor 云概率),可直接用阈值掩膜,云概率低于 10% 保留:
 function maskCloudProb(image) {
 var prob = image.select(‘MSK_CLDPRB’);
 return image.updateMask(prob.lt(10)); // 云概率低于 20% 保留
 }
 var s2_masked = s2_masked.map(maskCloudProb);
 最后中位数合成,避免反射率高值影响图像像元整体性。
 var s2_max = s2_masked.median();
