[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:003074] Re: Fw: 電脳Rubyで2次元gribファイル読み込み



堀之内様

栗田です

以下のサンプルありがとうございました。まだまだオブジェクト指向
になれていないので、プログラムの方針の建て方、オプションの使い方
等、非常に参考になります。

さて、堀之内さんの作成されたプログラムに関して一つ教えて頂きたい
ことがあります。

堀内さんにお送りしたgribファイルは、一ヶ月分まとめた 4次元のGrib
形式ファイルだったのですが、実際の作業では、欠損処理があるために
4次元データを扱えません。JRAデータは、2008年の 11月後半など、 たまに欠損日があります。その処理を考えますと、毎日の3次元の grib 形式データを読み込んで、時間軸を入れて4次元化するとき に、欠損処理
を行うことになります。

このような作業を入れるとしたら、どこにどのようにいれられます?美し
いプログラムをみると、そのフォームを壊すようなことができず、たじろ
いでいます。


On 2009/03/04, at 21:24, Takeshi Horinouchi wrote:

堀之内です.

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>