前期准备(烦)
装好python
去欧洲中心申请一个账号
传送
自己看着申请吧,可能要翻墙申请
Python的前期配置
欧洲中心自带教程传送门
简单来说,就是用python链接欧洲中心的api接口调用并下载数据
所以前期配置分两步
1、让电脑保留你的登录用户信息,并且可以让Python识别、使用
2、Python安装一个用于调用欧洲中心api接口的库
下面介绍详细步骤
第一步 获取ECMWF的 Key
首先登录欧洲中心官网
然后上一个传送门就变成这样 (我打了马赛克)
你可以得到灰色区域里的5行代码如下,包括大括号
{
"url": "https://api.ecmwf.int/v1",
"email": "你的用户名",
"key": "你用户名对应的一串key(相当于密码)"
}
然后复制你网页上的这5行
在你桌面创建一个TXT并粘贴进去
保存并关闭TXT文件
重命名为.ecmwfapirc.txt
,注意文件名开头就有个.
,后缀是.txt
然后打开你的计算机、c盘、用户文件夹
win7可能如图
win10 可能是 C:\Users\<USERNAME>\
其中USERNAME是你激活win10的用户名
把上一步的TXT移动到这个目录下,并重命名为.ecmwfapirc
,即把后缀名给去掉
结果如图:
第二步 安装ecmwf-api-client库
官网说明如图
具体操作为
打开你的 Anaconda Promt
这个也是命令提示符形式的窗口,
win7不能复制粘贴只能手动输入,win10可以复制粘贴
输入pip install ecmwf-api-client
按下回车就装好了
-------------------分割线--------------------
以上步骤为前期配置,配置好了就不用管了
之后的下载就写脚本运行脚本就好了
但是第一步一年要重复一次
-------------------分割线--------------------
欧洲中心(WCMWF)的Python下载方法
官网登录
然后找到Public Datasets数据集传送门
位势场 资料下载
选取资料如下
得到一个python脚本
#!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
# python 的库 需提前安装 也可以在prompt里pip安装或conda安装
server = ECMWFDataServer()
server.retrieve({
"class": "ei",
"dataset": "interim",
#数据集 不可更改
"date": "19790101/19790201/19790301/19790401/19790501/19790601/19790701/19790801/19790901/19791001/19791101/19791201",
# date 时间 可自己挑选
"expver": "1",
"grid": "0.75/0.75",
# 网格精度 可以自己改
"levelist": "500",
# 高度层 可自己改 如 200/300/500
"levtype": "pl",
"param": "129.128",
# 变量代码 不可更改 格式为 xxx.xxx
"step": "0",
# 数据时间步长 可更改
"stream": "mnth",
"time": "00:00:00",
# 每日数据时间 可更改
"type": "an",
"target": "output",
#文件下载位置 用完整路径名代换output
# 注意:此下载数据格式默认为grid格式 换成nc格式需添加一句
# “format”: “netcdf”,
"area": "90/-180/-90/180" "可选的经纬度范围,按照下面图中的格式来就好"
})
以下为下载数据的完整代码
#!/usr/bin/env python
time=''
mon=['01','02','03','04','05','06','07','08','09','10','11','12']
for i in range(1979,2019):
for j in range(0,12):
time=time+str(i)+mon[j]+'01/'
time=time[:-1]
# 自己补足时间序列 注意:月平均数据的时间格式 19790101 ,而19070102是错的
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
server.retrieve({
"class": "ei",
"dataset": "interim",
"date": time,
"expver": "1",
"grid": "0.75/0.75",
"levelist": "500",
"levtype": "pl",
"param": "129.128",
"step": "0",
"stream": "mnth",
"time": "00:00:00",
"type": "an",
"target": "C:\\Users\\Administrator\\Desktop\\作业大白\\weishi79_18.nc",
"format": "netcdf",
})
下载单日 (非月平均) 数据时
date的设置可以用to连接起始日期和截止日期
注意日期格式
"date": "2017-01-01/to/2017-12-31",
即可批量下载2017年一年的逐日数据
注意:下载的数据是放在一个文件里的
若想每个月的数据单独存成一个nc文件,需掌握其他的python语法
例如:
!/usr/bin/env python
from ecmwfapi import ECMWFDataServer
server = ECMWFDataServer()
for i in range(2000,2018):
server.retrieve({
"class": "ei",
"dataset": "interim",
"date": "{ks}-01-01/to/{js}-12-31".format(ks=i,js=i),
"expver": "1",
"grid": "0.125/0.125",
"levtype": "sfc",
"param": "58.162/78.162",
"step": "0",
"stream": "oper",
"time": "00:00:00",
"type": "an",
"target": "F:\\ecmwf\\%s.nc"%str(i),
"format": "netcdf"
})
以上为2018-2017年每年数据单独存放