GEE学习笔记:在GEE中下载Sentinel-2影像

本文介绍了如何在Google地球引擎(GEE)中下载2019年4月1日至10月31日期间,覆盖北京市的Sentinel-2卫星影像,并进行云遮罩处理。通过设定过滤条件、应用云遮罩函数和导出设置,确保获得清晰的遥感图像。最终,将处理后的影像导出到Google云端硬盘并下载。

这里介绍如何下载Sentinel-2影像

实验区域:北京市

时间:2019-04-01至2019-10-31

var roi = table;  //table为自己上传的矢量边界

//去云
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')
                  .filterBounds(roi)
                  .filterDate('2019-04-01', '2019-10-31')
                  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 10))
                  .map(maskS2clouds)
                  .median()
                  .clip(roi);
     
var rgbVis = {
  min: 0.0,
  max: 0.3,
  bands: ['B4', 'B3', 'B2'],
};

Map.addLayer(dataset, rgbVis, 'dataset');
Map.centerObject(roi,7)

//显示roi
var styling = {color:"red",fillColor:"00000000"};
Map.addLayer(roi.style(styling),{},"boundary")

//导出数据
Export.image.toDrive({
  image: dataset,
  description: 'sentinel-2',
  crs: "EPSG:4326",
  scale: 10,
  region: roi,
  maxPixels: 1e13,
  folder: 'sentinel-2'
});




注:在导出数据时,设置"crs"为“EPSG:4326”,即设置导出的影像坐标系为WGS84

GEE中的显示结果:

在【Tasks】下点击RUN,等待上传Google云端硬盘,时间可能会久点,耐心等待。

 上传完成后,会显示一个对号,点击【Open in Drive】,找到文件下载即可。

 

<think>好的,用户的问题是如何在GEE下载和处理Landsat-8和Sentinel-2的多源时序遥感数据。我需要结合之前的回答和提供的引用内容来给出详细的步骤和建议。 首先,用户之前已经了解了影像合成的方法和工具,特别是GEE的使用。现在他们想具体实施下载和处理。我需要分步骤解释,从数据选择、预处理到合成导出,确保每个环节都覆盖关键点,比如去云、辐射校正、时空配准等。 然后,查看用户提供的引用文献,特别是引用[1]和[3]提到了使用机器学习方法进行作物分类和Sentinel-1/2数据融合,这可能对处理多源数据有帮助。但用户当前需求是下载和处理,所以可能需要参考引用[2]中提到的数据融合分析步骤。 需要注意用户可能存在的深层需求,例如处理后的数据用于何种分析(如农业监测或变化检测),但用户没有明确说明,所以保持通用流程。同时,用户可能需要代码示例,如JavaScript或Python,但根据之前的回答,GEE主要使用JavaScript,但也可以通过Python的geemap库操作,所以需要提供两种示例。 需要确保回答结构清晰,步骤分明,涵盖数据筛选、预处理、合成方法、导出等关键步骤,并引用相关文献中的方法,比如去云处理使用QA波段,辐射校正使用TOA或BOA,以及时间序列合成方法如中值合成和NDVI最大值合成。 另外,用户提到多源时序数据,可能需要融合Landsat和Sentinel数据,解决分辨率差异和波段匹配的问题,参考之前的解决方案,比如空间重采样和波段对应表转换。 最后,生成的相关问题需要与当前主题紧密相关,帮助用户进一步解决可能遇到的问题,如数据融合、云处理优化或机器学习应用。</think>#### 一、GEE中Landsat-8与Sentinel-2数据下载与处理全流程 以下步骤基于Google Earth Engine平台,结合多时相数据融合的最佳实践[^1][^3]: --- ##### **1. 数据筛选与加载** - **定义时空范围** ```javascript var geometry = ee.Geometry.Point([经, 纬]).buffer(10000); // 定义10公里缓冲区 var startDate = '2023-01-01'; var endDate = '2023-12-31'; ``` - **加载数据集** ```javascript // Landsat-8地表反射率数据(已辐射校正) var landsat = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2') .filterDate(startDate, endDate) .filterBounds(geometry) .select(['SR_B.*'], ['B2','B3','B4','B5','B6','B7']); // 重命名波段与Sentinel-2对齐 // Sentinel-2地表反射率数据(BOA) var sentinel = ee.ImageCollection('COPERNICUS/S2_SR') .filterDate(startDate, endDate) .filterBounds(geometry) .select(['B2','B3','B4','B8','B11','B12']); // 蓝、绿、红、NIR、SWIR1、SWIR2 ``` --- ##### **2. 数据预处理** - **去云处理** - **Sentinel-2**:利用`QA60`波段或`SCL`分类波段 ```javascript function maskS2Clouds(image) { var scl = image.select('SCL'); var cloudMask = scl.neq(8).and(scl.neq(9)); // 排除云(SCL=8/9) return image.updateMask(cloudMask); } sentinel = sentinel.map(maskS2Clouds); ``` - **Landsat-8**:使用`QA_PIXEL`波段 ```javascript var cloudBitMask = 1 << 3; // 云置信位掩码 var landsatMask = function(image) { var qa = image.select('QA_PIXEL'); var mask = qa.bitwiseAnd(cloudBitMask).eq(0); return image.updateMask(mask); }; landsat = landsat.map(landsatMask); ``` - **空间分辨率对齐** 将Landsat-8重采样至10米分辨率(与Sentinel-2高分辨率波段对齐): ```javascript landsat = landsat.map(function(image) { return image.resample('bilinear').reproject({crs: 'EPSG:4326', scale: 10}); }); ``` --- ##### **3. 多源时序数据合成** - **方法一:中值合成法** ```javascript var landsatComposite = landsat.median().clip(geometry); var sentinelComposite = sentinel.median().clip(geometry); ``` - **方法二:NDVI最大值合成(适用于植被分析)** ```javascript var addNDVI = function(image) { var ndvi = image.normalizedDifference(['B8','B4']).rename('NDVI'); // Sentinel-2 NDVI return image.addBands(ndvi); }; sentinel = sentinel.map(addNDVI); var sentinelMaxNDVI = sentinel.qualityMosaic('NDVI'); // 选择NDVI最高的像元 ``` - **多源数据融合(以Landsat补全Sentinel空缺)** ```javascript var fusedCollection = sentinel.merge(landsat); // 合并数据集 var fusedComposite = fusedCollection.median(); ``` --- ##### **4. 数据导出** - **导出至Google Drive** ```javascript Export.image.toDrive({ image: fusedComposite, description: 'L8_S2_Fused_2023', scale: 10, region: geometry, maxPixels: 1e13 }); ``` --- #### 二、关键问题解决方案 | **挑战** | **GEE实现方法** | |-------------------------|---------------------------------------------------------------------------------| | **传感器波段差异** | 使用`spectralResample()`将Landsat波段转换为Sentinel等效响应函数[^1] | | **时间序列间断** | 应用`linearInterpolation()`对缺失时段进行插值 | | **辐射一致性校正** | 采用`ee.Algorithms.Landsat.simpleComposite()`自动TOA校正与波段匹配 | --- #### 三、Python本地化处理(可选) 若需本地处理导出的数据,可使用以下工具链: ```python import ee import geemap import rasterio # 初始化GEE ee.Initialize() # 下载数据至本地 geemap.ee_export_image(fusedComposite, filename='fusion.tif', scale=10, region=geometry) # 使用xarray处理时序数据 ds = xr.open_dataset('fusion.tif') ds = ds.where(ds != 0) # 去除无效值 ``` --- ### 相关问题 1. 如何在GEE中处理Sentinel-2和Landsat-8的波段不匹配问题? 2. 导出大数据遥感影像时如何优化GEE的任务队列? 3. 多源时序数据融合后如何进行机器学习分类(如作物识别)[^1]?
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值