全球气象数据ERA5的下载方法
本文介绍在ERA5气象数据的官方网站中,手动下载、Python代码自动批量下载逐小时、逐日与逐月的ERA5气象数据各类产品的快捷方法。
ERA5(fifth generation ECMWF atmospheric reanalysis of the global climate)是由欧洲中期天气预报中心(European Centre for Medium-Range Weather Forecasts,ECMWF)开发和维护的一种全球范围内的高分辨率大气再分析数据集,提供了多种气象和气候变量的连续、一致和高质量的数据。ERA5基于全球观测数据、数值模型和物理参数化方案,通过数据同化和数值模拟的技术,对过去数十年(1940年至今)的天气状况进行再构建和模拟,从而生成了高时空分辨率的大气和地表变量数据。ERA5提供了广泛的气象和气候变量,包括温度、湿度、风速、降水、云量、地表辐射等。这些数据以固定的时间间隔(逐小时或逐月)和空间分辨率(从数公里到数十公里)提供,可以用于气候研究、天气分析、气候模型验证、环境监测等众多应用领域。
我们可以通过ERA5的官方网站,或者在谷歌地球引擎等平台中,下载这一气象数据。由于在谷歌地球引擎中下载这一数据相对而言比较麻烦,而且速度也并不算友好,我们这里就主要介绍一下基于其官方网站,通过手动下载、Python代码下载等2种方式,下载不同ERA5数据产品的方法。
首先,需要明确,我们一般常用的ERA5数据产品包括ERA5和ERA5-Land等2种;其中,前者ERA5包含全球全部区域,而后者ERA5-Land仅包含全球的陆地区域,但是后者的空间分辨率(最高是0.1 °)要高于前者(最高为0.25 °)。其次,在ERA5的官方网站,无论是上述的ERA5数据,还是ERA5-Land数据,我们通过手动下载或者代码下载的方式,都只能直接下载到逐小时或逐月的气象数据;如果需要逐日的数据,大家可以在其官方网站提供的逐日统计数据计算工具中加以自动计算后手动下载,或者是在GEE中下载,再或者就是先下载逐小时的数据,然后自行撰写代码批量计算逐日或者其他时间分辨率的数据。当然,也还有一种用Python代码批量下载逐日数据的方法,但是那个方法的速度受到网络情况影响,我发现还不如我手动下载来得快,所以这里就没有介绍;之后如果用到这个代码了,就再和大家介绍一下。
同时,应该是在2024年的09月,ERA5数据官方网站做了改版,所以本文中的截图有些和目前最新的网站可能有些不一致,但是整体操作流程是一样的。后期我也会再更新一下本文中的截图和具体细节部分。
0 准备工作
需要注意,只要不是选择用上述逐日统计数据计算工具来下载数据,那么无论我们选择手动下载数据,还是用Python代码批量下载数据,都需要进行本部分的操作。
首先,我们找到需要下载的数据首页,如下图所示。

其次,如果我们没有登录的话,需要在上图右上角所示的位置登录或者注册一下账号。如下图所示,我这里就新注册一个账号。

完成注册后,需要在我们注册时填写的邮箱中激活一下账号,如下图所示。

随后,登录账号即可;如下图所示。

接下来,我们回到刚刚的数据首页中,选择“Download data”选项;如下图所示。随后,选择当前数据产品对应的产品类型,一般情况下,我们选择第一个,也就是“Reanalysis”选项就可以。

随后,选择我们需要的气象数据指标;可以在“Popular”这一栏选择用户常用的热门指标,也可以自己依据需要在下面的类别中搜索。如下图所示。

接下来,选择我们需要的年份和日期、时刻。这里需要注意,对于不同的ERA5产品,其能一次性下载的数量也是不同的;如下图所示,我这张图下载的是ERA5数据,它就可以一次性选择多年、多月的数据;但是后面我下载ERA5-Land数据,发现就不能多选年份和月份了,也就是说一次性只能下载一年中一个月的数据。这个可能是由于,ERA5-Land数据的空间分辨率比较高,数据量更大,导致官方限制了ERA5-Land数据的一次性下载的限额。

随后,选择我们要下载的数据的空间覆盖范围,并选择下载的数据格式(建议选择NetCDF格式)如下图所示。

随后,选择下图中左上方的“Accept terms”选项。

至此,我们就完成了数据下载的准备部分工作。
1 手动下载
首先,我们介绍一下手动下载的方法。手动下载其实就很简单了,在完成上一个“Accept terms”选项步骤之后,上图右下角就会变成下图右下角所示的“Submit Form”选项;选择这一项即可。这个的意思是,将我们前面配置好的下载信息作为一个请求,发给服务器,服务器只要处理好这个请求,我们就可以开始下载了。

随后,可以在新的界面中,看到我们刚刚发起的这个请求;如下图所示。需要注意的是,此时我们只是将请求发送给了官方网站的服务器,服务器还需要一段时间来处理我们的请求。

如下图所示,在提交了一个请求之后,我们可以用前文的方法再提交其他的请求;这些请求都在“Your requests”界面中有所显示。

当服务器处理完毕我们的请求后,可以看到请求列表右侧出现了“Download”选项,点击它就可以下载数据了。

一般情况下,服务器处理我们请求的时间是不一定的,受到所要下载数据的大小、服务器繁忙情况等影响;如下图所示,我这两个请求,一个是不到200 MB的数据,一个是不到20 MB的数据,分别经过了将近1个小时、20分钟才请求完毕、可以下载,这个速度不算很快。

2 基于Python下载
接下来,我们介绍一下基于Python代码批量下载数据的方法。
首先,我们进入这个网页;这里需要注意,进入这个网页后,首先需要通过如下的超链接,重新注册一下;我感觉这个步骤的意义就是将我们注册好的ERA5官方网站账号再赋一个API权限。

其中,如下图所示,这里的“Current password”也要输入。

随后,我们进入这个网站,并找到如下图所示的网页位置,将右侧黑色区域内的全部信息复制一下。

接下来,我们还需要配置一下Python代码中,用以下载ERA5数据的一个第三方库cdsapi,也就是ERA5官方开发的、专门用来供Python代码下载ERA5数据的库。
配置cdsapi库也是很简单的。我们直接在Python环境的命令行中分别输入如下代码即可(如果大家没有conda环境的话,可以用pip来安装,具体方法参考ERA5的官方网站即可)。其中,第一句代码用于在conda的配置文件中添加一个新的软件源channel,即conda-forge;conda-forge是一个社区驱动的软件源,提供了广泛的开源软件包,包括这个cdsapi库。第二句代码就是下载cdsapi库。
conda config --add channels conda-forge
conda install cdsapi
运行上述代码,如下图所示。

我在第一次配置cdsapi库的时候,出现了如下图所示的报错;这种问题一般就是没有管理员权限导致的。

因此,选择用管理员权限打开命令行,如下图所示。

随后,就配置好了cdsapi库;如下图所示。

接下来,我们需要找到.cdsapirc文件,并将前面我们复制的url和key复制到其中。这里需要注意,这个.cdsapirc文件,原理上在配置完毕cdsapi库后,会自动出现在我们电脑中的C:\Users\用户名文件夹内;如下图所示。

但是实际上,有的时候我们在上述文件夹内是看不到这个文件的;这样的话,我们可以在这个文件夹内新建一个.txt格式的文本文件,并将我们复制的url和key复制到其中,如下图所示。

随后,将这个.txt格式的文本文件重命名为.cdsapirc,如下图所示。

随后,我们回到前面ERA5官方网站中,设置下载数据属性的那个网站,并选择最左侧的“Show API request”选项;如下图所示。

随后,会出现一个Python代码;如下图所示。我们将这个代码复制到自己的Python语言的IDE中,执行代码即可。

复制后如下图所示。

随后,执行上述复制后的代码,如下图所示。可以看到,已经开始代码的下载了。

这里需要注意,下载的气象数据默认保存在Python代码所在的文件夹中;如下图所示。

此外,我们通过上述方式获取的数据,其实也是一个向服务器发送的请求,也是需要首先处理请求、随后在Python中开始下载的;我们同样可以在“Your requests”页面中看到我们通过Python下载数据的请求。下图中,Python下载数据的请求处理数据为0,这个是因为对于同一个数据,我先用手动下载的方式提交过一次请求了,服务器处理之后我又用Python提交了一次请求,所以Python下载数据时就不用了再重新处理请求了。

同时,当时还简单对比了一下手动下载和Python下载的速度差异,但是感觉两者速度差异不大,都不算很快;但是如果用手动下载的方法,提交并处理完毕请求后,用IDM等下载软件来下载,速度就会很快——至少比用浏览器自带的下载功能,或者Python下载,要明显快很多。
至此,大功告成。
全球气象数据ERA5的下载方法的更多相关文章
- SMOS数据产品介绍与下载方法
1. SMOS数据介绍 The Soil Moisture and Ocean Salinity (SMOS) 卫星是欧空局发射的一颗以探测地球土壤水含量以及海表盐度为目标的卫星,卫星所搭载的唯一载荷 ...
- SMAP数据产品介绍与下载方法
1 SMAP(Soil Moisture Active and Passive)数据介绍 SMAP baseline science data products在下面的表格中展示,这些数据产品可以从两 ...
- 基于python的《Hadoop权威指南》一书中气象数据下载和map reduce化数据处理及其可视化
文档内容: 1:下载<hadoop权威指南>中的气象数据 2:对下载的气象数据归档整理并读取数据 3:对气象数据进行map reduce进行处理 关键词:<Hadoop权威指南> ...
- OSM(OpenStreetMap)全球路网数据下载方式介绍
本文对OpenStreetMap(OSM)网页与各类OSM数据的多种下载方式加以详细介绍,并对不同数据下载方式加以对比. OSM数据包含道路与铁路路网.建筑.水体.土地利用.兴趣点.行政区边界 ...
- 全球DEM数据资源下载
想找有海底地形的全球DEM数据作为三维地球展示用,发现很多都是只有陆地DEM而不带海底的,而且还需要通过Web页面进行选择然后数据下载. 找到一个学校的Ftp可以直接下载数据集,特别是这篇文章几乎汇集 ...
- [原][bigemap][globalmapper]通过bigemap下载全球30米DEM高程数据(手动下载)(下载全球高精度dom卫片、影像、等高线、矢量路网、POI、行政边界)
本文研究了bigemap下载高程数据的方式,但是严重不推荐使用这总手动方式,bigemap这个软件一次只能下载100M以内的高程数据,即使花钱,也不给你提供批量下载dem的方式!也有些其他更好的软件, ...
- NOAA数据下载方法
NOAA OneStop https://data.noaa.gov/onestop/about NOAA 数据搜索平台,在一个地方同时搜索NOAA的 Geophysical, oceans, coa ...
- 广西省行政村边界shp数据/广西省乡镇边界/广西省土地利用分类数据/广西省气象数据/降雨量分布数据/太阳辐射数据
数据下载链接:数据下载链接 广西壮族自治区,地处中国南部,北回归线横贯中部,属亚热带季风气候区.南北以贺州--东兰一线为界,此界以北属中亚热带季风气候区,以南属南亚热带季风气候区. 数据范围:全 ...
- EB-SAM9G45裸机程序下载方法
开发板:EB-SAM9G45 这里提供一种裸程序下载的方法. 在官方提供的下载方法中有手动下载和自动下载,它们都离不开SAM-BA软件,而该软件使用比较麻烦,而且操作不当很容易导致电脑蓝屏,还有一个很 ...
- Java构造和解析Json数据的两种方法详解二
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...
随机推荐
- JS之Math.sin与Math.cos介绍及应用-实现鼠标点击后的烟花效果
基本介绍 Math.sin(x) :x 的正玄值.返回值在 -1.0 到 1.0 之间: Math.cos(x) :x 的余弦值.返回的是 -1.0 到 1.0 之间的数: 其中函数中是x是指&quo ...
- 这10种分布式ID,太绝了!
前言 分布式ID,在我们日常的开发中,其实使用的挺多的. 有很多业务场景在用,比如: 分布式链路系统的trace_id 单表中的主键 Redis中分布式锁的key 分库分表后表的id 今天跟大家一起聊 ...
- 系统编程-进程-当fork遇到管道,可能碰撞出什么?
第一部分 1. 直接上代码 #include <stdio.h> #include <unistd.h> #include <stdlib.h> int globv ...
- 《Vue.js 设计与实现》读书笔记(1-3章)
第 1 章.权衡的艺术 命令式 or 声明式 命令式:关注过程 声明式:关注结果 声明式直接声明想要的结果,框架帮用户封装好命令式的代码,所以在封装的过程中要做一些其他的事情来(生成要做的事情/找出差 ...
- JIT编译选项
JIT(Just-In-Time)优化在编译过程中有多种编译选项可以支持,不同语言和平台可能有不同的实现.以通用的 JIT 编译器为例,以下是一些常见的编译选项: 编译级别(Compilation L ...
- schedtune.colocatte的作用
schedtune.colocate 参数主要通过 /proc/sys/kernel/schedtune.colocate 接口进行配置.具体的使用方式和可选参数如下: 使用方法 你可以通过以下命令来 ...
- linux内核空间进程为什么无论如何切换,内核地址空间转换到物理地址的关系是永远不变的?
在Linux内核中,无论如何切换进程,内核地址空间转换到物理地址的关系是永远不变的,主要原因是内核地址空间在所有进程中是共享的.这种设计有几个关键点: 1. 内核地址空间共享 在Linux操作系统中, ...
- 04 Transformer 中的位置编码的 Pytorch 实现
1:10 点赞 16:00 我爱你 你爱我 1401 class PositionalEncoding(nn.Module): def __init__(self, dim, dropout, max ...
- Android复习(一)基础知识
1. 现在可以使用 Kotlin.Java 和 C++ 语言编写 Android 应用 2.Android四大组件依然坚挺,这是基础并且没有改变的迹象 Activity 服务 广播接收器 内容提供程序 ...
- Kubernetes的RBAC权限控制
role和roleBinding Role资源定义了哪些操作可以在哪些资源上执行.也可以直接控制访问的url的权限,下面的cluster也是这样. 查询所有service的demo: apiVersi ...