爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8067|回复: 11

[求助] 读取2020年fnl再分析资料变量错误

[复制链接]
回帖奖励 10 金钱 回复本帖可获得 2 金钱奖励! 每人限 1 次

新浪微博达人勋

发表于 2022-2-17 12:10:00 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 tvfantasy 于 2022-3-10 12:50 编辑

读取数据,等压面数据

ds=xr.open_dataset('../data/fnl_20200101_00_00.grib2',engine='cfgrib',
                   backend_kwargs={'filter_by_keys':{'typeOfLevel': 'isobaricInhPa'}})

数据详情,问题是里面只有位置高度和温度,没有风场,湿度的变量,其他年份测试正常,麻烦大神指教。

ds
Out[93]:
<xarray.Dataset>
Dimensions:        (isobaricInhPa: 33, latitude: 181, longitude: 360)
Coordinates:
    time           datetime64[ns] ...
    step           timedelta64[ns] ...
  * isobaricInhPa  (isobaricInhPa) int32 1000 975 950 925 900 850 ... 7 5 3 2 1
  * latitude       (latitude) float64 90.0 89.0 88.0 87.0 ... -88.0 -89.0 -90.0
  * longitude      (longitude) float64 0.0 1.0 2.0 3.0 ... 357.0 358.0 359.0
    valid_time     datetime64[ns] ...
Data variables:
    gh             (isobaricInhPa, latitude, longitude) float32 ...
    t              (isobaricInhPa, latitude, longitude) float32 ...
Attributes:
    GRIB_edition:            2
    GRIB_centre:             kwbc
    GRIB_centreDescription:  US National Weather Service - NCEP
    GRIB_subCentre:          0
    Conventions:             CF-1.7
    institution:             US National Weather Service - NCEP
    history:                 2022-02-17T11:56:43 GRIB to CDM+CF via cfgrib-0....
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2022-2-17 18:22:33 | 显示全部楼层
看看有没有人有同样的问题
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-2-19 12:15:26 | 显示全部楼层
仔细研究了报错信息,数据存在被ignore了,不知道怎么恢复:
Ignoring index file 'E:\\02qiPy\\data\\fnl_20200820_18_00.grib2.90c91.idx' incompatible with GRIB file
skipping variable: paramId==157 shortName='r'
Traceback (most recent call last):
  File "F:\anaconda3\envs\MeteoPlot1\lib\site-packages\cfgrib\dataset.py", line 602, in build_dataset_components
    dict_merge(variables, coord_vars)
  File "F:\anaconda3\envs\MeteoPlot1\lib\site-packages\cfgrib\dataset.py", line 538, in dict_merge
    "key=%r value=%r new_value=%r" % (key, master[key], value)
cfgrib.dataset.DatasetBuildError: key present and new value is different: key='isobaricInhPa' value=Variable(dimensions=('isobaricInhPa',), data=array([1000,  975,  950,  925,  900,  850,  800,  750,  700,  650,  600,
        550,  500,  450,  400,  350,  300,  250,  200,  150,  100,   70,
         50,   40,   30,   20,   15,   10,    7,    5,    3,    2,    1])) new_value=Variable(dimensions=('isobaricInhPa',), data=array([1000,  975,  950,  925,  900,  850,  800,  750,  700,  650,  600,
        550,  500,  450,  400,  350,  300,  250,  200,  150,  100,   70,
         50,   30,   20,   10,    7,    5,    3,    2,    1]))
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-2-28 07:15:02 | 显示全部楼层
有大神给看看不?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-2-28 08:27:18 | 显示全部楼层

回帖奖励 +2 金钱

cfgrib.dataset.DatasetBuildError: multiple values for unique key, try re-open the file with one of:
    filter_by_keys={'typeOfLevel': 'unknown'}
    filter_by_keys={'typeOfLevel': 'surface'}
    filter_by_keys={'typeOfLevel': 'isobaricInhPa'} fnl某些变量的层次不同,故而若是想读取,则需要将详尽层次设定'level':500,或者是用'paramId'/'shortName'来获取
    filter_by_keys={'typeOfLevel': 'meanSea'}
    filter_by_keys={'typeOfLevel': 'depthBelowLandLayer'}
    filter_by_keys={'typeOfLevel': 'heightAboveGround'}
    filter_by_keys={'typeOfLevel': 'heightAboveGroundLayer'}
    filter_by_keys={'typeOfLevel': 'tropopause'}
    filter_by_keys={'typeOfLevel': 'maxWind'}
    filter_by_keys={'typeOfLevel': 'heightAboveSea'}
    filter_by_keys={'typeOfLevel': 'isothermZero'}
    filter_by_keys={'typeOfLevel': 'pressureFromGroundLayer'}
    filter_by_keys={'typeOfLevel': 'sigmaLayer'}
    filter_by_keys={'typeOfLevel': 'sigma'}
    filter_by_keys={'typeOfLevel': 'potentialVorticity'}

你想使用哪个变量得先想想这个变量的typeOfLevel是什么,不然xr没办法甄别出来.你帖子上貌似指的是单层的资料.所以多层没办法显示出来
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-2-28 12:22:15 | 显示全部楼层

回帖奖励 +2 金钱

最好用wgrib2转化成nc再读取,cfgrib使用虽然方便一点,但读取的变量比wgrib2少的多,下载fnl文件的官网上推荐的软件也是wgrib2
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-3-8 00:07:34 | 显示全部楼层

回帖奖励 +2 金钱

坎坷,建议很好
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-3-8 07:47:53 | 显示全部楼层

回帖奖励 +2 金钱

本帖最后由 cookie-o-o 于 2022-3-8 07:51 编辑

查看一下数据文件大小,也可能是数据下载中断导致了文件不完整。你提到的文件大小应该在24674kb(windows系统下的显示大小)才可能是对的,如果小于24674kb可能是数据不完整。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-3-8 08:45:34 | 显示全部楼层

回帖奖励 +2 金钱

backend_kwargs={'filter_by_keys':{'typeOfLevel': 'isobaricInhPa'}
改成backend_kwargs={'filter_by_keys':{'typeOfLevel': 'isobaricInhPa','cfVarName':'r'}
直接按变量名读取相对湿度
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-3-10 00:03:20 | 显示全部楼层
chenweibecome 发表于 2022-3-8 08:45
backend_kwargs={'filter_by_keys':{'typeOfLevel': 'isobaricInhPa'}
改成backend_kwargs={'filter_by_ke ...

感谢指教。问题已经解决,麻烦问下,这里面原因是什么呢?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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