堀之内です. 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行目で以下のエラーが出ます。
Attachment:
jra_grib2nc.rb
Description: Binary data