GEE哨兵二号去云不成功的原因(代码修改)

基于GEE的哨兵二号QA波段去云,但是去不成功
原因:因为筛选出来的影像云量几乎都超过50%
官方的在这里插入图片描述官方的解答:文档里是提取云量20以下的进行去云的

https://code.earthengine.google.com/377aab67874dd818e9f51bd0b311640a
源码:



// 去云
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 addVariables = function(image){
  var awei= image.expression(
              '4*(green-SWIR1)-(0.25*NIR+2.75*SWIR2)',{
              green:image.select('B3'),
              NIR:image.select('B8'),
              SWIR1:image.select('B11'),
              SWIR2:image.select('B12'),
            }).float().rename('AWEI')
  var ndwi = image.normalizedDifference(['B3','B8']).rename('NDWI')
  var mndvi = image.normalizedDifference(['B3','B11']).rename('MNDWI')
  var lswi = image.normalizedDifference(['B8','B11']).rename('LSWI')
  var ndvi = image.normalizedDifference(['B8','B4']).rename('NDVI')
  var evi= image.expression(
              '2.5*(NIR-RED)-(NIR+6*RED-7.5*BLUE+1)',{
              NIR:image.select('B8'),
              RED:image.select('B4'),
              BLUE:image.select('B2'),
            }).float().rename('EVI')
  return image.addBands([awei,ndwi,mndvi,lswi,ndvi,evi]);
}

// 研究区域
var roi = geometry;
Map.addLayer(roi,{"color":'red',},"roi")
Map.centerObject(roi, 6)    
    
var landimg = ee.ImageCollection('COPERNICUS/S2_SR')
                    .filterBounds(roi)
                    .filterDate('2022-04-10','2022-04-15')
                    .map(maskS2clouds)
                    .select(['B2','B3','B4','B8','B11','B12'])
                    .map(addVariables)
                    .mosaic()
                    .clip(roi)
                    
          
Map.addLayer(landimg, {bands: ['B4', 'B3','B2'],min: 0, max: 1,gamma:3,opacity:1},'landimg');  


//显示水体指数
var visParams = {min: -0.8, max: 0.8, palette: [ 'green','white','blue']};
Map.addLayer(landimg.select('AWEI'),visParams,'AWEI');
Map.addLayer(landimg.select('NDWI'),visParams,'NDWI');
Map.addLayer(landimg.select('MNDWI'),visParams,'MNDWI');
Map.addLayer(landimg.select('LSWI'),visParams,'LSWI');


var AWEI = landimg.select('AWEI');
var NDVI = landimg.select('NDVI');
var EVI = landimg.select('EVI');
var NDWI = landimg.select('NDWI');
var MNDWI = landimg.select('MNDWI');
var LSWI = landimg.select('LSWI');

// 通过阈值提取水体
var water_AWEI=AWEI.updateMask(AWEI.gt(0));
Map.addLayer(water_AWEI,{min: -1, max: 1,palette: ['white','blue']},'water_AWEI');

var water_NDWI=NDWI.updateMask(NDWI.gt(0));
Map.addLayer(water_NDWI,{min: -1, max: 1,palette: ['white','blue']},'water_NDWI');

var water_MNDWI=NDWI.updateMask(MNDWI.gt(0));
Map.addLayer(water_MNDWI,{min: -1, max: 1,palette: ['white','blue']},'water_MNDWI');


改后



// 去云
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 addVariables = function(image){
  var awei= image.expression(
              '4*(green-SWIR1)-(0.25*NIR+2.75*SWIR2)',{
              green:image.select('B3'),
              NIR:image.select('B8'),
              SWIR1:image.select('B11'),
              SWIR2:image.select('B12'),
            }).float().rename('AWEI')
  var ndwi = image.normalizedDifference(['B3','B8']).rename('NDWI')
  var mndvi = image.normalizedDifference(['B3','B11']).rename('MNDWI')
  var lswi = image.normalizedDifference(['B8','B11']).rename('LSWI')
  var ndvi = image.normalizedDifference(['B8','B4']).rename('NDVI')
  var evi= image.expression(
              '2.5*(NIR-RED)-(NIR+6*RED-7.5*BLUE+1)',{
              NIR:image.select('B8'),
              RED:image.select('B4'),
              BLUE:image.select('B2'),
            }).float().rename('EVI')
  return image.addBands([awei,ndwi,mndvi,lswi,ndvi,evi]);
}

// 研究区域
var roi = geometry;
Map.addLayer(roi,{"color":'red',},"roi")
Map.centerObject(roi, 6)    
    
var landimg = ee.ImageCollection('COPERNICUS/S2_SR')
                    .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
                    .filterBounds(roi)
                    .filterDate('2022-04-01','2022-04-15')
                    .map(maskS2clouds)
                    .select(['B2','B3','B4','B8','B11','B12'])
                    .map(addVariables)
                    .mosaic()
                    .clip(roi)

                    
          
Map.addLayer(landimg, {bands: ['B4', 'B3','B2'],min: 0, max: 1,gamma:3,opacity:1},'landimg');  


//显示水体指数
var visParams = {min: -0.8, max: 0.8, palette: [ 'green','white','blue']};
Map.addLayer(landimg.select('AWEI'),visParams,'AWEI');
Map.addLayer(landimg.select('NDWI'),visParams,'NDWI');
Map.addLayer(landimg.select('MNDWI'),visParams,'MNDWI');
Map.addLayer(landimg.select('LSWI'),visParams,'LSWI');


var AWEI = landimg.select('AWEI');
var NDVI = landimg.select('NDVI');
var EVI = landimg.select('EVI');
var NDWI = landimg.select('NDWI');
var MNDWI = landimg.select('MNDWI');
var LSWI = landimg.select('LSWI');

// 通过阈值提取水体
var water_AWEI=AWEI.updateMask(AWEI.gt(0));
Map.addLayer(water_AWEI,{min: -1, max: 1,palette: ['white','blue']},'water_AWEI');

var water_NDWI=NDWI.updateMask(NDWI.gt(0));
Map.addLayer(water_NDWI,{min: -1, max: 1,palette: ['white','blue']},'water_NDWI');

var water_MNDWI=NDWI.updateMask(MNDWI.gt(0));
Map.addLayer(water_MNDWI,{min: -1, max: 1,palette: ['white','blue']},'water_MNDWI');


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值