前期准备(烦)
装好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是你激活win10的用户名
把上一步的TXT移动到这个目录下,并重命名为
.ecmwfapirc
,即把后缀名给去掉
结果如图:
第二步 安装ecmwf-api-client库
官网说明如图
具体操作为
打开你的
Anaconda Promt
这个也是命令提示符形式的窗口,
win7不能复制粘贴只能手动输入,win10可以复制粘贴
输入
pip install ecmwf-api-client
按下回车就装好了
-------------------分割线--------------------
以上步骤为前期配置,配置好了就不用管了
之后的下载就写脚本运行脚本就好了
但是第一步一年要重复一次
-------------------分割线--------------------
欧洲中心(WCMWF)的Python下载方法
官网登录
然后找到
Public Datasets
数据集传送门
位势场 资料下载
#
!
/
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”
,
}
)
以下为下载数据的完整代码
#
!
/
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年每年数据单独存放