堀之内です.
grib → netcdf について,私ならこう書くというというのを
一から作ってみました.時間の取り扱い方はだいぶ違いますので,
前のメールに私自身がかいたような機能は使ってません.
(書いといてすみません.)
別途送っていただいたサンプルファイルで動作することを確認し
ました.
tmp200801.grib というように一月分まとめたファイルだったので,
わざと
$ wgrib tmp200801.grib | tail --lines=+346 | wgrib -i
tmp200801.grib -grib -o tmp20080115-31.grib
$ wgrib tmp200801.grib | head -345 | wgrib -i tmp200801.grib -grib -
o tmp20080101-15.grib
で複数に分離して動作確認もしました.
添付のスクリプトは,入力に1個以上のファイルをとります.
理解しやすいスクリプトになるよう,ソースの冒頭に
書いたような仮定はしてます(変数は一種類のみ)が,
結構汎用に使えると思います.
なお,Ruby標準添付(といっても Debian などでは別途
apt で
入れないとならないですが)の rdoc というコマンドを使って,
$ rdoc jra_grib2nc.rb
とすると,html のドキュメントが生成されます.
堀之内さんの以下のご助言に従って改良をしてみました。
行ったことは、以下にまとめます。
1)grid_copyを使って、軸情報をコピーする
2)insert_axisを使って、時間軸を追加する
3)shapeを使って変数を取り出す
4)Dir.globを使って、存在するファイルだけ
上書きする
できあがったプログラムは、取り込むファイルが1つ
(例 tmp_2008010100.grib)だけであれば、正しく
NetCDF変換できるのですが、ファイルが複数個
(例 tmp_2008010100.grib, tmp_2008010200.grib)に
なると、3次元データvalueを4次元のArray
に代入する
37行目で以下のエラーが出ます。
<jra_grib2nc.rb>