GEE利用哨兵2号计算NDBI(空洞用前后时段影像补空值)

这篇博客介绍了如何利用Google Earth Engine(GEE)平台和哨兵2号卫星数据,结合算法进行云遮挡处理,并通过前后时段影像补空值计算归一化差异水体指数(NDBI)。文章详细展示了数据过滤、云遮挡掩模、时间差分插值以及NDBI计算的过程,提供了完整的GEE代码示例。
摘要由CSDN通过智能技术生成

//输入目标区域


var geometry = table;
Map.addLayer(geometry, {color: 'red'}, 'Farm')
Map.centerObject(geometry)
var s2 = ee.ImageCollection("COPERNICUS/S2_SR");
var filtered = s2
  .filter(ee.Filter.date('2019-07-01', '2019-08-31'))//修改数据时间范围
  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 30))
  .filter(ee.Filter.bounds(geometry))
// Write a function for Cloud masking
function maskCloudAndShadowsSR(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).set(image.toDictionary(image.propertyNames()))
      .select("B.*")
      .copyProperties(image, ["system:time_start"]);
}
var filtered = filtered.map(maskCloudAndShadowsSR)
//在有效像素下添加时间信息,便于后续利用
var filtered = filtered.map(function(image) {

  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
GEE中,可以使用Sentinel-2影像计算每月的NDVI,并且可以使用哨兵影像的数据来实现这个目的。下面是一个计算2018-2020年每月NDVI的代码实现: ```javascript // 定义计算NDVI函数 var addNDVI = function(image){ var ndvi = image.normalizedDifference(['B8', 'B4']).rename('NDVI'); return image.addBands(ndvi); }; // 定义日期范围 var startDate = '2018-01-01'; var endDate = '2020-12-31'; var startYear = 2018; var endYear = 2020; // 加载哨兵影像 var sentinel2 = ee.ImageCollection('COPERNICUS/S2_SR') .filterBounds(geometry) .filterDate(startDate, endDate) .map(addNDVI); // 将每个月的影像合并成一个影像 var months = ee.List.sequence(1, 12); var years = ee.List.sequence(startYear, endYear); var byMonthYear = ee.ImageCollection.fromImages( years.map(function (y) { return months.map(function (m) { var monthImage = sentinel2.filter(ee.Filter.calendarRange(y, y, 'year')) .filter(ee.Filter.calendarRange(m, m, 'month')) .reduce(ee.Reducer.mean()); return monthImage.set('year', y).set('month', m).set('system:time_start', ee.Date.fromYMD(y, m, 1)); }); }).flatten()); // 将每个月的NDVI作为一个图层添加到地图上 var ndviPalette = ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901', '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01', '012E01', '011D01', '011301']; var ndviParams = {min: -0.2, max: 1, palette: ndviPalette}; byMonthYear = byMonthYear.map(function(image){ return image.clip(geometry); }); Map.addLayer(byMonthYear.select('NDVI'), ndviParams, 'NDVI'); ``` 这个代码实现首先定义了一个计算NDVI的函数`addNDVI`,然后加载了哨兵影像,将每个月的影像合并成一个影像,并将每个月的NDVI作为一个图层添加到地图上。其中,`ndviPalette`是一个NDVI的颜色调色板,用于将NDVI值转换为对应的颜色。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值