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 も試してみましたが、どちらも何も変わりません。なにか提案を?また、-ieee の代わりに -bin フラグを付けて bin として保存しようとしましたが、何も変わりませんでした。wrib Web サイトftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib/grib2ieee.txtでは、多くのことは語られていません。ここでwgrib2 http://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/ieee.htmlについて何か言われていますが、あまり役に立ちません。ありがとうA。

4

1 に答える 1

0

http://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/bin_ieee_text_format.htmlのドキュメントによると、書き込まれているファイルは期待どおりのものではありません。binまたは出力の場合ieee、次のいずれかの形式でデータを取得します。

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 に答える