相对湿度均值用气温(temperature_2m)和露点温度(dewpoint_temperature_2m)这两个波段结合Magnus-Tetens近似公式计算。
以下代码预计计算era5中的每年每8天的均值并输出。
var nmg =**********;
function saturationVaporPressure(T_image) {
// Magnus-Tetens公式
var es = ee.Image(6.112).multiply(
T_image.expression(
'exp((17.67 * T) / (T + 243.5))',
{ 'T': T_image // 这里将 T_image 作为表达式中的 Td_C
} )
);
return es;
}
function calculateRH(T, Td) {
// 将温度从K转换为°C
var Td_C = Td.subtract(273.15).rename('Td_C');
var T_C = T.subtract(273.15).rename('T_C');
// 使用Magnus-Tetens公式计算饱和水汽压
var esTd_C = saturationVaporPressure(Td_C).rename('esTd_C');
var esT_C = saturationVaporPressure(T_C).rename('esT_C');
// 计算相对湿度
var RH = esTd_C.divide(esT_C).multiply(100).rename('RH');
return RH;
}
// 定义一个函数来计算给定日期范围内的8天均值相对湿度
// 设置年份循环
for (var i = 2000; i <= 2020; i++) {
// 定义日期字符串数组(示例)
// 注意:这里需要确保日期范围覆盖整个年份,并且符合8天的间隔
// ...(你可以继续使用你定义的startDateStrings,但确保它们正确设置)
var startDateStrings = [i + '-01-01',i + '-01-09',i + '-01-17',i + '-01-25',
i + '-02-02',i + '-02-10',i + '-02-18',i + '-02-26',i + '-03-06',i + '-03-14',
i + '-03-22',i + '-03-30',i + '-04-07',i + '-04-15',i +'-04-23',i + '-05-01',
i + '-05-09',i + '-05-17',i + '-05-25',i + '-06-02',i + '-06-10',i + '-06-18',
i + '-06-26',i + '-07-04',i + '-07-12',i + '-07-20',i + '-07-28',i + '-08-05',
i + '-08-13',i +'-08-21',i + '-08-29',i +'-09-06',i + '-09-14',i + '-09-22',
i + '-09-30',i + '-10-08',i + '-10-16',i + '-10-24',i + '-11-01',i + '-11-09',
i + '-11-17',i + '-11-25',i +'-12-03',i + '-12-11',i +'-12-19',i + '-12-27'];
// 初始化一个计数器
var count = 0;
// 假设startDateStrings已经定义好
startDateStrings.forEach(function(startDateStr) {
var startDate = ee.Date(startDateStr);
var endDate = startDate.advance(7, 'day');
// 过滤出当前8天时间窗口内的图像
var era5Subset = ee.ImageCollection("ECMWF/ERA5_LAND/DAILY_AGGR")
.select(['temperature_2m', 'dewpoint_temperature_2m'])
.filterDate(startDate, endDate)
.filterBounds(nmg);
// 计算当前时间窗口内的相对湿度
var rhImages = era5Subset.map(function(image) {
var T = image.select('temperature_2m');
var Td = image.select('dewpoint_temperature_2m');
return calculateRH(T, Td);
});
// 计算RH的均值
var meanRH = rhImages.reduce(ee.Reducer.mean()).rename('mean_RH');
// 设置图像属性
var imageId = 'RHU_' + i + ('0' + (++count)).slice(-2);
meanRH = meanRH.set('eightDayStart', startDate.format('YYYYMMDD'));
// 打印和导出图像
print('Exported RH Image:', meanRH);
// 导出图像到 Google Drive
Export.image.toDrive({
image: meanRH,
description: imageId,
fileNamePrefix: imageId,
scale: 1000,
region: nmg,
maxPixels: 1e13,
folder: 'GEE_ERA5_LAND_RH'
});
});
}