探索Python融合地学:一文教会你下载ERA5-Land数据

探索Python融合地学:一文教会你下载ERA5-Land数据

再分析数据在气象学领域用的比较多,下载数据有的时候还挺头疼的。今天小编教你下载ERA5-Land数据的三种方式。话不多说,咱们学起来!

一、官网下载

贴出官网:https://cds.climate.copernicus.eu/datasets/reanalysis-era5-land?tab=download

相较于ERA5数据,Land数据空间分辨率提高了,为0.1°格网,时间分辨率同样是逐小时,可以说已经很方便大家开展各项研究了。

第一步:注册个人账号,在右上角的人像这里点击可以注册个人的账号,这里不多说。

第二步:点击“Download”,进入下载界面,在下载界面你可以看到很多气象变量,我们随便选择一种气象要素,比如风的U/V分量,支持多选。

第三步:选择研究时段,这里可以选择某年某个月的所有日期的数据。bug在于,它只能一个月一个月申请下载,如果你研究时间尺度很长,每一年得点12下,下载12份文件,再下载下一年的。所以,如果你是一个体验者,推荐用这种方法。如果你是一个研究者,想要快读完成数据下载,建议用后面小编罗列的代码方法。

第四步:确定研究区域,如果你的研究区域是全区,选择第一个即可,不用更改,但大多数人都是以小区域研究为主,所以可以选择“Sub-Region”,填写上经纬度的范围坐标。

第五步:确定数据格式,一般选择NetCDF4即NC文件。

第六步:确定提交申请,点击“Submit form”,再点击右上角的“Your Requests”,进去后可以看到你刚刚提交的申请链接,等读取后,点击下载即可。此过程需要一些时间,还望大家见谅。

以上是ERA5-Land数据的官网下载方式,ERA5系列数据采用这种方式也可以下载,而且也挺方便的,因为ERA5数据可以按照年份直接打包12个月的数据,不需要一个月一个月单独下载。

二、Python代码下载

如果你需要多年多月多小时的数据,那么我相信第二种方法会很适合你。

工具:配置Python环境,这里我用的是PyCharm。

第一步:一样的,先打开下载界面,找到“Terms of use”,点击“Accepted”,不然下载不了。

第二步:点击右上角头像,弹出窗口中有“Your profile”,点击进入

第三步:在界面中下滑,找到“API key”,找到ur1和key,点击右侧的“复制”符号。

第四步:选择C盘,点击用户→用户名,在里面新建一个txt文件,命名为“.cdsapirc”。将第三步复制的链接和密钥粘贴到文本里面,保存下来,这个文件非常有用。

第五步:进入编译器,搜索cdsapi包,安装最新版。

第六步:贴上代码,想要的拿去。

import cdsapi import os from pathlib import Path # 创建保存目录 save_dir = Path(r"H:\Wind_U_V") save_dir.mkdir(parents=True, exist_ok=True) # ERA5-Land数据集名称 dataset = "reanalysis-era5-land" # 初始化CDS API客户端 client = cdsapi.Client() # 循环处理2023年每个月的数据 for month in range(1, 13): # 将月份格式化为两位数字符串 month_str = f"{month:02d}" # 根据月份确定天数(考虑不同月份的天数差异) if month in [1, 3, 5, 7, 8, 10, 12]: days = [f"{day:02d}" for day in range(1, 32)] elif month in [4, 6, 9, 11]: days = [f"{day:02d}" for day in range(1, 31)] else: # 2月(2023年不是闰年) days = [f"{day:02d}" for day in range(1, 29)] # 构建请求参数 request = { "variable": [ "10m_u_component_of_wind", "10m_v_component_of_wind" ], "year": "2023", "month": month_str, "day": days, "time": [ "00:00", "01:00", "02:00", "03:00", "04:00", "05:00", "06:00", "07:00", "08:00", "09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00", "18:00", "19:00", "20:00", "21:00", "22:00", "23:00" ], "data_format": "netcdf", "download_format": "unarchived", "area": [54, 72, 4, 137] } # 设置输出文件名 output_filename = save_dir / f"ERA5_Land_wind_2023_{month_str}.nc" print(f"正在下载2023年{month_str}月的数据...") try: # 下载数据 client.retrieve(dataset, request).download(output_filename) print(f"成功下载: {output_filename}") except Exception as e: print(f"下载2023年{month_str}月数据时出错: {e}") print("所有月份数据下载完成!")

这段代码能够实现对单年逐月逐小时ERA5-Land双变量数据的下载。

运行后,控制台状态如下:

三、Google Earth Engine平台下载

官网贴上:https://earthengine.google.com/

第一步:在GEE平台上找到数据集,这里可以查看数据集的基本信息,调用代码,波段信息等。

我们的目标是下载1970-2025年逐小时的风速数据,所以需要先选择u、v两个波段,按照风速的公式计算,完成后再导出。

非常喜欢GEE,这样我们就不用下载两个变量了。

第二步,打开GEE的编译器,贴上代码,这里我是按照月度数据合成的。

代码如下:

// 导入ERA5 Land数据集 var dataset = ee.ImageCollection('ECMWF/ERA5_LAND/HOURLY'); // 设置时间范围(1970年到2025年) var start_date = '1970-01-01'; var end_date = '2025-12-31'; // 选择u和v风速分量 var u_component = dataset.select('u_component_of_wind_10m'); // 10m u-component of wind var v_component = dataset.select('v_component_of_wind_10m'); // 10m v-component of wind // 计算风速(m/s) // 使用 map() 遍历每个图像并对每个图像应用平方、相加、开方操作 var wind_speed = u_component.map(function(image) { var u_squared = image.pow(2); // 计算u分量的平方 var v_squared = v_component.filterDate(image.date()).first().pow(2); // 同样计算v分量的平方 return u_squared.add(v_squared).sqrt(); // 合并并计算风速 }); // 定义中国范围,坐标范围为:东经73.4°~135°,北纬18°~53° var china_region = ee.Geometry.Polygon([ [[73.4, 18], [135, 18], [135, 53], [73.4, 53]] ]); // 计算1970年到2025年的逐月逐小时风速数据 var years = ee.List.sequence(1970, 2025); // 按年和月合成风速数据 years.getInfo().forEach(function(year) { var start = ee.Date.fromYMD(year, 1, 1); // 当前年份的起始日期 var end = ee.Date.fromYMD(year, 12, 31); // 当前年份的结束日期 // 按月份合成(逐月合成) for (var month = 1; month <= 12; month++) { var monthly_wind_speed = wind_speed .filterDate(start.advance(month-1, 'month'), start.advance(month, 'month')) // 过滤出每月的数据 .mean() // 计算该月的风速均值 .clip(china_region); // 限定区域为中国 // 导出每月的风速数据 Export.image.toDrive({ image: monthly_wind_speed, description: 'wind_speed_' + year + '_' + month, scale: 1000, // 设置分辨率,ERA5 Land数据分辨率是31km,设置为1000m region: china_region, fileFormat: 'GeoTIFF', maxPixels: 1e8 // 限制最大像素数 }); } }); // 计算逐小时风速数据并导出 var hourly_wind_speed = wind_speed .filterDate(start_date, end_date) .filterBounds(china_region) .map(function(image) { var hour = ee.Date(image.get('system:time_start')).get('hour'); // 获取时间中的小时 return image.set('hour', hour); // 为每个影像添加小时标签 }); // 导出逐小时数据(每小时导出为一个GeoTIFF文件) hourly_wind_speed.evaluate(function(result) { result.features.forEach(function(feature) { var hour = feature.properties.hour; var image = ee.Image(feature.id); // 获取对应的影像 var file_name = 'wind_speed_' + ee.Date(feature.properties['system:time_start']).format('YYYYMMdd_HH').getInfo(); // 导出每小时的风速数据 Export.image.toDrive({ image: image, description: file_name, scale: 1000, region: china_region, fileFormat: 'GeoTIFF', maxPixels: 1e8 }); }); }); 

综上,如果需要效率比较高的话,我推荐第二种方式,当然,如果你是GEE老用户,用第三种方式也行。祝大家下载数据愉快!

还有一点需要提醒,如果你是要做中国区域的分析,记得把下载出来的数据转成中国区域的时间再做分析哈,ERA5数据用的是UTC时间!!要加8小时才能变成中国时间!不然就是个big mistake!

今天的内容就分享到这里,希望对大家有帮助!

Read more

如何用Spotube打造跨平台音乐流媒体体验:开源方案全解析

如何用Spotube打造跨平台音乐流媒体体验:开源方案全解析 【免费下载链接】spotubespotube - 一个开源、跨平台的 Spotify 客户端,使用 Spotify 的数据 API 和 YouTube 作为音频源,适合希望在不同平台上使用 Spotify 服务的开发者。 项目地址: https://gitcode.com/GitHub_Trending/sp/spotube Spotube是一款开源的跨平台音乐流媒体客户端,它创新性地结合了Spotify数据API与YouTube音频源,为用户提供无需订阅即可享受高品质音乐的解决方案。这款基于Flutter开发的应用以插件化架构为核心,支持Windows、macOS、Linux、Android和iOS全平台,在保障隐私安全的同时,实现了轻量化设计与强大功能的完美平衡。无论是音乐爱好者还是开发者,都能在Spotube中找到适合自己的使用场景和扩展可能性。 项目概述:重新定义音乐流媒体体验 在当今数字音乐时代,用户对跨平台访问、内容多样性和隐私保护的需求日益增长。Spotube正是为满足这些需求而设计的开源解决方案,它

By Ne0inhk
GitHub 热榜项目 - 日榜(2025-11-16)

GitHub 热榜项目 - 日榜(2025-11-16)

GitHub 热榜项目 - 日榜(2025-11-16) 生成于:2025-11-16 统计摘要 共发现热门项目: 18 个 榜单类型:日榜 本期热点趋势总结 本期GitHub热榜显示AI应用开发依然是绝对焦点,开发者正致力于将前沿AI技术转化为开箱即用的解决方案。舆情监控工具TrendRadar和谷歌的AI工具包adk-go引领了这股潮流,它们强调用AI解决信息过载和复杂流程自动化等实际问题。同时,轻量化RAG框架LightRAG和大模型记忆引擎Memori的流行,反映出社区对提升AI应用性能与效率的迫切需求。微软的AI呼叫中心项目则展示了AI在具体业务场景的深度集成。总体而言,榜单揭示了AI技术正从模型研发转向大规模生产部署,核心趋势是追求更高的工程实用性与易用性。 1. sansan0/TrendRadar * 🏷️ 项目名称:sansan0/TrendRadar * 🔗 项目地址: https://github.com/sansan0/TrendRadar * ⭐ 当前 Star 数: 13992 * 📈 趋势 Star 数: 230 *

By Ne0inhk
【免费开源】基于STM32的智能宠物喂食系统设计与实现(全流程技术详解)附源码

【免费开源】基于STM32的智能宠物喂食系统设计与实现(全流程技术详解)附源码

【免费开源】基于STM32的智能宠物喂食系统设计与实现(全流程技术详解)附源码 一、项目背景与意义 随着生活节奏的加快,越来越多的年轻人选择饲养宠物作为精神陪伴。然而,长时间工作或外出,往往导致无法按时喂食,从而影响宠物健康。 传统的手动喂食方式存在以下痛点: 1. 时间不固定:主人无法保证每天同一时间投喂。 2. 食量不稳定:每次投喂量可能不一致,容易造成肥胖或营养不足。 3. 缺乏互动提醒:宠物进食状态无法实时获知。 为此,我们设计了一个 基于STM32的智能宠物喂食系统,集成定时喂食、远程控制、剩余粮检测、语音提示等功能,实现宠物喂食的智能化与自动化。 本项目不仅适合家庭应用,也可作为嵌入式开发课程设计、物联网实验项目的实践案例。 源码下载 完整项目已打包,开源免费:https://code.devzoo.top/embedded/71.html 二、系统设计方案 1. 系统功能目标 * 定时喂食:支持多时段自动出粮

By Ne0inhk
Trae + Git本地仓库管理(离线)小白一站式指南

Trae + Git本地仓库管理(离线)小白一站式指南

环境 Windows环境,安装trae,git bash。 ps:trae的生态和vscode基本一致,在vscode中也可以仿照操作。 1全局初始化 ctrl+R输入cmd呼出控制台,运行 git --version 显示版本,说明系统环境变量正常,可以往下操作,若报错,重装git bash。 进入Trae,新建终端 配置git用户名和邮箱(离线状态邮箱随便写。若是想要在线状态把代码上传github,需要跟你的github账号保持一致)。在终端窗口中依次键入以下命令: git config --global user.name "<输入你的用户名>" git config --global user.email "<输入你的邮箱>" 2建立本地仓库 2.1

By Ne0inhk