Python下载ERA5数据简单粗暴教程
Author: Syy, IAP, China.
2019.6.16
写在前面的话:对不起大家,这气象家园上传图片我是真搞不懂。所以,下面可见的就只有文字,图文并茂的内容放在附件pdf文件里;附件还有个test.py文件,也就是下载ERA5的py文件。
话不多说,直接上干货。本文主要从Python安装,到最后用py文件批量下载ERA5数据进行介绍(步骤非常详细,小白可以掌握的!)。
一. Python安装
网上有很多Python安装包,平时大家说的是直接到Python官网下载,这个包比较小(优点),其他需要用到的库都要自己进行下一步安装(缺点)。我要说的是Anaconda,这是Python的一个科学计算发行版,内置了数百个Python常用库,包括做机器学习或数据挖掘的库等。它自动集成了最新版的MKL(Math Kernel Library)库,能加速矩阵运算和线性代数运算(emm这里不看也罢,看不懂也没关系,反正下ERA5用不到这些,但会用到conda,优点一会儿再说,总之就按步骤下吧!)。
Python安装步骤:
(2) 安装Anaconda
(3) 确认Anaconda能调用Python
安装完Anaconda之后,开始菜单会出现Anaconda文件夹(like this):
我们接下来会用到Anaconda Prompt和Spyder。
点击Anaconda Prompt,会出现命令行窗口。输入python,回车,出现如下界面(不报错)即可。
试用python命令:输入print(‘You are excellent!’),回车,屏幕正常输出不报错即可。
退出python,调用ipython:输入exit(),回车,退出python;输入ipython,回车出现如下界面(不报错)。
试用ipython命令:输入print(‘You are excellent!’),回车,屏幕正常输出不报错即可。
至此,上面步骤没有任何问题的话,恭喜你已经成功安装好Anaconda/Python!
二. 下载ERA5
(1) 在Climate Data Store(CDS)注册账号并登陆,网址https://cds.climate.copernicus.eu/user/register?destination=%2F%23!%2Fhome
(2) 安装CDS API :
这一步就体现出Anaconda的优势了!当然其实是因为有conda。欧洲中心官网是这么介绍(https://confluence.ecmwf.int/display/CKB/How+to+install+and+use+CDS+API+on+Windows)的,很多字,但我们有Anaconda,所以就只需要看红框的内容就可以了!如下:
Emm。。。看不太清,自己去官网对应一下吧。总之步骤就是:
还是打开AnacondaPrompt,直接按官网指导,输入conda config --add channels conda-forge,回车;再输入condainstall cdsapi,回车。然后等待,会问你Proceed ([y]/n)?,你就输一个y,回车。然后就可以等它完成了(注意过程中要联网)!
至此,恭喜你已经完成CDS API的安装,距离成功又近了一步!
(3) 在这个目录下C:\Users\Username\ 新建一个txt文件,命名为.cdsapirc.txt。
(4) 确保已经登陆CDS之后,打开这个网址(https://cds.climate.copernicus.eu/api-how-to),复制你的API key(下图红框里的两行),并粘贴到那个.cdsapirc.txt文件中,保存,关闭。
(5) 将这个文件重命名为.cdsapirc.(即删除txt这三个字母,注意新命名的文件前后各有一个点),系统会提示文件不可用,点确定即可。完事儿就是这样:
(6) 好了,前期工作终于全部做完了,接下来正式开始下载ERA5!
搜索ERA5,再选择Datasets,会出现
选择你需要的资料,本文以ERA5 hourly data on pressure levels from 1979 to present为例。点进去,选择Download data,在这个页面选择你需要的pressure level,variable, time等,最后注意先accept the licence,然后Show API request。
打开Spider(开始菜单—Anaconda3--Spider),新建一个文件(本文命名为test.py),保存到Python安装目录。
将刚刚Show API request得到的代码复制粘贴到Spider程序的test.py文件中。把程序最后“download.nc”改成自己电脑上的路径和名称,分辨率也可以调一下,然后run就可以了。像这样,
剩下的就靠自己去悟了!哈哈哈!(最好有点python的基础知识。。。)