基于GEE使用Sentinel-2数据进行云掩膜及可视化研究

总体介绍

这段代码利用Google Earth Engine(GEE)处理Sentinel-2地表反射率数据,通过去除云层、裁剪感兴趣区域(ROI),并对处理后的数据进行可视化显示。

数据集

  • COPERNICUS/S2_SR_HARMONIZED: 这是Sentinel-2地表反射率数据集,提供10米分辨率的地表反射率数据。该数据集包含多个波段及质量评估信息,用于分析地表特征。

流程和功能

  1. 定义研究区和时间范围:将研究区定义geometry,并设置时间范围为2020年9月25日至26日。

  2. 去云处理:

    • 定义一个函数 maskS2clouds,利用质量评估波段(QA60)去除云层像元。
    • 通过位移运算去除云层和卷云覆盖的像元。
  3. 加载和筛选Sentinel-2数据集:

    • 加载Sentinel-2地表反射率数据集,并根据日期、地理范围和云覆盖率进行筛选。
    • 将满足条件的影像标记为来自Sentinel-2的数据源。
    • 应用去云处理函数 maskS2clouds,获取处理后的影像集合。
  4. 可视化处理结果:

    • 定义可视化参数,选择波段并设定数据范围。
    • 将处理后的影像集合的平均值添加到地图上进行显示。
    • 将原始影像集合和去云处理后的影像集合分别添加到地图上,以便进行比较。
  5. 输出筛选结果:

    • 输出满足筛选条件的影像数量,并打印每个影像的时间戳。
    • 将站点位置(zhandian)添加到地图上,以黄色标记显示。

运行结果

  • 可视化:生成并显示处理后的Sentinel-2地表反射率影像,去除了云层干扰,并将影像裁剪到指定的感兴趣区域。
  • 影像处理:去除了云层干扰,裁剪到指定区域,显示了特定波段的组合。
  • 地图显示:在地图上显示处理后的影像、感兴趣区域和站点位置,便于用户进行进一步的分析和研究。
  • 输出信息:打印了满足筛选条件的影像数量及每个影像的时间戳,便于了解数据的时间分布。

完整代码:

// 定义研究区,并将定义的研究区显示在下方中间
var geometry = table;
Map.centerObject(geometry, 9);

// 去云处理 
function maskS2clouds(image) {
  var qa = image.select('QA60');
  // 第10和11位分别是云和卷云。位移运算去云
  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).divide(10000);
}

// 定义时间范围
var startDate = '2020-09-25';
var endDate = '2020-09-26';

// 定义云阈值
var cloudThreshold = 100; 
  
  //sentinel-2数据集
var sentinel2 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')  
                  .filterBounds(geometry)
                  .filterDate(startDate, endDate)
                  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', cloudThreshold))
                  .map(function(image) {
                    return image.set('source', 'Sentinel-2');
                  });
                  
                  
var noclould =sentinel2.map(maskS2clouds)


// 可视化 
var visualization = {
  min: 0.0,
  max: 0.3,
  bands: ['B4', 'B3', 'B2'],
};
// 加载影像并居中显示 
Map.addLayer(sentinel2.mean().clip(geometry), visualization, 'data');
Map.addLayer(noclould.mean().clip(geometry), visualization, 'noclould');

// 输出筛选结果
var modisCount = sentinel2.size();
if (modisCount.getInfo() > 0) {
  print("已筛选出 " + modisCount.getInfo() + " 张影像");
} else {
  print("没有满足筛选条件的影像");
}

var sentinel2Clipped = sentinel2.map(function(image) {
  return image.clip(geometry);
});

sentinel2Clipped.aggregate_array('system:time_start').evaluate(function(dates) {
  var formattedDates = dates.map(function(date) {
    return new Date(date).toISOString(); // 输出年-月-日-时-分-秒
  });
  print('Sentinel-2 影像时间:', formattedDates);
});

//var zhandian=table2
//Map.addLayer(zhandian, {color: 'yellow'}, 'zhandian');

运行示例图:

原始影像:

去云的影像:

工作台输出:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值