1

我正在使用 pygrib 打开 GFS 数据,我希望数据采用非结构化格式(不是默认选项)。简而言之,如何将 expand_reduce 设置为 False?

grbs = pygrib.open(filename)
print(grbs[1].expand_reduce) # this prints True (default)

在文档(https://jswhit.github.io/pygrib/api.html)中它说:

@ivar expand_reduced:如果为真(默认),当通过“值”键访问数据时,缩减的纬度/经度和高斯网格将扩展为常规网格。如果为 False,数据将保存在非结构化缩减网格中,并以一维数组的形式返回。

我查看了源代码(https://searchcode.com/file/11567389/pygrib.pyx/),发现它是一个私有属性,并且在 _create_gribmessage 方法中是硬编码的。

 625 cdef _create_gribmessage(grib_handle *gh, object messagenumber):
 626    """factory function for creating gribmessage instances"""
 627    cdef gribmessage grb  = gribmessage.__new__(gribmessage)
 628    grb.messagenumber = messagenumber
 629    grb.expand_reduced = True   ## HERE <---
 630    grb._gh = grib_handle_clone(gh)
 631    grb._all_keys = grb.keys()
 632    grb._ro_keys  = grb._read_only_keys()
 633    grb._set_projparams() # set projection parameter dict.
 634    return setdates(grb)
4

1 回答 1

0

解决办法是调用expand_grid,这会修改expand_reduced:

grbs[1].expand_grid(False)
print(grbs[1].expand_reduce) # this now prints False
于 2021-11-14T20:52:07.623 回答