如何在Google Earth Engine中导出带自定义格式日期的EVI属性CSV
GEE平台EVI时序ROI均值导出需求
您好。
我目前在Google Earth Engine上基于Landsat 7、Landsat 8数据开展增强型植被指数(EVI)生产工作,已完成的处理流程包括:
- 按指定时间范围、感兴趣区域(ROI)筛选影像集,掩膜移除影像中高云覆盖的像元
- 逐景计算EVI值,将结果作为独立波段嵌入对应影像,便于后续环节调用
- 分别完成Landsat 7、Landsat 8数据集的上述全流程处理后,将两个来源的EVI影像集合并为统一的影像集合。
基于合并后的影像集,我需要计算指定ROI范围内的平均EVI值,最终将所有数值及对应的观测日期(日期格式要求为dd-mm-yyyy)导出为CSV文件。
我已知两种常规导出方式:一是点击界面生成的时序图表直接下载对应CSV,二是调用Export.table.toDrive函数导出结果,但这两种方式都无法生成我需要的指定结构的表格输出(已附目标结构的示例截图)。
我当前的测试代码如下,恳请各位提供协助。
/// 定义感兴趣区域 var ROI = ee.FeatureCollection("users/shaedengokool/Eben_Sluis_15YO") Map.addLayer(ROI, {}, 'ROI') Map.centerObject(ROI, 10) //1. 导入Landsat 8 TOA影像集 var l8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA') .filterDate('2002-01-01','2020-01-01') .filterBounds(ROI) .map(function(image){return image.clip(ROI)}) var L8cloudlessEVI = l8.map(function(image) { // 获取范围在[0,100]的云评分 var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud'); // 基于设定阈值生成云像元掩膜 var mask = cloud.lte(10); // 计算EVI var evi = image.expression( '2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))', { 'NIR': image.select('B5'), 'RED': image.select('B4'), 'BLUE': image.select('B2') }).rename('EVI'); // 返回带EVI波段的掩膜后影像 return image.addBands(evi).updateMask(mask); }); var L8EVI_collection = L8cloudlessEVI //2. 导入Landsat 7 TOA影像集 var l7 = ee.ImageCollection('LANDSAT/LE07/C01/T1_TOA') .filterDate('2002-01-01','2020-01-01') .filterBounds(ROI) .map(function(image){return image.clip(ROI)}) var L7cloudlessEVI = l7.map(function(image) { // 获取范围在[0,100]的云评分 var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud'); // 基于设定阈值生成云像元掩膜 var mask = cloud.lte(10); // 计算EVI var evi = image.expression( '2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))', { 'NIR': image.select('B4'), 'RED': image.select('B3'), 'BLUE': image.select('B1') }).rename('EVI'); // 返回带EVI波段的掩膜后影像 return image.addBands(evi).updateMask(mask); }); var L7EVI_collection = L7cloudlessEVI var merged = ee.ImageCollection(L7EVI_collection.merge(L8EVI_collection)); print(merged, '合并后的影像集') var chart = ui.Chart.image.series({ imageCollection: merged.select('EVI'), region: ROI, reducer: ee.Reducer.mean(), scale: 30, }) print(chart, "ROI平均EVI时序图") // 逐景计算ROI范围内的平均EVI值 var meanEVI = merged.map(function(image){ var date = image.get('system:time_start'); var mean = image.reduceRegion({ reducer: ee.Reducer.mean(), geometry: ROI, scale: 30 }); // 返回空几何的Feature,携带均值和日期属性 return ee.Feature(null, {'mean': mean.get('EVI'), 'date': date}) }); // 导出包含日期、平均EVI值的CSV表格至Google Drive Export.table.toDrive({ collection: meanEVI, description: 'EVI_Timeseries', folder: 'Genus_Exchange_GEE_Data', fileFormat: 'CSV', })
内容的提问来源于stack exchange,提问作者Shaeden Gokool
相关产品推荐
相关产品推荐

