news 2026/4/18 13:07:32

基于 GEE 利用 ERA5-LAND 数据集自动提取全球径流数据:地表 + 地下径流总和(mm)完整提取方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 GEE 利用 ERA5-LAND 数据集自动提取全球径流数据:地表 + 地下径流总和(mm)完整提取方案

目录

一、区域定义与地图初始化

二、数据集加载

三、年份筛选与数据计算

四、数据导出到 Google Drive

五、代码关键特性与注意事项

六、运行结果


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

本代码基于 Google Earth Engine(GEE)平台,利用 ECMWF(欧洲中期天气预报中心)发布的 ERA5-LAND 月度聚合数据集,自动提取 2024 年全球指定区域(北纬 90° 至南纬 60°、东经 180° 至西经 180°)的三类径流数据,并将其导出为 GeoTIFF 格式存储到 Google Drive 中,数据单位最终转换为毫米(mm),具体包括:

  • 总径流总和(runoff_sum)
  • 地下径流总和(sub_surface_runoff_sum)
  • 地表径流总和(surface_runoff_sum)

一、区域定义与地图初始化

var geometry = ee.Geometry.Polygon( [[[-180, 90], [-180, -60], [180, -60], [180, 90]]], null, false); Map.centerObject(geometry, 3);
  • 区域几何对象创建
    • ee.Geometry.Polygon():GEE 中用于创建多边形区域的核心函数,参数为顶点坐标数组、投影信息(此处为null,默认采用 GEE 内部投影)、是否闭合(false表示按顶点顺序自动闭合)。
    • 顶点坐标含义:四个顶点分别定义了全球范围的矩形区域 —— 西经 180° 北纬 90°(北极点附近)、西经 180° 南纬 60°、东经 180° 南纬 60°、东经 180° 北纬 90°,覆盖了除南极洲大部分区域外的全球陆地与海洋范围。
  • 地图居中设置Map.centerObject(geometry, 3):将地图视图中心定位到上述定义的区域,第二个参数3为地图缩放级别(GEE 缩放级别 1-20,数值越小视野越广,3 级可显示全球全貌),方便在 GEE 编辑器中可视化查看研究区域。

二、数据集加载

var runoff = ee.ImageCollection("ECMWF/ERA5_LAND/MONTHLY_AGGR");
  • ee.ImageCollection():GEE 中用于加载影像集合(多幅影像组成的数据集)的函数,参数为数据集的 GEE 内置 ID。
  • 数据集说明:ECMWF/ERA5_LAND/MONTHLY_AGGR是 ERA5-LAND 数据集的月度聚合版本,与原始逐小时数据相比,已提前完成月度尺度的统计聚合,包含降水、蒸发、径流等多个水文气象变量,适合长时间尺度的区域水文分析。

三、年份筛选与数据计算

for (var year = 2024; year <= 2024; year++) { var yearly = runoff.filterDate(year + '-01-01', year + '-12-31'); // 总径流计算(关键步骤示例) var runoffSum = yearly.select('runoff_sum').sum().multiply(1000).rename('runoff_sum_' + year).clip(geometry); // 地下径流、地表径流计算逻辑与总径流一致,仅筛选的变量名不同 }
  • 年份循环:此处为单年份循环(2024 年),通过for循环限定数据提取的时间范围,若需扩展到多年(如 2000-2024 年),可修改循环条件为var year = 2000; year <= 2024; year++
  • 时间筛选yearly = runoff.filterDate(...):对加载的月度影像集合按时间筛选,提取指定年份 1 月 1 日至 12 月 31 日的所有月度影像(共 12 幅,对应全年 12 个月)。
  • 径流数据计算(核心步骤)
    • select('runoff_sum'):从月度影像集合中筛选出 “总径流总和” 对应的波段(ERA5-LAND 数据集中,不同变量以不同波段存储,runoff_sum为总径流波段名,sub_surface_runoff_sum为地下径流波段名,surface_runoff_sum为地表径流波段名)。
    • sum():对筛选后的 12 幅月度影像进行像素级求和运算,得到全年的径流总和(原始单位为米,m)。
    • multiply(1000):单位转换,将米(m)转换为毫米(mm)(1m=1000mm),符合水文数据常用单位习惯。
    • rename(...):为计算后的影像波段重命名,添加年份后缀(如runoff_sum_2024),避免多年份数据导出时波段名冲突。
    • clip(geometry):按之前定义的geometry区域对影像进行裁剪,只保留目标区域内的数据,去除区域外的无效值,减少数据存储量。

四、数据导出到 Google Drive

以总径流数据导出为例,地下径流、地表径流导出逻辑完全一致,仅参数细节不同:

Export.image.toDrive({ image: runoffSum, description: year + '_runoff_sum_mm', fileNamePrefix: year + '_runoff_sum_mm', folder: 'ERA5L-runoff-mm', region: geometry, scale: 5000, crs: 'EPSG:4326', maxPixels: 1e13 });
  • 导出函数说明Export.image.toDrive():GEE 中用于将单幅影像导出到 Google Drive 的核心函数,参数以键值对形式传入,定义导出的各项配置。
  • 关键参数解析
    • image:指定待导出的影像对象(此处为计算后的全年总径流影像runoff_sum)。
    • description:导出任务的描述名称(在 GEE 任务列表中显示,便于区分不同任务)。
    • fileNamePrefix:导出文件的前缀名,最终导出的 GeoTIFF 文件名为 “前缀名.tif”(如2024_runoff_sum_mm.tif)。
    • folder:Google Drive 中存储文件的文件夹名称(需提前在 Google Drive 中创建,或由导出任务自动创建)。
    • region:导出的数据区域,与之前裁剪的geometry保持一致,确保导出范围准确。
    • scale:导出影像的空间分辨率,单位为米(m),此处5000表示影像像素大小为 5000m×5000m(约 25 平方公里 / 像素),ERA5-LAND 数据集的原生空间分辨率为 0.1°(约 11km),此处设置为 5km 是平衡分辨率与数据量的选择。
    • crs:导出影像的投影坐标系,EPSG:4326为 WGS84 地理坐标系(经纬度投影),是全球通用的地理坐标系,便于后续在 ArcGIS、QGIS 等软件中处理。
    • maxPixels:允许导出的最大像素数量,GEE 默认限制导出像素数为 1e13(10 万亿),此处设置为 1e13 是为了避免因全球范围数据量过大导致导出失败(5km 分辨率的全球区域像素数约为 1e8 级别,远小于 1e13)。

五、代码关键特性与注意事项

关键特性:

  • 自动化程度高:通过循环与筛选逻辑,可快速批量提取指定年份的三类径流数据,无需手动逐幅影像处理。
  • 数据标准化:统一完成单位转换(m→mm)、投影设置(EPSG:4326)和区域裁剪,导出数据可直接用于后续水文模型、空间分析等工作。
  • 可扩展性强:修改循环年份范围可扩展到多年数据提取,修改geometry参数可调整研究区域(如某一流域、某一国家),修改scale参数可调整导出分辨率。

注意事项:

  • GEE 权限与资源:使用前需拥有 Google 账号并登录 GEE 平台,导出全球范围数据时需确保 GEE 账户有足够的计算资源(批量导出多年数据时建议分批次执行,避免任务队列拥堵)。
  • 文件夹创建:需提前在 Google Drive 中创建名为ERA5L-runoff-mm的文件夹,否则导出文件会存储在 Google Drive 根目录,不利于文件管理。
  • 数据精度说明:ERA5-LAND 是再分析数据集,基于观测数据与数值模型融合生成,径流数据为模拟结果,使用时需结合实地观测数据进行验证,尤其适用于大尺度区域分析,小尺度区域需谨慎使用。
  • 变量名准确性:ERA5-LAND 数据集的波段名(如runoff_sum)是固定的,修改时需参考 GEE 数据集的官方文档,避免因波段名错误导致数据提取失败。

六、运行结果

点击RUN即可下载数据
对下载的数据进行后处理并可视化出图

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

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

Java+TestNG+Maven+Selenium的web自动化测试脚本环境的搭建

一、环境搭建 1、安装java环境 a、 安装JDK b、安装eclipse c、安装maven 参考&#xff1a;http://www.cnblogs.com/s1328/p/4620812.html 2、安装eclipse下的testng插件 Eclipse中点击Help->Install new software -> 点击Add 在Location输入 http://beust.com/e…

作者头像 李华
网站建设 2026/4/18 10:41:16

大模型学习指南:“人工智能+“战略下的机遇与挑战!

简介 文章阐述了"人工智能"战略的重大意义&#xff0c;强调人工智能作为数字经济时代的关键技术正引领全球科技革命。我国虽处全球第一方阵&#xff0c;但仍需突破基础理论和技术瓶颈。随着大模型等技术发展&#xff0c;人工智能正从实验室走向实际应用&#xff0c;创…

作者头像 李华
网站建设 2026/4/17 23:25:06

知识点总结:四:数组

1_数组的概念数组是⼀组相同类型元素的集合&#xff0c;由此可知数组的元素数量要比0大&#xff0c;且都是相同的类型。数组相当于在栈区申请一块连续的、大的&#xff08;相较于其中的一个元素&#xff09;内存空间&#xff0c;依照定义的数组的类型将这一块内存进行定义1_一维…

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

接口自动化测试学习 —— Fiddler的运用

1.接口介绍&#xff08;基础部分&#xff09; 接口是一种用来定义程序的协议&#xff0c;它描述可属于任何类或结构的一组相关行为应用程序编程接口&#xff0c;它是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力接口测…

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

【详细解读】vivado时序分析报告怎么看?

目录 概念 IO输入延时约束 时序分析报告长什么样 模型 数据 时钟 建立时间裕量 数据路径(到达时间) 时钟路径(需求时间) 概念 时序分析报告,是时序分析器对于约束后的设计进行时序分析,得出的结论。可以查看约束后的效果是否满足时序要求。 IO输入延时约束 IO输入延时约束…

作者头像 李华