解决ValueError: did not find a match in any of xarray‘s currently installed IO backends问题

利用cdsapi下载nc数据,后续利用xarray包拆分为单个逐日文件,一直报错:

ValueError: did not find a match in any of xarray's currently installed IO backends ['netcdf4', 'scipy']. Consider explicitly selecting one of the installed engines via the ``engine`` parameter, or installing additional IO dependencies, see:
https://docs.xarray.dev/en/stable/getting-started-guide/installing.html
https://docs.xarray.dev/en/stable/user-guide/io.html

确定文件夹权限设置无问题,写了个代码,测试我的文件是否是nc文件:

import netCDF4

try:
    with netCDF4.Dataset(r'C:\ERA\era-snowdepth\2018\2\snowdepth.nc') as nc:
        print('yes')
except Exception as e:
    print('no')

显示’no‘,开始反思下载nc数据的代码问题。
以下是我2024年12月16日下载nc文件的代码:

import cdsapi

c = cdsapi.Client()

c.retrieve(
    'reanalysis-era5-land',
    {
        'variable': [
            'snow_depth'
        ],
        'year': '2018',
        'month': '02',
        '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'
        ],
        'time': '00:00',
        'area': [
            54, 73, 3,
            136,
        ],
        'data_format': 'netcdf',
    },
    'C:\\ERA\\era-snowdepth\\2018\\2\\snowdepth.nc')

我的文件夹也确实下载得到一个3408KB的.nc文件,但确实不是nc格式。

然后我去到CDS官网发现给出的官方代码有些许出入:

import cdsapi

dataset = "reanalysis-era5-land"
request = {
    "variable": ["snow_depth"],
    "year": "2018",
    "month": "02",
    "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"
    ],
    "time": ["00:00"],
    "data_format": "netcdf",
    "download_format": "unarchived",
    "area": [54, 73, 3, 136]
}

client = cdsapi.Client()
client.retrieve(dataset, request).download()

运行之后测试是否是nc文件的代码输出yes,得到一个5204KB的nc文件
在这里插入图片描述
同时该文件可以顺利使用xarray分割,代码也放下面:

import xarray as xr

ds = xr.open_dataset(r"C:\ERA\era-snowdepth\2018\2\snowdepth.nc")
i = 0
while i<=27:
# 2018年的2月是28天
    f = ds['sde'][i,:,:]
    index = str(ds['sde'][i,:,:].valid_time.values)[:-19]
    f.to_netcdf(f'C:/ERA/era-snowdepth/2018/2/sde/{index}.nc')
    i=i+1

输出结果:
在这里插入图片描述

### 平抑风电波动的电-氢混合储能系统容量优化配置 #### 架构概述 电-氢混合储能系统由电池、电解槽和燃料电池组成,旨在通过协同工作来平抑风电功率波动。当风力发电过剩时,多余的能量被储存在电池中;一旦电池达到设定的最大荷电状态(SOC),剩余能量则用于驱动电解水制取氢气存储起来。而在电力需求高峰期间或风能供应不足的情况下,则可以通过燃烧储存的氢能或将之转换回电能以补充缺口。 #### 容量优化配置原则 为了有效应对风电输出不稳定带来的挑战,在设计此类系统时需遵循以下几点基本原则: - **短期调节能力**:选用具备高动态响应速度特性的设备如锂电池负责处理瞬态变化部分; - **长期储备功能**:采用能够长时间保存而不损失太多效率的技术手段比如高压容器内的压缩气体形式存在的H₂分子承担季节性差异补偿角色; - **经济效益考量**:综合评估不同组件的成本效益比,确保整个项目的可行性和可持续发展性[^1]。 #### 配置模型建立 基于上述理念,可以构建如下数学表达式来进行具体参数的选择与计算: 设\( P_{wind}(t) \)表示时刻 t 的实际测得风电机组发出电量大小;而 \( P_{grid}(t) \),\( E_b(t)\), 和 \( m_H(t) \)分别代表向公共电网输送/吸收功率值、蓄电器内累积存留电量以及累计生产出来的质量单位下的氢燃料数量。那么有: \[P_{grid}(t)=\left[P_{wind}(t)-E'_b(t)-m'_{H}(t)*C_p\right]\] 其中, - \( C_p \): 氢转化成电的比例因子; - \( E'_b(t) \):\(\frac{d}{dt}E_b(t)\); - \( m'_{H}(t) \):\(\frac{dm_H(t)}{dt}\). 此方程描述了如何分配来自风场产生的即时可用资源给各个子模块间的关系,并最终决定了对外界网络的影响程度。同时还需要满足一系列约束条件,例如防止过充过放现象发生、维持适当范围内的操作温度区间等。 #### 控制策略实施 对于所提到的控制逻辑而言,当检测到当前时段内电池充电水平接近预设上限(此处为99.5%)的时候,应该及时调整输入至电解装置处电流强度从而开启额外路径转移过程。此外,考虑到实际情况中的不确定性因素影响较大,因此建议引入预测机制提前规划未来一段时间里的运作模式,以便更好地适应环境变动所带来的冲击。 ```matlab function [P_grid, E_b, m_H] = optimize_storage(P_wind, params) % 初始化变量... for t = 1:length(time_vector) if E_b(t) >= max_soc * capacity_battery && surplus_power > 0 electrolysis_current = min(surplus_power / efficiency_electrolyzer, max_current_limit); d_m_H_dt = f(electrolysis_current); % 计算产氢速率 % 更新各部件状态... elseif ... end % 应用其他规则更新系统状态... % 将结果记录下来供后续分析使用... end end ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值