【GEE学习】小范围研究区筛选无云影像

问题描述:

常用的sentinel-2筛选少云影像通常使用Filter

.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))

和QA波段去云。

function rmCloudByQA(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); 
} 

但是对于小范围研究区来说,这样的筛选会导致“影像云量多而研究区云量少”、“影像云量少但集中在研究区”等情况,造成时序影像利用效率不高。

思路:

本文拟筛选出研究区内无云影像,但GEE代码水平不高,思路如下:
1、利用qa波段将影像的云掩膜为0值;
2、对研究区内影像进行统计,利用Reducer.allNonZero()检索是否有0值;
3、添加一个属性,有云时值为0,无云时值为1;
4、Filter筛选出该值为1的影像。

代码

function rmCloudByQA(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));
  
image = image.updateMask(mask).unmask(0)
  
  var min = image.select("B1")
  .reduceRegion({
  	reducer: ee.Reducer.allNonZero(),
  	geometry:roi,
  	scale: 10,
  	maxPixels: 1e13})
  .get("B1");
  
  return image.set({'cloud_musk':min});
}
var S2Collection = ee.ImageCollection('COPERNICUS/S2')
                  .filterDate(start_date, end_date)
                  .filterBounds(table)
                  .map(rmCloudByQA)
                  .filter(ee.Filter.eq('cloud_musk', 1))

函数说明:

GEE:遥感影像处理中的常见掩膜函数的使用
Google Earth Engine(gee)中的reduce、Reducer
GEE学习:遥感影像设置新的属性并查询

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值