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

基于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在分析资料数据的下载。
长路漫漫…
唯有坚持…


http://www.kler.cn/a/581333.html

相关文章:

  • 【反无人机数据集】【目标检测】基于深度学习和距离分析的无人机检测图像处理技术应用
  • 基于MATLAB的冰块变化仿真
  • XTDrone调试报错问题集锦
  • 动态规划详解(二):从暴力递归到动态规划的完整优化之路
  • NLP常见任务专题介绍(2)-多项选择任务(MultipleChoice)训练与推理模板
  • SpringBoot开发——整合SpringReport开源报表工具
  • Git的命令学习——适用小白版
  • Android实现Socket通信
  • Chrome 扩展开发 API实战:Bookmarks(二)
  • Python高级之操作Mysql
  • 华为OD机试 - 平均像素值-贪心算法(Java 2024 E卷 100分)
  • 【区块链+ 医疗健康】基于区块链和AI 技术的儿童近视防控大数据平台 | FISCO BCOS 应用案例
  • iTextSharp-PDF批量导出
  • 3.3.2 用仿真图实现点灯效果
  • 软考高级信息系统项目管理师笔记-第22章组织通用治理
  • nginx的使用
  • Ubuntu22.04修改root用户并安装cuda
  • 网络安全之命令
  • 发展史 | 深度学习 / 云计算
  • Vue.js探秘:从基础到高级教程