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

[dennou-ruby:002140] Re: class handling GRIB dataset



西澤です.

On Mon, 21 Feb 2005 10:30:55 +0900
Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxxx> wrote:


> > Grib ファイルを扱う必要ができたので ruby で Grib を扱うクラスを作りました。
> 
> 素晴らしいです! 私も最近扱う必要があったのですが、根性なくて
> wgrib 使いました。grib処理の関数は一から書いたのですか?
> 拡張ライブラリー? それとも pure ruby? grib の場合テーブル処理
> などやることが沢山ありますので、pure ruby だと処理速度が気にな
> りますが、どんなもんでしょう。例えば wgrib と比べて。まあ、遅け
> れば将来的に一部拡張ライブラリー化すればいいんでしょうけど ---
現在はpure rubyです。
まだ速度比較はしていません。
z軸や時間軸方向のすべてのデータを集めて変数を作るので
単純に比較はできないです。

> 理想的には各セクションの処理レベルは C でやってしまうのがいいと
> 思います。wgrib も置いてある
> http://dss.ucar.edu/libraries/grib/
> のが参考になりそう。各種テーブルの実装は wgrib にありますね。
こんなものがあるんですね...



> > 読み込みのみ
> 
> 普通それで十分でしょうね。
書き込みもそれほど困難でないと思っているので
気が向いたら対応します。


> > LON-LAT座標のみ
> 
> 同じ lon-lat でも緯度がガウシアンの場合は扱えますか?
> ガウス緯度に関しては、grib は緯度範囲しか入れられないみたいなの
> で、ちょっと高度な推測が必要なはずです。(極 - 極データなら格
> 子点数から分解能がわかりますが、そうでない場合もあり得るので、平
> 均的な dlat から推測してガウス緯度を生成してみて、答えあわせ → 
> あわなければイテレーション。どっちにしろガウス緯度を計算しないと
> なりませんね。GSLを使えば簡単?)
> 
> 水平については、あと残るは地図投影座標でしょうか。これは必要に迫
> られない限りやる気起きないでしょうね。
> 
> 鉛直はどうでしょう? hybrid 扱えますか? Gauss緯度とhybridが扱え
> れば、客観解析の生データが扱えます。なお、hybrid (109番) の場合、
> gribできちんと規格があるのは鉛直レベル番号の入れ方だけみたいです。
> (ECMWFのgribデータには hybrid の係数 a, b が入ってますが、私の
> 勘違いでなければ入れ方は ECMWF 独自仕様のようです)。でも、とり
> あえずは鉛直レベル番号だけでいいでしょう。GPhys化さえ出来れば、
> 後から座標変数を設定するのは簡単ですので。
> 
> なお、ガウス緯度についても同様に、例外を上げずにGPhys化さえ出来
> れば、座標変数の中身はとりあえず通し番号でもいいです。
> 
> ということで、別便で Gauss緯度-hybrid のサンプルファイルをお送り
> します。(押し売りごめんなさい。気が向かなれば何もしなくていいで
> す。希望としては、とりあえず例外上げずに GPhys 化されるなら嬉し
> いです。)
> 
現在は等間隔緯度、気圧のみです。
サンプルファイルをいただいたので
Gauss緯度、hybridについては時間があるときに対応します。


> > データパッキングのビット数が4の倍数のみ
> 
> 拙作の多ビット整数ライブラリーが電脳 ruby HP に置いてありますの
> で、もしやる気になったらその一部を取り込むなど自由に使ってくださ
> い。
見てみます。 

>
> > などまだ限られた機能しかありません。
> > VArrayGrib class, GPhys::Grib_IO module
> > も作りましたので一様 GPhys に対応しています。
> > 
> > ERA40とJAR25でテストしました。
> > とりあえずどこに置いたらいいですかね?
> > サンプルファイルが1Mくらいあります
> 
> もし良ければ GPhys にマージしませんか。
> サンプルファイルについては、1M もあるとちょっと
> 抵抗ありますので、別途相談させてください。wgrib を使えば
> レコード単位でサブセットを作れますので、例えば鉛直レベル
> や時間に関し簡単に間引けます。依頼して貰えばこちらでやっ
> てもいいです。
ぜひ取り込んでいただければと思っています。
ただ Grib class 本体も入れるべきかどうなのかはわかりません。
特に将来拡張ライブラリ化するなら別の方がいいかもしれません。
今はNetCDFは別だけどGrADS_Gridded は一緒なんですよね。
そこらへんのポリシーはどうなっているのでしょうか
サンプルは
ERA40もJRA25もかってに置けないと思います。 
そのうち書き込みに対応して、
今ある T.jan.nc をコンバートすればいいかなと思っています。


--------------
Seiya Nishizawa
seiya@xxxxxxxxxxxxxxxxxx