Python --欧洲中心资料下载

前期准备(烦)

装好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数据集传送门
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年每年数据单独存放

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值