我试图使用pygrib从grib2文件中读取数据,使用python插值数据,然后将其写入另一个文件。我试过pygrib和eccode都会产生同样的问题。输出文件的大小增加了3倍,但是当我试图查看像天气和气候工具包这样的应用程序中的数据时,它列出了所有变量,但在绘制时却没有数据。如果我使用相同的脚本,而不是插入数据,而只是将其写入新文件,那么它在WCT中工作得很好。如果我使用wgrib2,它会列出所有的格里布消息,但是如果我使用wgrib2 -V,它会对未修改的数据产生错误“*致命错误:不支持:代码表5.6=0 *”。我的python脚本做错了什么吗?下面是我编写文件的示例(使用pygrib2.05和2.1.3的结果相同)。我在示例中使用了一个基本的hrrr文件。
import pygrib
import numpy as np
import sys
def writeNoChange():
# This produces a useable grib file.
filename = 'hrrr.t00z.wrfprsf06.grib2'
outfile = 'test.grib2'
grbs = pygrib.open(filename)
with open(outfile, 'wb') as outgrb:
for grb in grbs:
msg = grb.tostring()
outgrb.write(msg)
outgrb.close()
grbs.close()
def writeChange():
# This method produces a grib file that isn't recognized by WCT
filename = 'hrrr.t00z.wrfprsf06.grib2'
outfile = 'testChange.grib2'
grbs = pygrib.open(filename)
with open(outfile, 'wb') as outgrb:
for grb in grbs:
vals = grb.values * 1
grb['values'] = vals
msg = grb.tostring()
outgrb.write(msg)
outgrb.close()
grbs.close()
#-------------------------------
if __name__ == "__main__":
writeNoChange()
writeChange()发布于 2022-11-28 20:38:35
GRIB2 (https://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc/)表5.6与“空间差分顺序”相关。
由于某些原因,当您修改grb‘’values‘时,它会设置grb’‘orderOfSpatialDifferencing’= 0,这是"wgrib2 -V“不喜欢的。因此,在更改“值”之后,将“orderOfSpatialDifferencing”改为最初的“值”:
orderOfSpatialDifferencing = grb['orderOfSpatialDifferencing']
grb['values']= [new values]
grb['orderOfSpatialDifferencing'] = orderOfSpatialDifferencing这在让wgrib2 -V开始工作方面对我起了作用,但却把数据搞砸了。可能还需要修改第5节中的其他一些变量。
https://stackoverflow.com/questions/66552793
复制相似问题