Google Earth Engine(GEE)实例代码学习三十六——利用哨兵Sentinel-2(QA60)去云(sentinel 2)

主要操作是按位与运算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')

你可能感兴趣的:(GEE实例代码学习)