当前位置: 首页 > news >正文

基于python下载ERA5小时尺度和月尺度的数据

前言:由于ERA5网站的更新,原始的代码都无法使用,这里将会提供下载小时尺度和月尺度的代码。

一、前期的工作
需要重新在ERA5网站上注册新的账号(ERA5网站)。然后在User guide里,选择API,将代码复制到文本里,将文本的名字改为:.cdsapirc。然后将文本放在C盘用户的下面。此外需要下载IDMan.exe,CSDN上有很多教程。
在这里插入图片描述
二、下载小时尺度的代码

import cdsapi
import calendar
from subprocess import call
import time
from cdsapi import Client, api


def idmDownloader(task_url, folder_path, file_name):
    """ IDM下载器 """
    idm_engine = r"D:\\IDM\\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-era5-land"],
    "variable": ["surface_solar_radiation_downwards"],
    # "variable": ["surface_solar_radiation_downwards", "surface_thermal_radiation_downwards", "surface_pressure",
    #                  "2m_temperature", "2m_dewpoint_temperature"],
    "year": [],
    "month": [],
    "day": [],
    "time": [ "17:00"],
    "data_format": "netcdf",
    "area": [41, -87, 39, -85],
    "download_format": "unarchived"
}


    for y in [2013]:
        for m in range(5, 9):
            day_num = calendar.monthrange(y, m)[1]
            for d in range(1, day_num + 1):
                dic['year'] = str(y)
                dic['month'] = str(m).zfill(2)
                dic['day'] = str(d).zfill(2)
                r=c.retrieve('reanalysis-era5-land', dic)
                url = r.location
                path = r'F:\PhD\urbanET_downscaled\ERA5\rsd_17'
                filename = str(y) + str(m).zfill(2) + str(d).zfill(2) + 'rsd17.nc'



                idmDownloader(url, path, filename)

三、下载月尺度的代码

import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
import cdsapi

import calendar
from subprocess import call


def idmDownloader(task_url, folder_path, file_name):
    """ IDM下载器 """
    idm_engine = r"D:\\IDM\\Internet Download Manager\\IDMan.exe"
    call([idm_engine, '/d', task_url, '/p', folder_path, '/f', file_name, '/a'])
    call([idm_engine, '/s'])


c = cdsapi.Client()

dic = {
    'product_type': 'monthly_averaged_reanalysis',
    'variable': 'total_precipitation',
    'year': [],
    'month': [],
    'time': '00:00',
    'area': [90, -180, -90,
                180,],
    'data_format': 'netcdf',
     'download_format': 'unarchived'
}

for y in range (2003,2020):
    for m in range (1,13):
        dic['year'] = str(y)
        dic['month'] = str(m).zfill(2)

        # name = str(y)+str(m).zfill(2)+'.nc'
        r=c.retrieve('reanalysis-era5-land-monthly-means',dic)
        url = r.location
        path = r'F:\PhD\Mult_year_ET\Pre\nc'
        # filename = 'F:\\PhD\\Mult_year_ET\\Pre\\nc\\' + str(y) + str(m).zfill(2) + '_pre.nc'
        filename = str(y) + str(m).zfill(2)  + '_pre.nc'
        idmDownloader(url, path, filename)
        print(filename)

以上代码可以满足小时尺度和月尺度对ERA5在分析资料数据的下载。
长路漫漫…
唯有坚持…

相关文章:

  • 【Java开发指南 | 第三十四篇】IDEA没有Java Enterprise——解决方法
  • [从零开始学习JAVA] 新版本idea的数据库图形化界面
  • JVM RuntimeDataArea 成分
  • libwebsockets实现异步websocket客户端,服务端异常断开可重连
  • LangChain教程 - Agent -之 ZERO_SHOT_REACT_DESCRIPTION
  • Aliyun CTF 2025 web ezoj
  • 云原生容器编排:Kubernetes的架构演进与实践
  • python中time模块的常用方法及应用
  • 蓝桥杯2024年第十五届省赛真题-成绩统计
  • 深入探索 Rust 的高级 Traits
  • Unity使用UGUI制作无限滑动列表
  • BambuStudio学习笔记:Model
  • postgresql 15.2 用pgbackup搭建备库后,主从复制一直无法启动
  • 从0到1入门Docker
  • word毕业论文“et al.”替换为“等”——宏
  • 爱迪斯通科技携手北京晨光溢海参展2025年北京教育装备展
  • MySQL:MySQL库和表的基本操作
  • Vue Amazing UI插件推荐
  • 【二分算法】-- x的平⽅根(easy)
  • @ComponentScan和@SpringBootApplication的scanBasePackages 同时使用
  • 刘国中将出席第78届世界卫生大会并顺访瑞士、访问白俄罗斯
  • 打击网络侵权盗版!四部门联合启动“剑网2025”专项行动
  • 阿联酋与美国达成超过2000亿美元协议
  • 深圳南澳码头工程环评将再次举行听证会,项目与珊瑚最近距离仅80米
  • 曾犯强奸罪教师出狱后办教培机构?柳州鱼峰区教育局回应
  • 工商银行杭州金融研修院原院长蒋伟被“双开”