提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- ERA5数据下载
- nc数据下载方法
- 1.在网页上逐个下载
- 2.使用gsutil下载
- zarr数据下载方法
前言
目前,数据驱动的天气预报需要大量的ERA5数据,通常情况下,ERA5数据都可以从ERA5官网下载:
ERA5官网
然而,目前ERA5服务器连接过于繁忙,并且国内连接速度相当有限,因此从ERA5官网下载这些数据会非常慢。
幸运的是,谷歌在研发graphcast的过程中,下载了1940-2022年的ERA5数据,并且存储在了cloud storage中。同时,weatherbench2也提供了很多数据,但是是以zarr的方式存储。
本文将详细阐述如何下载并使用这些数据,包括气候态、气象变量等数据。
ERA5数据下载
使用谷歌云存储下载,首先需要一个谷歌账号,注册谷歌账号教程在这。
登陆谷歌账号后,进入云存储网站
在这里可以看到如图所示的内容:
左边第二栏是可以下载的数据
这里有两种数据可选,一直种是可在线调用的zarr格式数据,另一种是ERA5原格式文件nc格式数据。
nc数据下载方法
鉴于广大网友可能更多是做气象的,我们先讲nc数据
假设我们需要下载1996年1月6日全天的geopotential的全37层(从1000hpa到1hpa)的nc数据,其谷歌云存储地址为:
gcp-public-data-arco-era5/raw/date-variable-pressure_level/1996/01/06/geopotential
具体解析为“谷歌云数据地址/原始数据/逐pressure_level数据/1996年/1月/6日/位势变量”,进入该目录后可以看到这样的列表:
接下来有两种下载方式,
1.在网页上逐个下载
这个方式比较慢而且麻烦,但是不需要安装额外的扩展包(如gsutil),点选需要下载的大气层数据前面的小框,在点选“下载”即可
这种可以直接下载
2.使用gsutil下载
这里以linux系统为例,首先需要安装gsutil,点击这里进入说明,当然这个页面不容易进去,所以我们讲解安装方法:
确认您拥有受支持的 Python 版本。Google Cloud CLI 需要 Python 3.8 到 3.12。请注意,x86_64 Linux 软件包中包含默认首选的捆绑式 Python 解释器。
下载linux安装包 https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-477.0.0-linux-x86_64.tar.gz?hl=zh-cn
请运行以下命令:
tar -xf google-cloud-cli-477.0.0-linux-x86_64.tar.gz
将 gcloud CLI 添加到路径中。使用以下命令从解压缩到的文件夹的根目录运行安装脚本:
./google-cloud-sdk/install.sh
打开新终端,以使更改生效。之后便可以使用gsutil指令下载谷歌云存储的文件了。
回到刚才的下载页面,假设想要下载1996年1月6日所有变量的所有pressure_level的nc文件,只需在对应的变量位置框选:
接着就会弹出提示
即
gsutil -m cp -r \
"gs://gcp-public-data-arco-era5/raw/date-variable-pressure_level/1996/01/06/geopotential" \
这样就可以批量下载nc数据了。
注意这样下载的nc文件每个都是包含一天24小时的数据
zarr数据下载方法
zarr是一种分布式存储格式,可以直接通过python的xarray包在线读取并调用
首先确保已经安装了numpy,xarray,以及zarr
pip install numpy
pip install xarray
pip install zarr
接着编写python脚本
这里以下载weatherbench2的climatology为例
进入网站 https://console.cloud.google.com/storage/browser/weatherbench2;tab=objects?prefix=&forceOnObjectsSortingFiltering=false
import xarray as xr
import numpy as np
climatology = xr.open_zarr('gs://weatherbench2/datasets/era5-hourly-climatology/1990-2019_6h_1440x721.zarr')
假设我们还是下载geopotential的气候态
geopotential=climatology.geopotential
for idx in range(geopotential.shape[1]):
temp=geopotential[:,idx]
file_name = '想放置的文件目录/geopotential'+'_'+str(idx)+'.npy'
np.save(file_name,temp)
一般来讲该数据的维度为366x[4,721,1440]
.
每日气候态只有0,6,12,18四个时间点。
这样可以保存逐日的气候态文件
其他zarr文件下载方式同理