0

我正在尝试读取由 wgrib 创建的二进制 ieee 文件。我有一堆来自 ECMWF 中心的 GRIB 文件,我将它们转换为二进制 ieee。我正在尝试使用 fortran 读取它,但是我无法获得正确的值(网格的行数(Nlon)和列数(Nlat)的巨大值)。以下是我用来从 dos 行创建 ieee 文件的命令:

 'wgrib C:\gribs\IGD01211200012112001 -d 6 -ieee -big_endian IGD01211200012112001.bin   

这些是fortran命令

 open(12,file='IGD01211200012112001.bin',form='binary',status='old')
 read(12) Nlon
 read(12) Nlat

我也试过

 open(12,file='IGD01211200012112001.bin',access='stream')

但没有任何改变。使用 open(12,file='IGD01211200012112001.bin',form='unformatted',status='old') 没有任何改进,但如果记得后者在值的左侧和右侧使用一些填充。

我也尝试使用 -little_endian 或 -big_endian 选项,两者都没有任何变化。有什么建议吗?我还尝试将其保存为 bin,使用标志 -bin 而不是 -ieee 但没有任何改变。在 wrib 网站ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib/grib2ieee.txt中没有说太多。这里对 wgrib2 http://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/ieee.html说了些什么,但它并没有多大帮助。谢谢。

4

1 回答 1

0

根据http://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/bin_ieee_text_format.html上的文档,正在编写的文件不是您所期望的。对于binieee输出,您将获得以下任一格式的数据:

Binary and IEEE, no header

(grid 1)  (binary float value)        grid value
          (binary float value)
          ...
          (binary float value)        nx*ny values

(grid 2)  (binary float value)
          (binary float value)
          ...
          (binary float value)        nx*ny values
  
etc

或者

Binary and IEEE, with header

(grid 1)  (binary integer)    nx*ny*sizeof(float)
          (binary float value)
          ...
          (binary float value)    nx*ny values
          (binary integer)    nx*ny*sizeof(float)

(grid 2)  (binary integer)    nx*ny*sizeof(float)
          (binary float value)
          ...
          (binary float value)    nx*ny values
          (binary integer)    nx*ny*sizeof(float)

您正在尝试在网格之前读取尺寸长度,但这仅在您指定-text输出选项而不是二进制或 ieee 格式时才有效。

于 2014-10-17T17:24:25.407 回答