news 2026/3/26 20:37:07

基于 GEE 的 ERA5-Land 数据集获取全球 0.1° 空间分辨率的相对湿度与比湿数据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 GEE 的 ERA5-Land 数据集获取全球 0.1° 空间分辨率的相对湿度与比湿数据

目录

一、基础参数与数据集初始化

二、湿度参数计算(核心处理步骤)

三、年度均值合成

四、导出范围定义与影像导出

五、关键技术要点总结与注意事项

六、运行结果


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

本代码基于 Google Earth Engine(GEE)平台,利用 ECMWF/ERA5_LAND/MONTHLY_AGGR 数据集(ERA5-Land 月度聚合数据),计算 1960-2020 年全球范围内的相对湿度(RH)和比湿(q),并按年份生成年度均值影像,最终将各年份的相对湿度和比湿影像导出至 Google Drive。

一、基础参数与数据集初始化

var startYear = 1960, endYear = 2020; var col = ee.ImageCollection('ECMWF/ERA5_LAND/MONTHLY_AGGR') .filterDate(startYear + '-01-01', (endYear + 1) + '-01-01') .select(['temperature_2m', 'dewpoint_temperature_2m', 'surface_pressure']);
  • 参数定义:明确数据时间范围为 1960 年至 2020 年,通过startYearendYear两个变量固定起止年份,方便后续代码复用和修改。
  • 数据集调用
    • ee.ImageCollection('ECMWF/ERA5_LAND/MONTHLY_AGGR'):加载 GEE 内置的 ERA5-Land 月度聚合数据集,该数据集包含全球地表及近地面多种气象要素的月度统计数据,精度和完整性较高。
    • filterDate(...):对数据集进行时间筛选。由于 GEE 的filterDate为左闭右开区间(包含起始日期,不包含结束日期),因此结束日期设置为endYear + 1的 1 月 1 日,确保 2020 年 12 月的月度数据被完整包含。
    • select(...):筛选数据集所需的 3 个核心气象变量,避免加载冗余数据,提升计算效率:
      • temperature_2m:2 米高度气温(单位:开尔文 K);
      • dewpoint_temperature_2m:2 米高度露点温度(单位:开尔文 K);
      • surface_pressure:地表气压(单位:帕斯卡 Pa)。

二、湿度参数计算(核心处理步骤)

var withHum = col.map(function(img) { var T = img.select('temperature_2m').subtract(273.15); var Td = img.select('dewpoint_temperature_2m').subtract(273.15); var sp = img.select('surface_pressure'); // 饱和水汽压计算 var es = T.expression('611.2 * exp(17.62 * tc / (243.12 + tc))', {tc: T}); // 实际水汽压计算 var e = Td.expression('611.2 * exp(17.62 * td / (243.12 + td))', {td: Td}); // 相对湿度计算 var rh = e.divide(es).multiply(100).rename('RH'); // 比湿计算 var q = e.multiply(0.622).divide(sp.subtract(e.multiply(0.378))).rename('q'); return img.select(0).addBands([rh, q]); });

该部分通过map函数遍历数据集中的每一幅月度影像,逐像元计算相对湿度(RH)和比湿(q),是代码的核心逻辑:

  • 温度单位转换:原始气温(T)和露点温度(Td)均为开尔文(K),通过subtract(273.15)转换为摄氏度(℃),符合后续水汽压计算公式的单位要求。
  • 水汽压计算
    • 饱和水汽压(es):基于气温(T),采用世界气象组织(WMO)推荐的 Magnus-Tetens 公式计算,表征某一温度下空气所能容纳的最大水汽量。公式中611.2为 0℃时的饱和水汽压(Pa),17.62243.12为经验常数。
    • 实际水汽压(e):基于露点温度(Td),采用与饱和水汽压相同的公式计算,表征空气实际含有的水汽量(露点温度是空气水汽达到饱和时的温度)。
  • 目标湿度参数计算
    • 相对湿度(RH):定义为实际水汽压与同温度下饱和水汽压的比值(百分比形式),反映空气接近饱和的程度。通过e.divide(es)计算比值,再multiply(100)转换为百分比,最后用rename('RH')为新波段命名。
    • 比湿(q):定义为水汽质量与湿空气总质量的比值(单位:kg/kg),是气象和气候研究中常用的湿度指标(不受气压影响)。计算公式中0.6220.378为水汽与干空气的分子量相关常数,通过该公式将水汽压和地表气压转换为比湿,命名为q
  • 影像输出return img.select(0).addBands([rh, q])表示保留原始数据集中的第一个波段(此处为 2 米气温),并将计算得到的 RH 和 q 作为新波段添加到影像中,形成包含原始气温和两个湿度参数的新影像集合withHum

三、年度均值合成

var years = ee.List.sequence(startYear, endYear); var annual = ee.ImageCollection.fromImages( years.map(function(y) { y = ee.Number(y); var mean = withHum.filter(ee.Filter.calendarRange(y, y, 'year')) .mean() .set('year', y) .set('system:index', y.format('%d')); return mean; }) );
  • 年份序列生成ee.List.sequence(startYear, endYear)生成 1960-2020 年的年份列表(整数序列),作为后续按年份筛选数据的依据。
  • 年度均值计算
    • 通过years.map(...)遍历每一个年份,对withHum影像集合进行按年筛选和均值计算:
      • filter(ee.Filter.calendarRange(y, y, 'year')):筛选出当前年份(y)的所有月度影像;
      • .mean():对该年份的月度影像进行逐像元均值计算,得到年度平均影像(包含气温、RH、q 三个波段的年度均值);
      • .set('year', y).set('system:index', y.format('%d')):为生成的年度影像添加属性(year字段记录年份)和索引(以年份作为影像索引),方便后续按年份筛选和导出。
    • ee.ImageCollection.fromImages(...):将所有年份的年度均值影像整合为新的影像集合annual,该集合包含 61 幅影像(1960-2020 年每年 1 幅)。

四、导出范围定义与影像导出

var region = ee.Geometry.Rectangle([-180, -90, 180, 90], null, false); years.evaluate(function(yearList) { yearList.forEach(function(y) { var img = annual.filter(ee.Filter.eq('year', y)).first(); // 相对湿度导出 Export.image.toDrive({ image: img.select('RH'), description: 'ERA5Land_RH_' + y, folder: 'ERA5Land_RH', scale: 11132, region: region, maxPixels: 1e13 }); // 比湿导出 Export.image.toDrive({ image: img.select('q'), description: 'ERA5Land_q_' + y, folder: 'ERA5Land_q', scale: 11132, region: region, maxPixels: 1e13 }); }); });
  • 导出范围定义ee.Geometry.Rectangle([-180, -90, 180, 90], null, false)定义导出的空间范围为全球(经度:-180°~180°,纬度:-90°~90°)。其中null表示使用默认投影,false表示不闭合几何图形(矩形本身已闭合,此处不影响结果)。
  • 客户端与服务器端数据交互years.evaluate(function(yearList) { ... }):GEE 中ee.List是服务器端对象,无法直接在客户端(如浏览器)进行遍历,evaluate方法将服务器端的年份列表years转换为客户端可识别的普通数组yearList,从而实现逐年份循环导出。
  • 影像导出配置:对每一年的年度影像,分别筛选出RH(相对湿度)和q(比湿)波段,通过Export.image.toDrive导出至 Google Drive:
    • image: img.select('RH')/img.select('q'):指定导出的目标波段;
    • description: 'ERA5Land_RH_' + y/'ERA5Land_q_' + y:导出文件的名称(包含数据集名称、参数类型和年份,如ERA5Land_RH_1960),便于区分和管理;
    • folder: 'ERA5Land_RH'/'ERA5Land_q':指定导出文件在 Google Drive 中的存储文件夹(会自动创建该文件夹),将不同参数的文件分类存储;
    • scale: 11132:导出影像的空间分辨率(单位:米),约等于 1°×1°(赤道处 1° 经度约为 111320 米,此处scale=11132对应约 0.1° 分辨率),该分辨率与 ERA5-Land 数据集的原始分辨率匹配;
    • region: region:指定导出的空间范围(全球);
    • maxPixels: 1e13:设置导出影像的最大像元数限制(1×10¹³,远大于全球 0.1° 分辨率影像的像元数,避免因像元数超限导致导出失败)。

五、关键技术要点总结与注意事项

关键技术要点总结:

  • GEE 数据处理逻辑:遵循 “服务器端处理为主、客户端交互为辅” 的原则,通过mapfilter等方法实现批量数据处理,利用evaluate实现服务器端与客户端的数据转换。
  • 气象参数计算原理:基于经典的 Magnus-Tetens 公式计算水汽压,再通过水汽压、地表气压等基础参数推导相对湿度和比湿,确保计算结果的科学性和准确性。
  • 导出优化配置:通过合理设置scale(分辨率)、maxPixels(最大像元数)、folder(存储文件夹)等参数,保证导出过程的稳定性和结果的可用性。
  • 数据完整性保障:时间筛选时采用 “左闭右开” 区间设计,确保包含完整的目标年份数据;导出参数时分类存储、命名规范,便于后续数据管理和分析。

注意事项:

  • 该代码运行依赖 Google Earth Engine 账号和稳定的网络环境,且导出大量影像(61 年 ×2 个参数 = 122 幅影像)需要一定的时间(取决于 GEE 服务器负载),需耐心等待导出完成。
  • 导出的影像格式默认为 GeoTIFF(GEE 导出的默认 raster 格式),可直接用于 ArcGIS、QGIS 等 GIS 软件的空间分析。
  • 若需调整时间范围(如延长至 2023 年)或空间范围(如仅导出某一区域),可修改startYearendYearregion的定义,无需改动核心计算逻辑。

六、运行结果

点击RUN即可下载数据
部分相对湿度(Relative Humidity,RH)数据制图结果
部分比湿(Specific Humidity,q)数据制图结果

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

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

【AI金融】手搓巴菲特智能体:大模型投资助手开发全流程!

简介 本文详细介绍了如何利用大模型技术创建"巴菲特风格"投资智能体的实战过程,包括Multi-Agent系统架构设计、ADP平台实现及工作流编排。作者分享了从创意构思到落地开发的完整流程,重点解决了Agent幻觉、网页生成失败等技术难题,…

作者头像 李华
网站建设 2026/3/24 10:21:28

2023A卷,基站维修工程师

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:华为OD面试 文章目录 一、🍀前言 1.1 ☘️题目详情 1.2 ☘️参考解题答案 一、🍀前言 2023A卷,基站维修工程师。 1.1 ☘️题目详情 题目: 小王是…

作者头像 李华
网站建设 2026/3/5 11:59:58

STC32G144K逐飞开源库发布!

简 介: 本文介绍了STC32G144K246高性能微控制器及其开源库在智能车竞赛中的应用。该芯片相比前代STC32G12K显著提升了硬件资源,包括6组16位PWM定时器、14个24位定时器和8组USART串口,解决了资源瓶颈问题。开源库优化了延时精度、串口灵活性和…

作者头像 李华
网站建设 2026/3/22 23:24:40

基于单片机的高精度超声波超声波测距系统实现

第一章:系统设计目标与需求分析 本系统旨在通过超声波技术实现非接触式距离精确测量,解决传统测距方法(如红外测距)精度低、受环境光干扰大的问题,适用于机器人避障、液位检测、工业位移监测等场景。核心需求包括&…

作者头像 李华
网站建设 2026/3/22 4:44:39

基于单片机的防盗报警器系统设计

第一章:系统设计目标与需求分析 基于单片机的防盗报警器系统旨在通过智能化的入侵检测与快速响应机制,解决传统安防设备误报率高、联动性差的问题,适用于家庭、商铺等小型场所的安全防护。核心需求包括:精准检测人体入侵&#xff…

作者头像 李华