【GEE】Sentinel-2 数据 实现官方云概率数据集高效去云、NDVI指数计算、同期影像合并、批量导出操作


一、前言


GEE官方提供了一个云概率数据集 【点击链接可跳转至详情网页】,该数据集中仅有一个波段

在这里插入图片描述
其中,针对该波段的官方描述是这样的:

S2 cloud probability 是使用 Sentinel2-cloud- detector 库(使用 LightGBM)创建的。在应用梯度增强基础算法之前,所有频段均使用双线性插值上采样至 10m 分辨率。生成的 0…1 浮点概率缩放为 0…100 并存储为 UINT8。缺少任何或所有条带的区域被遮盖掉。较高的值更有可能是云或高反射表面(例如屋顶或雪)。


二、GEE利用 云概率数据集 对哨兵影像进行去云

传统的 QA60 波段位运算去云函数

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

为了进一步去除细碎云、细小云可进一步利用 S2 cloud probability 数据集进行去云操作

//提取云概率波段的函数,并制作掩膜数据
function rmcloudByProbability(image,thread){
   
  var prob = image.select("probability");
  return image.updateMask(prob.lte(thread));
}

//数据集合并函数
function getMergeImages(primary, secondary){
   
  var join = ee.Join.inner();
  var filter = ee.Filter.equals({
   
    leftField: "system:index",
    rightField: "system:index",
  });
  var joinCol = join.apply(primary, secondary, filter);
  joinCol = joinCol.map(function(image){
   
    var img1 = ee.Image(image.get("primary"));
    var img2 = ee.Image(image.get("secondary"));
    return img1.addBands(img2);
  });
  return ee.ImageCollection(joinCol);
}

//设定时间间隔 
var dates=['2023-01-11','2023-01-30'];
var startDate = ee.Date(dates[0]);
var endDate = ee.Date(dates[1]);

var S2_images1 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
                  .filterDate(startDate,endDate)
                  .filterBounds(roi);
var S2_images2 = ee.ImageCollection("COPERNICUS/S2_CLOUD_PROBABILITY")
                  .filterDate
好的,以下是使用 Sentinel-2 数据GEE计算一年平均 NDVI 并下载 NDVI 的代码示例: ```javascript var s2 = ee.ImageCollection('COPERNICUS/S2_SR') .filterDate('2021-01-01', '2021-12-31') .filterBounds(geometry); var addNDVI = function(image) { var ndvi = image.normalizedDifference(['B8', 'B4']).rename('NDVI'); return image.addBands(ndvi); }; var s2WithNDVI = s2.map(addNDVI); var ndvi = s2WithNDVI.select('NDVI'); var meanNDVI = ndvi.mean(); Export.image.toDrive({ image: meanNDVI, description: 'mean_ndvi_2021', scale: 10, region: geometry }); ``` 这段代码与上一个示例代码类似,只不过这里增加了将结果导出到 Google Drive 的代码。`Export.image.toDrive` 函数可以将计算结果导出为 GeoTIFF 文件。您需要指定导出的图像、文件名、空间分辨率、导出区域等参数。 导出完成后,您可以在 Google Drive 中找到导出的文件,并进行下载。如果您使用的是 Colab 或者 Jupyter Notebook,您也可以使用以下代码将文件下载到本地: ```python from google.colab import drive drive.mount('/content/drive') import ee ee.Authenticate() ee.Initialize() region = ee.Geometry.Rectangle([lon_min, lat_min, lon_max, lat_max]) image = ee.Image('GEE_IMAGE_ID') task = ee.batch.Export.image.toDrive(image, 'IMAGE_NAME', region=region.getInfo(), scale=30) task.start() ``` 其中,'GEE_IMAGE_ID' 是导出的图像在 GEE 中的 ID,'IMAGE_NAME' 是导出的文件名,在下载时需要修改为实际的文件名。这段代码需要在 Colab 或者 Jupyter Notebook 中运行,并且需要授权 GEE 访问 Google Drive。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值