【GEE】基于GEE可视化和下载Sentinel2 L2A数据(去云、镶嵌、裁剪、筛选波段)

本文作者RS迷途小书童分享了如何在GoogleEarthEngine(GEE)中使用代码下载并处理Sentinel-2L2A数据,包括时间筛选、云量过滤、图像镶嵌和波段选择,以便高效下载所需数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        今天连续发了4篇关于Landsat8数据的下载代码,本来都不想再发GEE这个专栏的文章了,但是又想了想都快过年了,赶紧把手里的代码余货都分享出去吧,省的心里有压力。本篇文章主要分享了GEE可视化和下载Sentinel2 L2A数据。

原创作者:RS迷途小书童

博客地址:https://blog.csdn.net/m0_56729804?type=blog

        代码主要包含了时间、云量筛选数据集,对数据进行中值合成、镶嵌、裁剪等操作,最后加入筛选波段的代码,仅导出我们需要的波段,以免数据过大。

        PS:即使镶嵌后,下载时也会分4-5幅,这是因为GEE的限制问题,哨兵数据太大了一个市将近3个G,Landsat数据就没事。

一、代码部分

//作者:RS迷途小书童
//博客:https://blog.csdn.net/m0_56729804?type=blog

Map.centerObject(table,10);
//这里可调整加载时影像的显示大小
var style_set = {color:"red",fillColor:"00000000"};
Map.addLayer(table.style(style_set),{}, 'ROI')

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

var dataset = ee.ImageCollection('COPERNICUS/S2_SR')//S2==L1C
                  .filterBounds(table)
                  .filterDate('2020-04-01', '2020-10-31')
                  // Pre-filter to get less cloudy granules.
                  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',10))
                  .map(maskS2clouds)
                  .median()
                  .clip(table);
                  //.select(['B4', 'B3', 'B2']);
print(dataset);

var mergedImage = dataset.select('B1','B2','B3','B4','B5','B6','B7','B8','B8A','B9','B11','B12');
print(mergedImage);

var rgbVis = {
  min: 0.0,
  max: 0.3,
  bands: ['B4', 'B3', 'B2'],
};
 
Map.addLayer(mergedImage, rgbVis, 'RGB');                 
// //镶嵌裁剪函数,减少之后的工作量
// var mosaic = exportdataset.mosaic().clip(table);
  
  Export.image.toDrive({
      image:mergedImage,
      description:'2023',//Tasks名称
      folder: 'Sentinel2-L2A',//云盘文件夹
      scale:10,
      maxPixels: 1e13,
      region:table,
      fileFormat: 'GeoTIFF',
      crs: "EPSG:4326",//投影坐标系
      formatOptions: {
        cloudOptimized: true
      }
    });

二、结果展示

        我平时用GEE比较少,大量时间都是使用Python去处理数据,但是用的少也还是会一点的。令人失望的是网上有很多教程都是VIP文章或者时间周期太长,导致代码不能使用,对于没接触过代码的新手来说很不友好。我希望能在力所能及的范围内尽可能多地去分享一些GEE的基本操作,如果大家感兴趣也可以一起留言交流。

### Google Earth Engine 哨兵 数据可视化 方法 在 GEE 中,哨兵Sentinel-1)数据可视化可以通过多种方式实现。以下是具体方法: #### 1. 加载 Sentinel-1 数据集 为了进行可视化操作,首先需要加载 Sentinel-1 数据集。这一步骤通常通过 `ee.ImageCollection` 来完成。例如,可以选择特定的时间范围地理区域来筛选数据。 ```javascript var sentinel1 = ee.ImageCollection('COPERNICUS/S1_GRD') .filterDate('2020-01-01', '2020-12-31') // 时间过滤 .filterBounds(geometry); // 地理边界过滤 ``` 上述代码片段展示了如何加载并过滤 Sentinel-1 数据集合[^1]。 #### 2. 转换为 dB 值 由于 Sentinel-1 提供的数据通常是线性强度值,在实际应用中更常用的是将其转换为分贝(dB)单位以便于分析展示。这种转换可通过以下公式实现: \[ \text{dB} = 10 * \log_{10}(I) \] 其中 \( I \) 表示原始强度值。在 GEE 中可使用如下代码执行此操作: ```javascript var dbImage = sentinel1.select('VH').map(function(image){ return image.log10().multiply(10).rename('VH_db'); }); ``` 这段脚本选取了 VH 极化通道,并对其进行了对数变换以获得 dB 值[^2]。 #### 3. 可视化参数设置 一旦完成了必要的预处理工作,则需定义合适的渲染参数来进行地图上的显示。对于 Sentinel-1 的 SAR 图像而言,常见的做法是指定最小最大亮度界限以及色彩映射方案。 ```javascript Map.addLayer(dbImage, {min:-25,max:0}, 'SAR Image in dB scale'); ``` 这里设置了 `-25` 到 `0` 的动态范围作为默认显示区间。 #### 4. 高级纹理特征提取 如果希望进一步增强图像质量或者突出某些地表特性,还可以考虑引入高级算法比如灰度共生矩阵(GLCM),它能够有效捕捉局部模式变化情况从而反映表面粗糙程度等信息。 ```javascript // 计算 GLCM 对比度 var glcmContrast = ee.Algorithms.Landsat.hardGlcm(sentinel1.first(), { size: 7, bins: 8, }).select('contrast'); Map.addLayer(glcmContrast, {}, 'GLCM Contrast'); ``` 尽管该例子基于 Landsat 函数构建而成,但是其原理同样适用于其他类型的遥感影像包括 Sentinel 系列产品[^3]。 --- ###
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RS迷途小书童

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值