目录
1 代码解析
1.1 地理区域设定
1.2 数据获取
1.3 计算年蒸散量
1.4 生成年蒸散量图像集合
1.5 数据导出
1.6 绘制年际变化图表
2 完整代码
3 运行结果

1 代码解析
1.1 地理区域设定
var geometry = table; 
Map.centerObject(geometry, 6); 
这部分代码把 table 赋值给 geometry,并且将地图中心定位到这个区域,缩放级别设为 6。
1.2 数据获取
var dataset1 = ee.ImageCollection("NASA/GLDAS/V20/NOAH/G025/T3H");
var dataset2 = ee.ImageCollection("NASA/GLDAS/V021/NOAH/G025/T3H"); 
这里我们从 GEE 的数据仓库里获取了两个不同版本的 GLDAS 数据集,它们包含了蒸散量相关的数据。
1.3 计算年蒸散量
var getAnnualET = function(year, dataset) {var startDate = ee.Date.fromYMD(year, 1, 1);var endDate = ee.Date.fromYMD(year, 12, 31);return dataset.filterDate(startDate, endDate).select('Evap_tavg').sum().multiply(10800).clip(geometry).set('year', year);
}; 
getAnnualET 函数用于计算指定年份的年蒸散量。它先确定该年份的起始和结束日期,接着筛选出对应时间段的数据,选取蒸散量平均值这一波段,把该年的蒸散量数据累加起来,再乘以 10800 进行单位换算,最后裁剪到指定的地理区域,并给结果图像设置年份属性。
1.4 生成年蒸散量图像集合
var years1 = ee.List.sequence(1948, 1999);
var years2 = ee.List.sequence(2000, 2024);var annualImages = ee.ImageCollection.fromImages(years1.map(function(y) { return getAnnualET(y, dataset1); }).cat(years2.map(function(y) { return getAnnualET(y, dataset2); }))
); 
我们把 1948 - 1999 年和 2000 - 2024 年分成两个时间段,分别调用 getAnnualET 函数计算每年的蒸散量,最后把这些结果合并成一个图像集合。
1.5 数据导出
years1.cat(years2).getInfo().forEach(function(year) {var image = annualImages.filter(ee.Filter.eq('year', year)).first();Export.image.toDrive({image: image,description: year + '_ET',fileNamePrefix: year + '_ET',scale: 27830,region: geometry,maxPixels: 1e13,crs: "EPSG:4326",folder: 'GLDAS_ET'});
}); 
这部分代码会把每年的蒸散量图像导出到 Google Drive 里,文件名包含年份信息,方便后续的分析和使用。
1.6 绘制年际变化图表
var chart = ui.Chart.image.series({imageCollection: annualImages,region: geometry,reducer: ee.Reducer.mean(),scale: 27830,xProperty: 'year'
}).setOptions({title: 'Interannual Variation of Evapotranspiration',hAxis: { title: 'Year', gridlines: { count: 10 } },vAxis: { title: 'Evapotranspiration (mm/year)' },lineWidth: 1,pointSize: 2,series: { 0: { color: 'black' } }
});print(chart); 
最后,我们利用 ui.Chart.image.series 函数绘制了蒸散量的年际变化图表,横坐标是年份,纵坐标是年蒸散量(单位:mm/year),这样可以直观地看到蒸散量随时间的变化趋势。
2 完整代码
var geometry = table; 
Map.centerObject(geometry, 6);var dataset1 = ee.ImageCollection("NASA/GLDAS/V20/NOAH/G025/T3H");
var dataset2 = ee.ImageCollection("NASA/GLDAS/V021/NOAH/G025/T3H");var getAnnualET = function(year, dataset) {var startDate = ee.Date.fromYMD(year, 1, 1);var endDate = ee.Date.fromYMD(year, 12, 31);return dataset.filterDate(startDate, endDate).select('Evap_tavg').sum().multiply(10800).clip(geometry).set('year', year);
};var years1 = ee.List.sequence(1948, 1999);
var years2 = ee.List.sequence(2000, 2024);var annualImages = ee.ImageCollection.fromImages(years1.map(function(y) { return getAnnualET(y, dataset1); }).cat(years2.map(function(y) { return getAnnualET(y, dataset2); }))
);years1.cat(years2).getInfo().forEach(function(year) {var image = annualImages.filter(ee.Filter.eq('year', year)).first();Export.image.toDrive({image: image,description: year + '_ET',fileNamePrefix: year + '_ET',scale: 27830,region: geometry,maxPixels: 1e13,crs: "EPSG:4326",folder: 'GLDAS_ET'});
});var chart = ui.Chart.image.series({imageCollection: annualImages,region: geometry,reducer: ee.Reducer.mean(),scale: 27830,xProperty: 'year'
}).setOptions({title: 'Interannual Variation of Evapotranspiration',hAxis: { title: 'Year', gridlines: { count: 10 } },vAxis: { title: 'Evapotranspiration (mm/year)' },lineWidth: 1,pointSize: 2,series: { 0: { color: 'black' } }
});print(chart);
 
3 运行结果
 
 通过上述代码,我们成功地利用 GEE 分析了指定区域蒸散量的年际变化。希望这篇推文能帮助你更好地掌握 GEE 的使用,让我们一起在地球科学的研究道路上不断探索!
