经过前面两期有关Landsat数据的去云处理,我们已经知道,去云的过程其实是比较简单的,主要有两种方法,加入是该数据集的大气层顶反射率数据即TOA数据,我们采用GEE平台封装的算法ee.Algorithms.Landsat.simpleCloudScore进行计算即可,而如果是其他数据,则需要采用数据集特有的云层质量监测波段QA,通过按位操作来进行处理,详情见上两期:
(1)Landsat去云处理(旧):http://t.csdnimg.cn/kLf45http://t.csdnimg.cn/kLf45
(2)Landsat去云处理(新):http://t.csdnimg.cn/1xp1thttp://t.csdnimg.cn/1xp1t
今天我们要聊一个新的数据集的去云方法,它的去云方法和Landsat的SR数据一样,需要采用QA质量波段进行处理,唯一的不同点在于QA波段的不同,因此在代码上只需要修改该部分即可。该数据集为哥白尼计划的哨兵数据(Sentinel)。
一、学习目标
掌握Sentinel-2数据的去云方法
二、数据介绍
Sentinel-2数据即哨兵2号数据,为哥白尼计划的重要组成部分,共有两颗多光谱高分辨率卫星,分别于2015年和2017年发射升空,主要用于陆地表面监测。
三、代码分享
A.Sentinel-2 数据去云
由于去云要查看QA质量波段,先查阅SR数据的云信息存储波段:
查阅波段后我们发现,哨兵数据相对于陆地卫星数据,其qa质量波段变为QA60,共有11个bit位存储信息,其中Bit 10 为不透明云信息,Bit 11为高层的卷云信息。去云代码将在此处完成更改。接下来,上完整的SR数据代码:
//Sentinel-SR数据
var geometry = ee.Geometry.Polygon([[[7.431681385689433,46.118785560758724],
[8.887369862251932,46.118785560758724],
[8.887369862251932,46.74347083070587],
[7.431681385689433,46.74347083070587],
[7.431681385689433,46.118785560758724]]])
Map.centerObject(geometry,7);
//影像访问和调用
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);
}
var dataset = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
.filterDate('2020-07-01', '2020-07-30').filterBounds(geometry)
// Pre-filter to get less cloudy granules.
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',20))
.map(maskS2clouds);
var visualization = {
min: 0.0,
max: 0.3,
bands: ['B4', 'B3', 'B2'],
};
Map.addLayer(dataset.mean(), visualization, 'RGB');
从这里我们可以看出哨兵三号数据的去云方法与Landsat的去云方法类似,区别在于该数据可以在访问数据集时直接调用波段“Cloudy_PIXEL_PERCENTAGE"先对云层进行预处理,再进行进一步的去云操作:
以上是关于哨兵2号数据的去云方法分享,希望对大家有帮助!
今天的分享到此结束,谢谢大家!