利用GEE提取哨兵-2卫星影像的站点反射率数据

概述

本代码在Google Earth Engine (GEE)平台上实现了对ROI区域2020年9月期间的哨兵-2卫星影像进行提取、处理和站点反射率数据的导出。主要功能包括加载指定区域,去除云层干扰,提取站点反射率数据并导出为CSV文件。

数据集介绍

使用的数据集是哨兵-2卫星影像数据集(COPERNICUS/S2_SR),该数据集提供了高分辨率的多光谱影像,适用于土地覆盖分类、农业监测和环境监测等应用。

流程与功能

  1. 定义研究区:通过矢量文件(geometry)获取指定城市的研究区域,并在地图上显示。
  2. 去云处理:通过选择影像中的质量评估带(QA60),去除云层和卷云。
  3. 筛选影像数据:根据研究区域、时间范围和云量百分比过滤影像数据,并应用去云函数。
  4. 可视化影像:设置可视化参数,并将影像加载到地图中进行显示。
  5. 提取点数据:选择一个影像,用于提取站点(table3)的反射率数据。
  6. 导出数据:将提取的反射率数据导出为CSV文件,便于进一步分析和应用。

运行结果

运行结果是生成了一幅覆盖ROI区域的哨兵-2卫星影像图,该图去除了云层干扰,并在地图上进行了展示。同时,从影像中提取的站点反射率数据被导出为CSV文件,便于后续的分析和研究工作。

完整代码:

//Map.addLayer(table3)  //站点shp
//Map.addLayer(table4)  //水体shp

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


//去云处理 
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 dataset = ee.ImageCollection('COPERNICUS/S2_SR')
                  .filterDate('2020-09-01', '2020-09-30')
                  // 预先过滤以获得较少的云量。
                  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',20))
                  .filterBounds(geometry)
                  .map(maskS2clouds);
//可视化 
var visualization = {
  min: 0.0,
  max: 0.3,
  bands: ['B4', 'B3', 'B2'],
};
//加载影像并居中显示 
Map.addLayer(geometry);
Map.addLayer(dataset.mean().clip(geometry), visualization, 'RGB');
Map.addLayer(table3);




//选择一个影像用于提取点的数据
var image = dataset.first();


// //从图像中提取点的数据
// var points = table3;
// var pointsWithValues = image.sampleRegions({
//   collection: points,
//   scale: 10,
// });

// //将提取的数据导出为CSV文件
// Export.table.toDrive({
//   collection: pointsWithValues,
//   description: 'Sentinel2_Reflectance_Values',
//   fileFormat: 'CSV'
// });


运行示例:

### 使用 Google Earth Engine API 下载 Sentinel-2 影像提取叶面积分数 (FVC) #### 准备工作 为了能够顺利操作,需先安装 `earthengine-api` Python 库,并完成身份验证过程。这一步骤确保可以访问 GEE 平台上的资源。 ```bash pip install earthengine-api ``` 接着初始化地球引擎: ```python import ee ee.Initialize() ``` #### 定义研究区域和时间范围 定义感兴趣区(AOI),这里以中国为例设置地理边界;同时指定所需的时间窗口来筛选影像集合。 ```python aoi = ee.Geometry.Polygon( [[[108.79, 34.5], [108.79, 34.0], [110.46, 34.0], [110.46, 34.5]]]) start_date = '2023-01-01' end_date = '2023-01-31' ``` #### 获取 Sentinel-2 数据集 通过调用特定函数获取经过预处理的哨兵二号多光谱产品(S2MSI2A), 这些图像是已经过大气校正且具有较高几何精度的产品[^1]。 ```python s2_sr = ee.ImageCollection('COPERNICUS/S2_SR') \ .filterBounds(aoi) \ .filterDate(start_date, end_date) \ .sort('CLOUDY_PIXEL_PERCENTAGE', False) ``` #### 计算植被覆盖度(Fractional Vegetation Cover,FVC) 基于归一化差异植被指数(NDVI) 来估算 FVC 值。此方法假设 NDVI 和 FVC 存在线性关系,在实际应用中可能需要根据不同地区调整参数取值。 ```python def add_ndvi(image): ndvi = image.normalizedDifference(['B8','B4']).rename('ndvi') return image.addBands(ndvi) fvc_image = s2_sr.map(add_ndvi).select('ndvi').mean() # 将 NDVI 转换为 FVC min_ndvi = 0.2 max_ndvi = 0.8 fvc = fvc_image.expression( '(ndvi-min)/(max-min)', { 'ndvi': fvc_image, 'min': min_ndvi, 'max': max_ndvi}).clamp(0, 1).multiply(100).toInt().rename('fvc') task = ee.batch.Export.image.toDrive({ 'image': fvc, 'description': 'Export_FVC', 'folder': 'GEE_Results', 'region': aoi.getInfo()['coordinates'], 'scale': 10, 'crs': 'EPSG:4326', }) task.start() print("任务已提交") ``` 上述代码片段实现了从 sentinel-2 中选取合适的波段组合计算 NDVI ,进而转换成 FVC 。最后导出结果到用户的谷歌云端硬盘账户下指定文件夹内[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值