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

[dennou-ruby:002283] Re: global attributes



堀之内です. 

> Gphys で Netcdf ファイルを扱うときに, global attribute を調べたり
> 読みこんだりするにはどうするのがよいのでしょうか. 
> 
> GPhys や ruby-netcdf のマニュアルをながめても, よくわからんかったので
> 申訳ありませんが初学者にご教示下さいませ. 

いやいや,たぶん GPhys 作者とヘビーユーザーしかわからない
裏技が要ると思います ^^;

# 皆さんもっと気軽に質問してくれていいです.

GPhys は変数単位なので,ファイルに直下に属する global 属性は,
陽には構成要素になりません.そこで,ファイルは何か調べてアク
セスすることになります(というのが関門ですね):

  gphys = GPhys::IO.open('....','hoge')
  file = gphys.data.file

でファイルハンドラーが返ってきます.NetCDFファイルの場合は 
NetCDF クラスのオブジェクトです.(ちなみに,上の例では主変数
(data)のファイルになります.もし座標変数のファイルなら 
file = gphys.coord(0).file など --- GPhys::IO.open で開いた場合
は一緒ですが,一般には軸とデータは別々の場所にあってもいいんです.)

上の file は NetCDF オブジェクトなので,あとは煮るなり焼くなり
してください.
例:

  array = file.att_names     # global属性名を配列で返す.
  att = file.att(name)       # nameで指定したglobal属性(NetCDFAtt)を返す
  val = file.att(name).get   # nameで指定したglobal属性の値を返す
  file.each_att{|att| ....}  # global属性(NetCDFAtt)に関するイテレータ

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