主要操作是按位与运算bitwiseAnd()筛选像元
其不同位数表示含义如下
Bit 10: Opaque clouds
0: No opaque clouds 透明云层
1: Opaque clouds present 不透明云层
Bit 11: Cirrus clouds
0: No cirrus clouds 没有卷云
1: Cirrus clouds present
//创建一个函数用来掩模云以及卷云
function maskS2clouds(image) {
//选择有关云掩膜的波段
var qa = image.select('QA60')
//位10和11分别代表云和卷云。
var cloudBitMask = 1 << 10;
var cirrusBitMask = 1 << 11;
// 将有关云的像元置为0
var mask = qa.bitwiseAnd(cloudBitMask).eq(0).and(
qa.bitwiseAnd(cirrusBitMask).eq(0))
// 掩模数据并选择多光谱波段,将反射率归为0-1复制时间属性
return image.updateMask(mask).divide(10000)
.select("B.*")
.copyProperties(image, ["system:time_start"])
}
//选择哨兵2大气顶层反射率数据,并利用提供云含量属性筛选云量小于20%
var collection = ee.ImageCollection('COPERNICUS/S2')
.filterDate('2016-01-01', '2016-12-31')
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
.map(maskS2clouds)
//取数据集中值
var composite = collection.median()
// 影像显示
Map.addLayer(composite, {bands: ['B4', 'B3', 'B2'], min: 0, max: 0.3}, 'RGB')