使用cdsapi下载ERA5土地逐小时数据集

目录

1.注册CDS账号(参考博文)

2.安装CDS API的客户端python库

3.主体函数

4.输入参数

5.运行效果


1.注册CDS账号(参考博文

想通过cdsapi下载数据,需要有CDS账号

注册链接:https://cds.climate.copernicus.eu/user/register

提交注册后网站提示将发送邮件给你填写的邮箱, 打开邮件中链接设置账号密码,完成后,网页提示密码已设置完成,并自动登录。

最终用户名和密码信息如下:
用户名:abcde@XXXX.com
密码:password

2.安装CDS API的客户端python库

使用pip安装客户端库,命令:pip install cdsapi

登录CDS账号,点击首页红框内内容 

        新建一个txt文件,把第一个黑框里的内容原封不动地复制进去,然后,把txt文件名改成“ .cdsapirc”,注意是有点(.)的。后续如果有报Exception: Missing/incomplete configuration错误的,解决方法详见https://blog.csdn.net/qq_57313910/article/details/125983907?fromshare=blogdetail&sharetype=blogdetail&sharerId=125983907&sharerefer=PC&sharesource=qq_57313910&sharefrom=from_link

3.主体函数

这一部分需要修改的主要是文件下载的地址和名称,下面代码的前几行就是了

import cdsapi
import datetime
import os


def ERA5_downloader(variable,year = 1980):
    # 文件下载地址、名称
    folder_out = r'E:\ERA5-Land-hourly'
    downloaded_file = f'{variable}_{year}.nc'
    downloaded_file = os.path.join(folder_out, downloaded_file)

# 数据区域
    lon_min, lat_min, lon_max, lat_max =[95, 30, 120, 45]# 黄河流域                                       

# 时间范围
    # 日
    start_day = 1
    end_day = 31
    days = [ str(start_day +i ).zfill(2) for i in range(end_day - start_day + 1)] # 下载日:从start_day到end_day

    print('程序 已运行. 请等待结束信息 ... ')
    start = datetime.datetime.now()        # 开始时间计时器

    c = cdsapi.Client()
    c.retrieve(
        'reanalysis-era5-land',
        {
            'year': year,
            'variable': variable,
            'month': [ '01', '02', '03',
                       '04', '05', '06',
                       '07', '08', '09',
                       '10', '11', '12',],
            'day': days,
            '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',
            ],
            'area': [ lat_min, lon_min, lat_max, lon_max ],
            'format': 'netcdf',
        },
        downloaded_file)

    print('程序 运行结束,用时: ', datetime.datetime.now()-start)

4.输入参数

# 变量列表
variables_list = [ 
                '10m_u_component_of_wind', '10m_v_component_of_wind',
                '2m_dewpoint_temperature','2m_temperature', 
                'surface_net_solar_radiation', 'surface_pressure',
                     ]
# 下载时间区间
for i in range(2001,2021): # 下载2001到2020年的数据,根据需要自行修改
    ERA5_downloader(variable=variables_list,year = i)

“变量列表”以及“下载时间区间”,按个人需要进行修改

转到ERA5数据下载网站,选择需要的数据集

 本例:https://cds.climate.copernicus.eu/cdsapp#!/dataset/reanalysis-era5-land?tab=form

在数据集下载页面,点击所需要的参数,滑到页面最下方,勾选许可,点击“API请求”,可以看到之前勾选的参数名称,复制下来对第4步的代码进行替换。

5.运行效果

 文中下载的示例范围是【东经95-120,北纬30-45】,下载变量数量为6,一次下载一年中每日的逐小时数据,一个文件大小约3.7G;实际运行时排队请求加上数据运算,大概2-4小时可以下一个文件,一天大概下载8个文件,运气好能下10个;晚上速度会稍快一些,下载数据量大时建议后台挂着,偶尔检查下下载进度,但没事千万别动它。

03-17
当前提供的引用内容并未提及 CDS API 的具体文档或使用方法。然而,基于专业知识和技术背景,可以提供一些关于 CDS API 的常见技术和可能的实现方式。 ### 关于 CDS API 的概述 CDS(Control Data System 或 Common Data Service)API 是一种用于数据管理和交互的技术接口。它通常被设计用来支持跨平台的数据共享和服务调用功能。以下是几个常见的应用场景及其技术细节: #### 数据服务端点定义 在现代开发环境中,CDS API 可能通过 RESTful 接口来暴露其核心功能。例如,可以通过 HTTP 请求访问资源列表或执行特定操作: ```bash GET /api/v1/resources?filter=active POST /api/v1/resources/new ``` 这些请求的具体行为取决于服务器端配置以及客户端传递的参数[^4]。 #### 客户端集成示例 对于前端开发者来说,利用 JavaScript 调用 CDS API 非常普遍。下面是一个简单的 Axios 库调用实例: ```javascript import axios from 'axios'; async function fetchResources() { try { const response = await axios.get('https://example.com/api/v1/resources'); console.log(response.data); } catch (error) { console.error(error.message); } } fetchResources(); ``` 此代码片段展示了如何异步获取远程资源并处理返回的结果集[^5]。 #### 多线程环境下的性能优化建议 当应用程序运行在一个多线程环境下时,适当调整本地缓冲区大小能够显著提升效率而不至于过度占用内存空间。正如之前提到过的内容所描述那样,“指定每线程局部缓冲区尺寸(单位字节),附加 k/K 表明千字节数量级;m/M 对应兆字节数量级;g/G 则表示吉字节数量级。” 这一设置有助于减少全局存储竞争频率从而改善整体吞吐率[^2]。 尽管上述信息并非直接针对 CDS API ,但它提供了有关高效管理计算资源的重要指导原则,在实际应用过程中值得借鉴考虑进去。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值