代码编织梦想

本文介绍了如何通过Python脚本和Internet Download Manager(IDM)软件批量下载ERA5数据。

1. ERA5数据简介

  • ERA5是第五代ECMWF大气再分析全球气候数据,该数据集的第一部分现在可以公开使用(1979年到3个月内)。ERA5数据提供每小时的大气、陆地和海洋气候变量的估计值,地球数据精确到了30km网格,包括了137层的大气数据。
  • ERA5数据位于Climate Data Store(CDS)网站上,网址如下:https://cds.climate.copernicus.eu/cdsapp#!/search?type=dataset&text=ERA5

2. 准备工作

在这里插入图片描述

  • (2) 获取API key
  • 注册完成后,进行登录,点击右上角的用户,查看用户信息:

在这里插入图片描述

  • 记录下UID和API key,稍后需要用到。

  • (3) 配置并安装CDS API

  • 在路径 “C:\Users\用户名” 底下创建 “.cdsapirc” 文件(先创建一个 “.cdsapirc.txt” 文件,然后再把 “.txt” 删掉),在 “.cdsapirc” 文件中输入如下内容:

url: https://cds.climate.copernicus.eu/api/v2
key: UID:API Key
  • 打开控制台,在cmd中输入如下命令,安装cdsapi第三方库。
pip install cdsapi
  • (4) 安装和配置IDM软件
  • IDM是 “Internet Download Manager” 的简称,是一款非常强大的下载软件。
  • 安装包链接:https://pan.baidu.com/s/1iojjYOg_Y2NdMcmJahz_pw ,提取码:dimq,版本为v6.36 Build 7,资源来自胡萝卜周。
  • 下载好安装包后打开文件夹,双击 “idman636build7.exe” 开始安装IDM,一直点击前进,安装至默认位置即可。
  • 将破解补丁复制到IDM安装目录下(默认位置为 “C:\Program Files (x86)\Internet Download Manager” ),双击运行破解补丁,点击 “破解IDM”,破解后点击 “完成” 关闭补丁。
  • 注意:不要更新IDM,否则可能会导致软件不可用。
  • 对IDM进行配置,打开软件,在主界面中找到 “选项”,打开。

在这里插入图片描述

  • 在选项窗口中,找到 “连接” 页面,修改 “连接类型/速度”为 “较高速率连接:局域网/Wi-Fi/移动网络4G/其他”,修改 “默认最大连接数”为16,点击 “确定” 完成配置。

在这里插入图片描述

  • 至此,下载前准备工作完成。

3. 批量下载

  • 下载单个数据:
  • 选择所需要的数据,以 “ERA5 hourly data on single levels from 1979 to present” 数据集为例,打开数据页面,选择 “Download data”,在页面中根据自己需要进行数据选择。

在这里插入图片描述

  • 数据选择完后,将页面翻到底,可以看到 “Show API request” 的选项,点击后会出现如下代码:
import cdsapi  # 导入cdsapi库

c = cdsapi.Client()  # 创建用户

# 下载数据
c.retrieve(
    'reanalysis-era5-single-levels',  # 数据集名称
    {
        'product_type': 'reanalysis',  # 产品类型
        'format': 'netcdf',  # 数据格式
        'variable': '2m_temperature',  # 变量名称
        'year': '1979',  # 年
        'month': '01',  # 月
        'day': [  # 日
            '01', '02', '03',
            '04', '05', '06',
            '07', '08', '09',
            '10', '11', '12',
            '13', '14', '15',
            '16', '17', '18',
            '19', '20', '21',
            '22', '23', '24',
            '25', '26', '27',
            '28', '29', '30',
            '31',
        ],
        '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',
        ],
    },
    'download.nc')  # 存储文件名称
  • 将上述代码复制到Python中运行,即可下载1979年1月全球2 m温度再分析数据。
  • 但是,上述方法通过Python来下载,速度较慢,且无法批量下载。
  • 批量下载数据:
  • 例如,要下载 “ERA5 hourly data on single levels from 1979 to present” 数据集中1979年到2020年每个月的全球2 m温度再分析数据,并保存为nc文件。
import cdsapi
import calendar

c = cdsapi.Client()  # 创建用户

# 数据信息字典
dic = {
    'product_type': 'reanalysis',  # 产品类型
    'format': 'netcdf',  # 数据格式
    'variable': '2m_temperature',  # 变量名称
    'year': '',  # 年,设为空
    'month': '',  # 月,设为空
    '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'
    ]
}

# 通过循环批量下载1979年到2020年所有月份数据
for y in range(1979, 2021):  # 遍历年
    for m in range(1, 13):  # 遍历月
        day_num = calendar.monthrange(y, m)[1]  # 根据年月,获取当月日数
        # 将年、月、日更新至字典中
        dic['year'] = str(y)
        dic['month'] = str(m).zfill(2)
        dic['day'] = [str(d).zfill(2) for d in range(1, day_num + 1)]
        filename = 'E:\\Data\\ERA5\\1979-2020\\2m_temperature\\' 
        			+ str(y) + str(m).zfill(2) + '.nc'  # 文件存储路径
        c.retrieve('reanalysis-era5-single-levels', dic, filename)  # 下载数据
  • 上述代码虽然实现了批量下载,但还是通过Python下载,下载速度慢。为了提高下载速度,使用IDM软件进行下载,这需要获取每个数据的下载地址,可以通过下列代码实现:
r = c.retrieve('reanalysis-era5-single-levels', dic, )  # 文件下载器
url = r.location  # 获取文件下载地址
  • 然后将文件下载地址添加进IDM软件中实现快速下载:
from subprocess import call

def idmDownloader(task_url, folder_path, file_name):
    """
    IDM下载器
    :param task_url: 下载任务地址
    :param folder_path: 存放文件夹
    :param file_name: 文件名
    :return:
    """
    # IDM安装目录
    idm_engine = "C:\\Program Files (x86)\\Internet Download Manager\\IDMan.exe"
    # 将任务添加至队列
    call([idm_engine, '/d', task_url, '/p', folder_path, '/f', file_name, '/a'])
    # 开始任务队列
    call([idm_engine, '/s'])
  • 批量下载完整代码:
import cdsapi
import calendar
from subprocess import call


def idmDownloader(task_url, folder_path, file_name):
    """
    IDM下载器
    :param task_url: 下载任务地址
    :param folder_path: 存放文件夹
    :param file_name: 文件名
    :return:
    """
    # IDM安装目录
    idm_engine = "C:\\Program Files (x86)\\Internet Download Manager\\IDMan.exe"
    # 将任务添加至队列
    call([idm_engine, '/d', task_url, '/p', folder_path, '/f', file_name, '/a'])
    # 开始任务队列
    call([idm_engine, '/s'])


if __name__ == '__main__':
    c = cdsapi.Client()  # 创建用户

    # 数据信息字典
    dic = {
        'product_type': 'reanalysis',  # 产品类型
        'format': 'netcdf',  # 数据格式
        'variable': '2m_temperature',  # 变量名称
        'year': '',  # 年,设为空
        'month': '',  # 月,设为空
        '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'
        ]
    }

    # 通过循环批量下载1979年到2020年所有月份数据
    for y in range(1979, 2021):  # 遍历年
        for m in range(1, 13):  # 遍历月
            day_num = calendar.monthrange(y, m)[1]  # 根据年月,获取当月日数
            # 将年、月、日更新至字典中
            dic['year'] = str(y)
            dic['month'] = str(m).zfill(2)
            dic['day'] = [str(d).zfill(2) for d in range(1, day_num + 1)]

            r = c.retrieve('reanalysis-era5-single-levels', dic, )  # 文件下载器
            url = r.location  # 获取文件下载地址
            path = 'E:\\Data\\ERA5\\1979-2020\\2m_temperature'  # 存放文件夹
            filename = str(y) + str(m).zfill(2) + '.nc'  # 文件名
            idmDownloader(url, path, filename)  # 添加进IDM中下载

4. 最后

  • 内容仅供大家学习参考,若有不足之处,敬请大家批评指正!
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39373443/article/details/118086241

era 数据下载指南 (python)_hydromonkey的博客-爱代码爱编程

说明:数据是用python下载的,安装python请百度。 第一步:注册账号,尽量用gmail邮箱。 第二步:在c盘 用户/用户名 这个目录下创建一个 .ecmwfapirc的文件(以点开头,以点结尾) 第三步:打开https://confluence.ecmwf.int/display/WEBAPI/Access+ECMWF+Public+Da

era 数据下载需要注意的问题_hydromonkey的博客-爱代码爱编程

首先附上官网的解释,有兴趣可看: https://confluence.ecmwf.int/pages/viewpage.action?pageId=56658233 这张图说的非常清楚: 对steps选择的疑问:     从 00:00  12:00 出发, 分别有:3, 6, 9,  12 这几个步长可选,例如选0,3,代表从0点开始,到

下载era5数据_wangsy~的博客-爱代码爱编程_era5数据是什么

前言 本文主要总结了一下下载ERA5数据的经验和方法,主要分为Windows系统和Mac系统两部分;还附带了一些搜索到的比较好的相关经验,比如批量下载的方法 目录 1.ERA5数据简介 2.window系统下载ERA5

ECMWF气象数据(ERA Interim和ERA 5)下载(1)-爱代码爱编程

ECMWF的数据集 手动下载: ERA Interim[地址]正在逐步淘汰。强烈建议用户迁移到ERA5[地址]。 ERA Interim中提供的最后日期为2019年8月31日。 下载中的相关参数介绍:ERA5术语:分析和预测;时间和步长;瞬时、累积、平均速率和最小/最大参数 **术语“single levels”**用来表示变量是

ERA5数据批量下载-爱代码爱编程

欧洲数值预报中心-ERA5数据下在 本文提供了一个下载ERA5-land hourly data 的示例 import cdsapi import numpy as np import calendar import os # define directory in which data shall be stored os.chdir("F:/er

CSDN MarkDown 操作手册 源码语法-爱代码爱编程

@[TOC](这里写自定义目录标题) # 欢迎使用Markdown编辑器 你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 或者选择个人菜单 -- 帮助 -- 点击 MarkDown帮助 有源码 ## 新的改变 我们

ERA5数据批量下载-多进程-爱代码爱编程

本人之前的博客中介绍了批量下载ERA5数据的方法,在这里再此对方法进行优化,采用多进程下载。采用的Python 的Multiprocessing。 可以根据需求选择相应的参数、空间范围、分辨率、时间等等。 __author__ = "LNH" import cdsapi import numpy as np import calendar import

2021-01-01 如何批量下载ERA5数据-爱代码爱编程

由于笔者在工作中需要用到ERA5的雨水路径(Total column rain water)数据,因此需要批量下载该数据。本文将以下载Total column rain water为例,记录ERA5的批量下载(使用Python多进程并行下载)方法,以备日后查看。 本次示例的实现平台和工具: 操作系统:ubuntu20 下载工具:python3 特

全球气象数据下载-ERA5数据-爱代码爱编程

ERA5数据下载 ERA5数据是在ERA-Interim数据之后的新数据库,时间跨度1981年—至今,分辨率0.1°。数据库包含月均数据和日尺度数据。ERA5数据链接 文章目录 ERA5数据下载一.常规下载二.API接口下载 一.常规下载 例如下载日尺度数据,进入上方给的数据连接后选择如下选项进入后,可以在主界面看到ERA5数据的简介、数

python处理era5_ERA5数据python下载教程(Windows用户)-爱代码爱编程

具体的教程官网有提供,想看详细信息可以参考:https://confluence.ecmwf.int/display/CKB/How+to+install+and+use+CDS+API+on+Windows 这里提供一个简单的教程供大家参考: 1.注册账号:https://cds.climate.copernicus.eu/#!/home 2.

可能是最详尽的ERA5数据python API下载教程-爱代码爱编程

ERA5数据下载教程 文章目录 ERA5数据下载教程前言一、ERA5数据是什么二、操作步骤1.注册ECMWF账号2.本地准备工作3.数据下载结语 前言 由于网上下载ERA5数据的教程要么描述不够清晰,要么缺少时效性,因此本文在保证时效性的同时总结了前人的教程,尽可能对ERA5数据的下载流程做一个清晰的介绍。 注:本文部分内容整理自官方文档.

Python 批量下载 ERA-5 Reanalysis 数据-爱代码爱编程

ECMWF大气再分析数据集 ERA-interim 已被 ERA-5 数据集取代,ERA-5 详细信息看这里    下面介绍下载的具体步骤:   1. 要下载 ERA-5 数据集,需要先注册一个 CDS 账号。登录之后进入 Climate Data Store API 页面复制自己的 key 和 url,如下图 2. 创建 .cdsapirc

如何优雅的下载ERA5数据,ERA5 hourly data on pressure levels from 1979 ...-爱代码爱编程

写这篇博客只为三件事,速度!速度!还是速度! 目前的研究需要气象数据,之前使用的NASA的MERRA2数据。其特点为文件多,单文件体积小。下载方式一个插件和一个downThenAll就解决了(网站机制问题:需要定期刷新)。现如今改战ERA5,sing level的还好说,一个4G左右,用网页端直接下载,慢的时候多点刷新也就完了。最令人智熄的还是其中的RH

利用python批量下载era的数据_python下载era-爱代码爱编程

终于开始用python了,只学了两天的python小白上线下载数据(被逼的)。 其实这个有一些很好的教程,我直接粘贴好了。批量下载的教程 其中的一些参数官网的解释很清楚的,可以先试着下载一个月的数据,再获取它的request提供参考 最后是我的一些代码,以及注释 这是下载era-40里面的2mt数据,并且只下载纬度80N以北的数据,注意看参数。格网

免费的气象数据(gldas、era5)下载步骤及数据处理的详细过程-爱代码爱编程

需要气象数据的小伙伴们看过来呦!首先声明,能够免费下载的气象数据一般分辨率比较低哟! 一、GLDAS数据 1.下载地址:(GLADS下载地址)GLADS数据分有3h、一天、一个月的产品,大家可以根据自己的需求进行下载。 2

era5气象数据下载经验分享_为什么下载era5数据才kb/s-爱代码爱编程

       近期因为课题要求,需要下载ERA5的月均数据和日数据,因此学习一下网上关于这套数据的下载方法,并进行了一个简单的总结,方便大家学习,有错误的地方欢迎大家交流!        首先大家需要注册一个ERATHDATA的账号,比较简单,提供个人邮箱,qq邮箱或者学校的邮箱都可以,注册网址:Copernicus Climate Data Store