Python --欧洲中心资料下载

系统 1447 0

前期准备(烦)

装好python

传送 门!

去欧洲中心申请一个账号

传送
Python --欧洲中心资料下载_第1张图片
自己看着申请吧,可能要翻墙申请

Python的前期配置

欧洲中心自带教程传送门
简单来说,就是用python链接欧洲中心的api接口调用并下载数据
所以前期配置分两步
1、让电脑保留你的登录用户信息,并且可以让Python识别、使用
2、Python安装一个用于调用欧洲中心api接口的库
下面介绍详细步骤

第一步 获取ECMWF的 Key

Python --欧洲中心资料下载_第2张图片
首先 登录 欧洲中心官网
然后上一个传送门就变成这样 (我打了马赛克)
Python --欧洲中心资料下载_第3张图片
你可以得到灰色区域里的 5 行代码如下, 包括大括号

            
              
                {
              
              
                "url"
              
              
                :
              
              
                "https://api.ecmwf.int/v1"
              
              
                ,
              
              
                "email"
              
              
                :
              
              
                "你的用户名"
              
              
                ,
              
              
                "key"
              
              
                :
              
              
                "你用户名对应的一串key(相当于密码)"
              
              
                }
              
            
          

然后复制你网页上的这5行
在你桌面创建一个TXT并粘贴进去
Python --欧洲中心资料下载_第4张图片
保存并关闭TXT文件
重命名为 .ecmwfapirc.txt ,注意文件名开头就有个 . ,后缀是 .txt
在这里插入图片描述
然后打开你的计算机、c盘、用户文件夹
win7可能如图
在这里插入图片描述
win10 可能是 C:\Users\ \ 其中USERNAME是你激活win10的用户名

把上一步的TXT移动到这个目录下,并重命名为 .ecmwfapirc ,即把后缀名给去掉
结果如图: 在这里插入图片描述

第二步 安装ecmwf-api-client库

官网说明如图
Python --欧洲中心资料下载_第5张图片
具体操作为
打开你的 Anaconda Promt
Python --欧洲中心资料下载_第6张图片
Python --欧洲中心资料下载_第7张图片
这个也是命令提示符形式的窗口,
win7不能复制粘贴只能手动输入,win10可以复制粘贴
输入 pip install ecmwf-api-client 按下回车就装好了

-------------------分割线--------------------

以上步骤为前期配置,配置好了就不用管了

之后的下载就写脚本运行脚本就好了

但是第一步一年要重复一次

-------------------分割线--------------------

欧洲中心(WCMWF)的Python下载方法

官网登录
然后找到 Public Datasets 数据集传送门
Python --欧洲中心资料下载_第8张图片

位势场 资料下载

选取资料如下
Python --欧洲中心资料下载_第9张图片
得到一个python脚本
Python --欧洲中心资料下载_第10张图片

            
              #
              
                !
              
              
                /
              
              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年每年数据单独存放


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论