爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 252|回复: 4

[求助] python使用xarray+cfgrib读取grib数据的问题

[复制链接]

新浪微博达人勋

发表于 2024-4-26 15:13:14 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 gaorui123 于 2024-4-27 21:02 编辑

我有CMA的预报数据,现在想将特定成员、特定预报时刻、特定预报步长的数据提取出来。
代码如下:
图片1.jpg
打印数据信息为:

数据信息

数据信息
打印的时间信息为:

打印的时间信息

打印的时间信息
存在的问题是当我取特定time的索引大于25时,存在问题。当我time的索引是27的时候,d_data = data2.data能取到也不会报错
代码:

27取data时

27取data时
结果:
图片5.jpg
但是当我想取出此时的values值时,就会报错
代码:
图片8.jpg
报错内容如下:
Traceback (most recent call last): File "<input>", line 25, in <module> File"D:\anaconda3\envs\NWF\lib\site-packages\xarray\core\dataarray.py",line 733, in values   return self.variable.values File"D:\anaconda3\envs\NWF\lib\site-packages\xarray\core\variable.py",line 614, in values   return _as_array_or_item(self._data) File"D:\anaconda3\envs\NWF\lib\site-packages\xarray\core\variable.py",line 314, in _as_array_or_item   data = np.asarray(data) File"D:\anaconda3\envs\NWF\lib\site-packages\dask\array\core.py", line1700, in __array__    x= self.compute() File "D:\anaconda3\envs\NWF\lib\site-packages\dask\base.py",line 342, in compute   (result,) = compute(self, traverse=False, **kwargs) File "D:\anaconda3\envs\NWF\lib\site-packages\dask\base.py",line 628, in compute   results = schedule(dsk, keys, **kwargs) File"D:\anaconda3\envs\NWF\lib\site-packages\xarray\core\indexing.py",line 484, in __array__   return np.asarray(self.get_duck_array(), dtype=dtype) File"D:\anaconda3\envs\NWF\lib\site-packages\xarray\core\indexing.py",line 487, in get_duck_array   return self.array.get_duck_array() File"D:\anaconda3\envs\NWF\lib\site-packages\xarray\core\indexing.py",line 664, in get_duck_array   return self.array.get_duck_array() File"D:\anaconda3\envs\NWF\lib\site-packages\xarray\core\indexing.py",line 551, in get_duck_array   array = self.array[self.key] File "D:\anaconda3\envs\NWF\lib\site-packages\cfgrib\xarray_plugin.py",line 157, in __getitem__   return xr.core.indexing.explicit_indexing_adapter( File"D:\anaconda3\envs\NWF\lib\site-packages\xarray\core\indexing.py",line 858, in explicit_indexing_adapter   result = raw_indexing_method(raw_key.tuple) File "D:\anaconda3\envs\NWF\lib\site-packages\cfgrib\xarray_plugin.py",line 166, in _getitem   return self.array[key] File"D:\anaconda3\envs\NWF\lib\site-packages\cfgrib\dataset.py", line365, in __getitem__   message = self.index.get_field(message_ids[0])  # type: ignore File"D:\anaconda3\envs\NWF\lib\site-packages\cfgrib\messages.py", line484, in get_field   return ComputedKeysAdapter(self.fieldset[message_id],self.computed_keys) File"D:\anaconda3\envs\NWF\lib\site-packages\cfgrib\messages.py", line344, in __getitem__   return self.message_from_file(file, offset=item) File"D:\anaconda3\envs\NWF\lib\site-packages\cfgrib\messages.py", line340, in message_from_file   return Message.from_file(file, offset, **kwargs) File"D:\anaconda3\envs\NWF\lib\site-packages\cfgrib\messages.py", line93, in from_file   file.seek(offset)OSError: [Errno 22] Invalid argument

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2024-4-27 14:44:30 | 显示全部楼层
直接把代码贴出来会不会好点,还有报错截图,你的文档下载下来还要金钱呢
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2024-4-27 17:27:39 来自手机 | 显示全部楼层
可以使用pygrib+eccodes
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2024-4-27 21:02:37 | 显示全部楼层
口蘑战士 发表于 2024-4-27 14:44
直接把代码贴出来会不会好点,还有报错截图,你的文档下载下来还要金钱呢

已修改,麻烦您看看能否解决
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2024-4-28 15:53:37 | 显示全部楼层
gaorui123 发表于 2024-4-27 21:02
已修改,麻烦您看看能否解决

能用.data或者.to_numpy()跑通就行
报错说是和xarray或dask等库有关系
(如果使用Xarray与Dask数组结合,Dask处理懒加载数据。在某些情况下,尝试直接获取.values可能会引发错误,特别是当数据未完全加载或需要计算时)我搜到了括号里的解答,但我不确定对不对你的症结
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表