再会
我正在尝试使用 Landsat 7 和 8 数据在 Google Earth Engine 中生成增强型植被指数 (EVI)。我已经编译了下面的代码来过滤特定时间段和感兴趣区域的图像集合,并掩盖图像中的大部分云层。然后我开始计算 EVI 并将这些值作为属性添加到图像集合中,我可以选择该属性进行进一步处理。我已经为 Landsat 7 和 Landsat 8 分别进行了这个过程。但是,由于我对从这两个数据集生成的 EVI 感兴趣,我将它们合并到一个图像集中。
使用此图像集,我想计算特定感兴趣区域的平均 EVI 值,然后将这些值与相关日期(格式为 dd-mm-yyyy)一起导出为“.csv”文件。我知道这可以通过单击生成的图表并下载相关的“.csv”文件或使用“Export.table.toDrive”功能导出数据来实现。但是,这些选项都没有提供如下表所示结构中的输出。
此处提供了代码示例。对此的任何帮助将不胜感激。亲切的问候。
/// Add region of interest
var ROI = ee.FeatureCollection("users/shaedengokool/Eben_Sluis_15YO")
Map.addLayer(ROI, {}, 'ROI')
Map.centerObject(ROI, 10)
//1. Import the Landsat 8 TOA image collection.
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) {
// Get a cloud score in [0, 100].
var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud');
// Create a mask of cloudy pixels from an arbitrary threshold.
var mask = cloud.lte(10);
// Compute 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');
// Return the masked image with an EVI band.
return image.addBands(evi).updateMask(mask);
});
var L8EVI_collection = L8cloudlessEVI
//2. Import the Landsat 7 TOA image collection.
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) {
// Get a cloud score in [0, 100].
var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud');
// Create a mask of cloudy pixels from an arbitrary threshold.
var mask = cloud.lte(10);
// Compute 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');
// Return the masked image with an EVI band.
return image.addBands(evi).updateMask(mask);
});
var L7EVI_collection = L7cloudlessEVI
var merged = ee.ImageCollection(L7EVI_collection.merge(L8EVI_collection));
print(merged, 'Merged')
var chart = ui.Chart.image.series({
imageCollection: merged.select('EVI'),
region: ROI,
reducer: ee.Reducer.mean(),
scale: 30,
})
print(chart, "EVI")
// get the mean value for the region from each image
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
});
// and return a feature with 'null' geometry with properties (dictionary)
return ee.Feature(null, {'mean': mean.get('EVI'),
'date': date})
});
// Export a .csv table of date, mean NDVI for watershed
Export.table.toDrive({
collection: meanEVI,
description: 'EVI_Timeseries',
folder: 'Genus_Exchange_GEE_Data',
fileFormat: 'CSV',
})
;