目录
一、参数定义模块:全局配置核心参数
二、空间区域定义模块:按半球划分导出范围
三、数据处理核心模块:从加载到均值计算
四、导出模块:分区域导出至 Google Drive
五、关键设计思路与优势
六、注意事项
七、运行结果
若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!
本代码基于 Google Earth Engine(GEE)平台,实现 ERA5-Land 数据集指定年份、指定波段(以表层土壤体积含水量为例)的年度均值计算,并按东西半球划分区域,将结果以 GeoTIFF 格式导出至 Google Drive,核心是完成“数据筛选 - 均值计算 - 分区域导出”的全流程自动化处理。
一、参数定义模块:全局配置核心参数
该模块集中定义了代码运行所需的各类基础参数,便于后续维护和修改,无需在代码中逐个查找调整。
| 参数类别 | 关键参数说明 | 设计逻辑 | 关键代码片段 |
|---|---|---|---|
| 数据集配置 | collection_id:指定 ERA5-Land 每日聚合数据集 ID | 明确数据来源,GEE 平台中每个官方数据集都有唯一 ID,确保加载正确数据 | var collection_id = 'ECMWF/ERA5_LAND/DAILY_AGGR'; |
| 变量与波段配置 | -target_source_variable:目标原始变量(如表层土壤含水量)-calculated_band_name:结果波段名(拼接 “_annual_mean” 标识年均值) | 区分原始数据和处理后数据,波段名语义化,便于后续识别数据属性 | var target_source_variable = 'volumetric_soil_water_layer_1';var calculated_band_name = target_source_variable + '_annual_mean'; |
| 时间范围配置 | start_year(起始年)、end_year(结束年) | 限定数据处理的时间区间,支持根据需求调整年份跨度 | var start_year = 1985;var end_year = 2000; |
| 输出属性配置 | -output_scale_meters:输出分辨率(约 0.1 度对应 11132 米)-output_folder:Google Drive 目标文件夹名 | 控制输出数据的空间精度,指定存储路径,避免文件杂乱 | var output_scale_meters = 11132;var output_folder = 'ERA5_Land_SM_1m_AnnualMean_Commented'; |
二、空间区域定义模块:按半球划分导出范围
由于 ERA5-Land 数据覆盖全球,直接导出易因数据量过大导致任务失败,因此按经度将全球划分为东西两个半球,分别处理:
- 西半球:经度范围 - 180~0°,纬度范围 - 90~90°(覆盖美洲、大西洋西部等区域)
- 东半球:经度范围 0~180°,纬度范围 - 90~90°(覆盖欧亚大陆、非洲、大洋洲等区域)
- 半球字典:将半球名称与对应几何区域封装为字典,便于后续循环遍历,减少重复代码
// 西半球:经度-180~0,纬度-90~90 var western_hemisphere = ee.Geometry.Rectangle([-180, -90, 0, 90], null, false); // 东半球:经度0~180,纬度-90~90 var eastern_hemisphere = ee.Geometry.Rectangle([0, -90, 180, 90], null, false); // 半球字典:便于循环遍历导出 var hemispheres = { 'Western': western_hemisphere, 'Eastern': eastern_hemisphere };三、数据处理核心模块:从加载到均值计算
数据加载:通过ee.ImageCollection(collection_id)加载 ERA5-Land 每日聚合影像集合,这是 GEE 中加载批量影像数据的标准方式。
// 加载影像集合 var era5_land_daily = ee.ImageCollection(collection_id);时间筛选:针对每一年,定义 “1 月 1 日 - 12 月 31 日” 的完整时间范围,使用filterDate(start_date, end_date)筛选出该年份的所有影像,确保数据时间完整性。
// 定义当前年份的时间范围(全年) var start_date = ee.Date(year + '-01-01'); var end_date = ee.Date(year + '-12-31'); // 筛选当前年份的目标变量数据 var collection_year_target_band = era5_land_daily .filterDate(start_date, end_date)波段筛选:用select(target_source_variable)仅保留目标变量对应的波段,剔除其他无关波段,减少数据处理量。
.select(target_source_variable); // 仅保留目标变量波段年均值计算:通过collection_year_target_band.mean()对筛选后的年度影像集合进行像素级时间序列平均,即每个像素的年度均值由该像素全年每日数据计算得出,实现 “日数据→年均值” 的转换。
// 计算目标变量的年均值(像素级时间序列平均) var annual_mean_image = collection_year_target_band.mean();波段重命名:将计算结果波段重命名为calculated_band_name(含 “annual_mean” 标识),避免与原始波段名混淆,提升数据可读性。
// 重命名结果波段(明确标识为年均值) annual_mean_image = annual_mean_image.rename(calculated_band_name);四、导出模块:分区域导出至 Google Drive
循环遍历半球:通过字典遍历功能,依次处理东西半球的导出任务,实现代码复用。
// 循环遍历半球,分别导出数据 for (var h_name in hemispheres) { var h_geometry = hemispheres[h_name];影像裁剪:用clip(h_geometry)将年度均值影像裁剪至当前半球的地理范围,确保导出数据仅包含目标区域,减少文件体积。
// 裁剪影像到当前半球范围 var clipped_image = annual_mean_image.clip(h_geometry);description:导出任务描述,将在 GEE 的 Tasks 面板显示,便于区分不同任务(包含变量名、年份、半球信息)。
fileNamePrefix:文件名前缀,包含核心信息,便于在 Google Drive 中查找文件。
scale:输出分辨率,与前文定义的output_scale_meters一致,确保空间精度统一。
region:导出地理范围,即当前半球的几何区域。
fileFormat:文件格式指定为 GeoTIFF,这是地理空间数据的标准格式,支持后续在 ArcGIS、QGIS 等软件中进一步处理。
crs:坐标参考系指定为 EPSG:4326(WGS84),是全球通用的地理坐标系统,确保数据空间参考统一。
// 定义导出相关参数 var description = 'AnnualMean_' + calculated_band_name + '_' + year + '_' + h_name; var file_name_prefix = target_source_variable + '_annual_mean_' + year + '_' + h_name; // 导出影像到Google Drive Export.image.toDrive({ image: clipped_image, description: description, folder: output_folder, fileNamePrefix: file_name_prefix, scale: output_scale_meters, region: h_geometry, fileFormat: 'GeoTIFF', crs: 'EPSG:4326' });任务触发提示:代码末尾打印提示信息,告知用户需在 GEE 代码编辑器的 Tasks 面板手动运行导出任务,因 GEE 导出任务需用户手动确认触发,避免用户遗漏操作。
// 打印任务定义完成提示 print('所有导出任务已定义。请检查 GEE 代码编辑器右侧的 "Tasks" 选项卡以运行任务。');五、关键设计思路与优势
- 模块化设计:参数集中定义、功能模块分离(区域定义、数据处理、导出),便于后续修改参数(如更换变量、调整年份、修改导出路径),降低维护成本。
- 分区域处理:按半球划分导出范围,解决了全球数据单次导出量过大导致的任务超时或失败问题,提升导出成功率。
- 语义化命名:变量名、波段名、文件名均包含关键信息(如变量类型、年份、半球),增强代码可读性和数据可识别性。
- 自动化流程:通过嵌套循环(年份循环 + 半球循环),实现多年份、多区域的自动化处理,无需手动逐个年份、逐个区域配置任务,大幅提升效率。
六、注意事项
- 数据集可用性:ERA5-Land 数据集的时间跨度有限,需确保
start_year和end_year在数据集的可用时间范围内,否则会筛选出空集合,导致计算失败。 - 任务运行:代码仅定义导出任务,需用户在 GEE Tasks 面板手动启动任务,且导出速度受网络状况、GEE 服务器负载影响,大年份跨度的任务可能需要较长时间。
- 存储容量:导出的 GeoTIFF 文件会占用 Google Drive 存储空间,需提前确保 Drive 有足够容量,尤其是年份跨度大、分辨率高的场景。
- 权限设置:需确保 GEE 账户已授权访问 Google Drive,否则导出任务会因权限不足失败。
七、运行结果
下面展示的是部分数据的制图结果:
若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!