var geometry =
ee.Geometry.Point([103.82735541698865, 30.805600117293057]),
S2A = ee.ImageCollection("COPERNICUS/S2_SR_HARMONIZED"),
S2C = ee.ImageCollection("COPERNICUS/S2_HARMONIZED"),
S2CP = ee.ImageCollection("COPERNICUS/S2_CLOUD_PROBABILITY"),
S2CS = ee.ImageCollection("GOOGLE/CLOUD_SCORE_PLUS/V1/S2_HARMONIZED");
function maskS2clouds_QA60(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);
}
function CloudProbability(img,threshold){
var prob = img.select('probability')
return img.updateMask(prob.lte(threshold))
}
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)
.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);
}
var S2A_img = S2A.filterDate('2020-10-1','2020-11-01')
.filterBounds(geometry)
.sort('CLOUDY_PIXEL_PERCENTAGE')
print('S2A_img',S2A_img)
var visualization = {
min: 0.0,
max: 3000,
bands: ['B4', 'B3', 'B2'],
};
Map.addLayer(S2A_img.first(), visualization, 'S2A_imgRGB',false);
var S2A_img_rmCloudByQA60 = maskS2clouds_QA60(S2A_img.first())
var S2CP_img = S2CP.filterDate('2020-10-1','2020-11-01')
.filterBounds(geometry);
var S2A_img_rmCloudByCloudProbability = MergeImages(S2A_img, S2CP_img).map(function(image){return CloudProbability(image,30)});
var S2A_img_rmCloudByCloudScore = S2A_img
.linkCollection(S2CS,'cs')
.map(function(img) {
return img.updateMask(img.select('cs').gte(0.6));
}).first();
var span = ee.Image(1).clip(S2A_img.first().geometry())
Map.addLayer(span,{palette:'blue'},'span')
Map.addLayer(S2A_img_rmCloudByQA60,visualization, 'S2A_img_rmCloudByQA60',false);
Map.addLayer(S2A_img_rmCloudByCloudProbability.first(),visualization, 'S2A_img_rmCloudByCloudProbability',false);
Map.addLayer(S2A_img_rmCloudByCloudScore,visualization, 'S2A_img_rmCloudByCloudScore',false);