GEE 按月份处理遥感数据特征变量(各月份NDVI均值合成,含完整代码链接)

按月份提取遥感数据特征,可以比较好地反映数据的变化趋势,同时又由于数据缺失、成像质量等因素,每个月份的可用数据量可能比较小,那么合成得到的数据结果仍有可能具有一些异常值,而多年的数据,不考虑年份,只按照所属月份进行提取合成,可以较好地解决这一问题。
这里以Sentinel-2数据为例。
首先加载Sentinel-2数据,后面会对数据进行去云,因此在对数据筛选的时候,没有对影像含云量进行过滤。

//哨兵2 光学数据集
var dataset_s2 = ee.ImageCollection('COPERNICUS/S2')
    .filterBounds(roi_cm).filter(ee.Filter.date(startDate, endDate))
    .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 100))

Sentinel-2影像去云函数。QA60波段按位存储像元含云量信息,根据该波段可去掉有云像元。

//  /*---------------去云函数---------------*\

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); 
} 

Sentinel-2影像添加变量波段函数。根据研究需要,对数据添加计算得到的NDVI等特征。

var addVariables = function(image) {
   return image
    // Add an NDVI band.
    .addBands(image.normalizedDifference(['B8', 'B4']).rename('NDVI')).float()
    // //Add an NDBI band.
    .addBands(image.normalizedDifference(['B6', 'B4']).rename('NDBI')).float()
  //Add an MNDWI band.
    .addBands(image.normalizedDifference(['B3', 'B8']).rename('MNDWI')).float()
  

     
};

Sentinel-2数据调用去云函数与添加变量波段函数,先去云再计算特征变量。

var imgCol_s2=dataset_s2.map(rmCloudByQA).map(addVariables);

以NDVI特征为例,进行按月均值合成。

var NDVI=imgCol_s2.select('NDVI');
  var MonthlyDataCol = NDVI.filter(ee.Filter.calendarRange(1,  1,'month'))
  .mean().rename('NDVI1');
var MonthlyDataColNDVI=MonthlyDataCol;

  for(var j=2;j<=12;j++){
    var data_collection = NDVI.filter(ee.Filter.calendarRange(j,  j,'month')).mean().clip(roi_cm);   
    
    var StringBandName='NDVI'+j.toString();
    var monthlydata=data_collection.select('NDVI').rename(StringBandName);
  
    MonthlyDataColNDVI=ee.Image.cat([MonthlyDataColNDVI,monthlydata.select(StringBandName)]);

  
  
  }
  print(MonthlyDataColNDVI.getInfo());

这里比较关键的是用到了ee.Filter.calender(start,end,field)函数,函数解释如下,根据field对时间进行筛选,如果field为’month’,就是按照起止月份筛选,想要筛选一月份的数据,就是ee.Filter.calender(1,1,‘month’),添加循环自动计算一月份、二月份…十二月份的数据,提取数据后按照需求进行均值、最值等不同处理方式合成即可。
在这里插入图片描述完整代码链接:GEE-各月份NDVI均值合成
https://code.earthengine.google.com/24b69d45a2df14c6915ad231cd6c4336

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值