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

[dennou-ruby:002286] Re: global attributes



堀之内です. 
 
> > > Gphys で Netcdf ファイルを扱うときに, global attribute を調べたり
> > > 読みこんだりするにはどうするのがよいのでしょうか. 
> > > 
> > > GPhys や ruby-netcdf のマニュアルをながめても, よくわからんかったので
> > > 申訳ありませんが初学者にご教示下さいませ. 
> > 
> > いやいや,たぶん GPhys 作者とヘビーユーザーしかわからない
> > 裏技が要ると思います ^^;
> 
> これは初学者が手を出すレベルではなかったんですか ^^;
> さっそく提示された方法を試してみます. 
> 
> それとは別の質問としてひとつ. 皆さんはglobal attribute を, 
> Open する各 gphys 変数に自動的にくっつけておいて欲しいとは
> おもわないのでしょうか. 
> 
> 私はモデル出力の global attribute に設定パラメターや
> モデルのバージョン, 実験シリーズ名などを記録しているので, 
> gphys 各変数に自動的にくっついていてくれると
> 後処理していってもデータの出自がわかるので嬉しいと思います. 
> トレーサビリティーの目的に global attribute を使うのは
> あんまり奨励されていないんでしょうか. 

NetCDF のグローバル属性が GPhys のデータモデルにしっくり合わない
というのが,私としても悩むところです.奨励してないというつもりで
はなく.

GPhys ではファイル的な箱が,GPhys オブジェクトを「入れるもの」と
して存在しないのです.座標とデータの値の組からなる物理量データを
単位としてますので.そして,座標値にしろ物理量値にしろ,その実体
がどこにあるか/どんな形態で格納かされているかを問わないというこ
とが,いろんな形式のファイルや,(ファイル中にではなくメモリー上
にある)配列など多様な形態のデータを統一的に扱える源です.例えば
grib ファイルにはグローバルな属性はあり得ません.データが NArray 
に入っている場合,それを包むファイルがそもそもありません.

グローバル属性を陽に扱う仕組みを用意してないのは,そういうわけな
のです.陽に扱う仕組みがないので,「裏技」が要ります.この裏技を
使ったコードは,もはやデータの格納形態を越えた汎用性がないことに
ご注意下さい.例えばあるGPhysオブジェクトを平均すると結果はメモ
リー上の配列に収まります.この場合グローバル属性は存在しません.

さて,今後もずっとこのままというつもりではありません.グローバル
属性というのは,要は複数の変数にまたがる共通属性ですよね.それを
うまく扱う仕組みがあれば取り入れたいと思います.案があればお知ら
せ下さい.(導入するには良く検討する必要がありますが.)

堀之内 武                    horinout@xxxxxxxxxxxxxxxxxx
京都大学生存圏研究所               611-0011 宇治市五ヶ庄