文章目录
一、前言
GEE官方提供了一个云概率数据集 【点击链接可跳转至详情网页】,该数据集中仅有一个波段
其中,针对该波段的官方描述是这样的:
S2 cloud probability 是使用 Sentinel2-cloud- detector 库(使用 LightGBM)创建的。在应用梯度增强基础算法之前,所有频段均使用双线性插值上采样至 10m 分辨率。生成的 0…1 浮点概率缩放为 0…100 并存储为 UINT8。缺少任何或所有条带的区域被遮盖掉。较高的值更有可能是云或高反射表面(例如屋顶或雪)。
二、GEE利用 云概率数据集 对哨兵影像进行去云
传统的 QA60 波段位运算去云函数
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);
}
为了进一步去除细碎云、细小云可进一步利用 S2 cloud probability 数据集进行去云操作
//提取云概率波段的函数,并制作掩膜数据
function rmcloudByProbability(image,thread){
var prob = image.select("probability");
return image.updateMask(prob.lte(thread));
}
//数据集合并函数
function getMergeImages(primary, secondary){
var join = ee.Join.inner();
var filter = ee.Filter.equals({
leftField: "system:index",
rightField: "system:index",
});
var joinCol = join.apply(primary, secondary, filter);
joinCol = joinCol.map(function(image){
var img1 = ee.Image(image.get("primary"));
var img2 = ee.Image(image.get("secondary"));
return img1.addBands(img2);
});
return ee.ImageCollection(joinCol);
}
//设定时间间隔
var dates=['2023-01-11','2023-01-30'];
var startDate = ee.Date(dates[0]);
var endDate = ee.Date(dates[1]);
var S2_images1 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
.filterDate(startDate,endDate)
.filterBounds(roi);
var S2_images2 = ee.ImageCollection("COPERNICUS/S2_CLOUD_PROBABILITY")
.filterDate