gee去云处理Landsat、Sentinel和Modis影像

gee去云处理Landsat、Sentinel和Modis影像

1.Landsat 和 MODIS影像的去云函数

function cloudfree_mod09a1(image){
  var qa = image.select('StateQA')
  var cloudState = bitwiseExtract(qa, 0, 1) 
  var cloudShadowState = bitwiseExtract(qa, 2)
  var cirrusState = bitwiseExtract(qa, 8, 9)
  var mask = cloudState.eq(0) // Clear
  .and(cloudShadowState.eq(0)) // No cloud shadow
  .and(cirrusState.eq(0)) // No cirrus
  return image.updateMask(mask)  
}

function cloudfree_landsat (image){
  var qa = image.select('pixel_qa')
  var cloudState = bitwiseExtract(qa, 5) 
  var cloudShadowState = bitwiseExtract(qa, 3)
  var mask = cloudState.eq(0) // Clear
  .and(cloudShadowState.eq(0)) // No cloud shadow
  return image.updateMask(mask)  
}

2.影像的筛选、去云和合成

Landsat8

var date_rg = ee.DateRange('2019-01-25','2019-12-30');
//利用时间和位置点筛选符合要求的影像
var imgcol = l8_imgcol.filterDate(date_rg).filterBounds(gz);
//对符合要求的影像进行合成
var raw_img = imgcol.mosaic();
//对符合要求的影像进行去云处理后合成
var cf_img = imgcol.map(cloudfree_landsat).mosaic();
//分别加载原始影像合成的结果和去云处理后影像的合成结果
Map.addLayer(raw_img,{min: 0, max: 3500, bands: ['B5', 'B4', 'B3']},'raw_img')
Map.addLayer(cf_img,{min: 0, max: 3500, bands: ['B5', 'B4', 'B3']},'cf_img')

Modis

//利用时间和位置点筛选符合要求的影像
var imgcol_m = modis_imgcol.filterDate(date_rg).filterBounds(gz)
对符合要求的影像进行合成
var raw_img_m = imgcol_m.mosaic();
//对符合要求的影像进行去云处理后合成
var cf_img_m = imgcol_m.map(cloudfree_mod09a1).mosaic();
//分别加载原始影像合成的结果和去云处理后影像的合成结果
Map.addLayer(raw_img_m,{min: 0, max: 3500, bands: ['sur_refl_b02', 'sur_refl_b01', 'sur_refl_b04']},'raw_img_m')
Map.addLayer(cf_img_m,{min: 0, max: 3500, bands: ['sur_refl_b02', 'sur_refl_b01', 'sur_refl_b04']},'cf_img_m')

Sentinel-2

#创建一个函数用来掩模云以及卷云
def maskS2clouds(image) {
#选择有关云掩膜的波段
  var qa = image.select('QA60')
  #位10和11分别代表云和卷云。
  var cloudBitMask = 1 << 10;
  var cirrusBitMask = 1 << 11;
  #将有关云的像元置为0
  var mask = qa.bitwiseAnd(cloudBitMask).eq(0).and(
             qa.bitwiseAnd(cirrusBitMask).eq(0))
  #掩模数据并选择多光谱波段,将反射率归为0-1复制时间属性
  return image.updateMask(mask).divide(10000)
      .select("B.*")
      .copyProperties(image, ["system:time_start"])
}
### 如何在 GEE 中对 Sentinel 卫星影像进行云处理 #### 使用 Sentinel-3 数据方法 对于 Sentinel-3 的 OLCI (Ocean and Land Color Instrument) 数据,可以采用特定算法来减少的影响。OLCI 提供全分辨率地球观测图像,在这些图像中识别并移除层是一个复杂的过程[^1]。 为了实现这一目标,通常会应用基于光谱特性的阈值法或其他高级技术如机器学习模型来进行区分。具体来说: - **光谱指数计算**:通过构建不同的植被、水体等特征指数可以帮助更精确地区分地面覆盖物与。 - **时间序列分析**:如果有多时相的数据,则可以通过比较同一地点不同时刻的状态变化情况辅助判断哪些像素被遮挡。 然而值得注意的是,上述提到的方法主要适用于具有较高空间分辨能力的传感器所获取的数据集;而对于 Sentinel-3 这样主要用于海洋陆地颜色监测的任务而言,其设计初衷并非针对高精度的地表细节成像,因此实际操作过程中可能需要调整策略以适应较低的空间分辨率特性。 ```javascript // JavaScript 示例代码片段用于说明概念而非直接执行 var sentinel3Collection = ee.ImageCollection('COPERNICUS/S3/OLCI') .filterDate('2023-01-01', '2023-12-31'); function maskClouds(image){ var cloudBitMask = ee.Number(2).pow(7).int(); // 假设第8位表示掩膜 var qaBand = image.select('quality_flags'); var mask = qaBand.bitwiseAnd(cloudBitMask).eq(0); return image.updateMask(mask); } var maskedImages = sentinel3Collection.map(maskClouds); ``` #### 利用 Sentinel-2 数据实施更为精细的方案 当涉及到更高分辨率的 Sentinel-2 MSI (MultiSpectral Instrument) 图像时,存在更加成熟完善的解决方案可供选择。这里介绍一种常见的做法——即结合 SCL(Scene Classification Map)波段信息完成自动化程度较高的流程[^2]。 这种方法不仅能够有效消除及其阴影影响,还能同步解决积雪干扰等问题。下面给出一段简化版的操作指南作为参考: ```javascript // 加载哨兵二号数据集合 var s2 = ee.ImageCollection("COPERNICUS/S2_SR"); // 定义过滤条件筛选所需时间段内的可用场景 var filtered = s2.filterBounds(geometry) .filterDate(startDate, endDate); // 应用预定义函数除不需要的部分(如) var cloudyPixelBitMask = ee.Number(2).pow(10).int(); var clearPixelsOnly = function(img){ var qa = img.select('QA60'); var mask = qa.bitwiseAnd(cloudyPixelBitMask).eq(0); return img.updateMask(mask); }; filtered = filtered.map(clearPixelsOnly); ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值