目录
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 的使用,让我们一起在地球科学的研究道路上不断探索!