目录
[四、导出模块:分区域导出至 Google Drive](#四、导出模块:分区域导出至 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°(覆盖欧亚大陆、非洲、大洋洲等区域)
- 半球字典:将半球名称与对应几何区域封装为字典,便于后续循环遍历,减少重复代码
javascript
// 西半球:经度-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 中加载批量影像数据的标准方式。
javascript
// 加载影像集合
var era5_land_daily = ee.ImageCollection(collection_id);
时间筛选: 针对每一年,定义 "1 月 1 日 - 12 月 31 日" 的完整时间范围,使用filterDate(start_date, end_date)筛选出该年份的所有影像,确保数据时间完整性。
javascript
// 定义当前年份的时间范围(全年)
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)仅保留目标变量对应的波段,剔除其他无关波段,减少数据处理量。
javascript
.select(target_source_variable); // 仅保留目标变量波段
年均值计算: 通过collection_year_target_band.mean()对筛选后的年度影像集合进行像素级时间序列平均,即每个像素的年度均值由该像素全年每日数据计算得出,实现 "日数据→年均值" 的转换。
javascript
// 计算目标变量的年均值(像素级时间序列平均)
var annual_mean_image = collection_year_target_band.mean();
波段重命名: 将计算结果波段重命名为calculated_band_name(含 "annual_mean" 标识),避免与原始波段名混淆,提升数据可读性。
javascript
// 重命名结果波段(明确标识为年均值)
annual_mean_image = annual_mean_image.rename(calculated_band_name);
四、导出模块:分区域导出至 Google Drive
**循环遍历半球:**通过字典遍历功能,依次处理东西半球的导出任务,实现代码复用。
javascript
// 循环遍历半球,分别导出数据
for (var h_name in hemispheres) {
var h_geometry = hemispheres[h_name];
影像裁剪: 用clip(h_geometry)将年度均值影像裁剪至当前半球的地理范围,确保导出数据仅包含目标区域,减少文件体积。
javascript
// 裁剪影像到当前半球范围
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),是全球通用的地理坐标系统,确保数据空间参考统一。
javascript
// 定义导出相关参数
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 导出任务需用户手动确认触发,避免用户遗漏操作。
javascript
// 打印任务定义完成提示
print('所有导出任务已定义。请检查 GEE 代码编辑器右侧的 "Tasks" 选项卡以运行任务。');
五、关键设计思路与优势
- **模块化设计:**参数集中定义、功能模块分离(区域定义、数据处理、导出),便于后续修改参数(如更换变量、调整年份、修改导出路径),降低维护成本。
- **分区域处理:**按半球划分导出范围,解决了全球数据单次导出量过大导致的任务超时或失败问题,提升导出成功率。
- **语义化命名:**变量名、波段名、文件名均包含关键信息(如变量类型、年份、半球),增强代码可读性和数据可识别性。
- **自动化流程:**通过嵌套循环(年份循环 + 半球循环),实现多年份、多区域的自动化处理,无需手动逐个年份、逐个区域配置任务,大幅提升效率。
六、注意事项
- 数据集可用性: ERA5-Land 数据集的时间跨度有限,需确保
start_year和end_year在数据集的可用时间范围内,否则会筛选出空集合,导致计算失败。 - **任务运行:**代码仅定义导出任务,需用户在 GEE Tasks 面板手动启动任务,且导出速度受网络状况、GEE 服务器负载影响,大年份跨度的任务可能需要较长时间。
- **存储容量:**导出的 GeoTIFF 文件会占用 Google Drive 存储空间,需提前确保 Drive 有足够容量,尤其是年份跨度大、分辨率高的场景。
- **权限设置:**需确保 GEE 账户已授权访问 Google Drive,否则导出任务会因权限不足失败。
七、运行结果
点击RUN即可下载数据
控制台输出的相关信息
下面展示的是部分数据的制图结果:
1985年全球土壤湿度
1990年全球土壤湿度
1995年全球土壤湿度
2000年全球土壤湿度
若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!