python批量下载EC—ERA5再分析资料

说明


1. 注册账户获得key。

网址:
https://cds.climate.copernicus.eu/#!/home
将url和key先存储在txt文件中,

  • 文件名(须注意在字符串前面有个.): .cdsapirc
  • 文件位置:C:\Users[name],这里[name]是你的电脑的名字,例如C:\Users\zhzh
image.png
  • 文件内容:
image.png

URL一行是固定的内容, 第二行中包括两个部分的信息,其中UID和APIKey在账号登录后可以找到


image.png

2. 安装cdsapi

  • 可以直接运行cmd,在命令行里输入pip install cdsapi,运行之后即可


    image.png
  • 设置
    如果建立的文件夹为ERA5_dl作为程序的工程位置,在pycharm运行环境中File>settings>Project:ERA_dl
    点+号添加cdsapi


    image.png

3. 下载数据

[以下内容来自网络,暂时还没有测试。。。2019-09-23]

#!/usr/bin/env python

import cdsapi

c = cdsapi.Client()

c.retrieve(
    'reanalysis-era5-single-levels',
    {
        'product_type':'reanalysis',
        'variable':[
            'total_column_ozone','total_column_water_vapour'
        ],
        'year':'2019',
        'month':'01',
        'day':'23',
        'time':[
            '00:00','01:00','02:00',
            '03:00','04:00','05:00',
            '06:00','07:00','08:00',
            '09:00','10:00','11:00',
            '12:00','13:00','14:00',
            '15:00','16:00','17:00',
            '18:00','19:00','20:00',
            '21:00','22:00','23:00'
        ],
        'format':'netcdf'
    },
    'download.nc')

这里只能下载单一时间,而且数据名为 ‘download.nc’。

我希望将我想下载的时间存入txt(时间文件inputpar.txt),直接批量下载,数据存储形式改为CDS+时间,代码如下:

# author = yc

import cdsapi

def  download_cds():

    c = cdsapi.Client()
    lines = open("inputpar.txt", 'r').readlines()

    for i in range(len(lines)):
        if i%2==0:
            fields = lines[i].split(' ') #split data
            year = fields[0]
            month = fields[1]
            day = fields[2]

            print('Download %s-%s-%s data'% (year,month,day))
            c.retrieve(
                'reanalysis-era5-single-levels',
                {
                    'product_type': 'reanalysis',
                    'variable': [
                        'total_column_ozone', 
                        'total_column_water_vapour'
                    ],
                    'year': year,
                    'month': month,
                    'day': day,
                    'time': [
                        '00:00', '01:00', '02:00',
                        '03:00', '04:00', '05:00',
                        '06:00', '07:00', '08:00',
                        '09:00', '10:00', '11:00',
                        '12:00', '13:00', '14:00',
                        '15:00', '16:00', '17:00',
                        '18:00', '19:00', '20:00',
                        '21:00', '22:00', '23:00'
                    ],
                    'format': 'netcdf'
                },
            'CDS%s%s%s'% (year,month,day)+'.nc')
            print('Datafile CDS%s%s%s'% (year,month,day)+'.nc download successful')
        else:
            pass

if __name__ == '__main__':
    download_cds()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,511评论 0 17
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,808评论 0 10
  • # 一度蜜v3.0协议 --- # 交互协议 [TOC] ## 协议说明 ### 请求参数 下表列出了v3.0版协...
    c5e350bc5b40阅读 670评论 0 0
  • 接口测试自动化的优点: 1,web自动化说起来很多人都会直接想到UI自动化这个设计,很少有人直接第一个概念是接口自...
    路边看雪的小男孩阅读 4,941评论 1 26
  • 今儿劳动节,向全世界劳动人民致敬。 为了表示对节日的重视,中午打算做几道菜,跟妈咪一起过节。 她一早就起来搞卫生,...
    Effie0910阅读 220评论 0 0