news 2026/4/18 12:26:59

基于 GEE 实现 ERA5-Land 年度数据单个年份单波段下载——以土壤水分数据为例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 GEE 实现 ERA5-Land 年度数据单个年份单波段下载——以土壤水分数据为例

目录

一、参数定义模块:全局配置核心参数

二、空间区域定义模块:按半球划分导出范围

三、数据处理核心模块:从加载到均值计算

四、导出模块:分区域导出至 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_yearend_year在数据集的可用时间范围内,否则会筛选出空集合,导致计算失败。
  • 任务运行:代码仅定义导出任务,需用户在 GEE Tasks 面板手动启动任务,且导出速度受网络状况、GEE 服务器负载影响,大年份跨度的任务可能需要较长时间。
  • 存储容量:导出的 GeoTIFF 文件会占用 Google Drive 存储空间,需提前确保 Drive 有足够容量,尤其是年份跨度大、分辨率高的场景。
  • 权限设置:需确保 GEE 账户已授权访问 Google Drive,否则导出任务会因权限不足失败。

七、运行结果

点击RUN即可下载数据
控制台输出的相关信息

下面展示的是部分数据的制图结果:

1985年全球土壤湿度
1990年全球土壤湿度
1995年全球土壤湿度
2000年全球土壤湿度

若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 6:47:37

从零开始搭建深度学习环境:基于Miniconda-Python3.11的完整指南

从零开始搭建深度学习环境:基于Miniconda-Python3.11的完整指南 在人工智能项目开发中,最让人头疼的往往不是模型设计或训练调优,而是“为什么代码在我机器上能跑,在你那边就报错?”——这背后,九成概率是…

作者头像 李华
网站建设 2026/4/17 18:18:50

Miniconda-Python3.10镜像在无人机航拍分析中的关键技术

Miniconda-Python3.10 镜像在无人机航拍分析中的关键技术 在农业监测、灾害评估和城市规划等实际场景中,无人机航拍已从“新奇工具”演变为不可或缺的数据采集手段。每天成千上万张高分辨率图像被传回数据中心,等待处理——但真正棘手的,往往…

作者头像 李华
网站建设 2026/4/18 8:37:32

Miniconda-Python3.10镜像支持OCR文字识别项目的部署

Miniconda-Python3.10镜像支持OCR文字识别项目的部署 在智能文档处理、自动化办公和工业质检等场景中,OCR(光学字符识别)技术正扮演着越来越关键的角色。然而,许多团队在推进OCR项目落地时,常遇到一个看似“基础”却极…

作者头像 李华
网站建设 2026/4/18 5:39:43

Miniconda-Python3.10镜像在工业缺陷检测项目中的实施

Miniconda-Python3.10镜像在工业缺陷检测项目中的实施 在现代智能制造的浪潮中,产品质量控制正从传统的人工抽检迈向自动化、智能化的新阶段。尤其是在电子元器件、汽车零部件、光伏面板等高精度制造领域,微米级的划痕、气泡或异物都可能引发整批产品的报…

作者头像 李华
网站建设 2026/4/18 8:18:27

Miniconda-Python3.10镜像支持自动化测试脚本执行

Miniconda-Python3.10镜像支持自动化测试脚本执行 在现代软件交付节奏日益加快的今天,一个常见的痛点始终困扰着开发和测试团队:为什么同一个测试脚本,在开发者本地运行正常,却在CI环境中频繁失败?答案往往藏在“环境差…

作者头像 李华