[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:002685] Re: [gphys] bug: sample/cira86_to_nc.rb
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:002685] Re: [gphys] bug: sample/cira86_to_nc.rb
- From: Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxxx>
- Date: Tue, 15 Aug 2006 14:24:28 +0900
神代さま
> 今日,CVS版のgphysを取ってきたのですが,以前(MLじゃなくて直接)報告した,
> サンプルプログラム cira86_to_nc.rb のバグがまだなおってなかったので,
> 再送します.
すみません、完全に忘れてました。直して cvs commit しました。
> > gphys のデモプログラムで動かないものがあるのでパッチを送ります.
>
> ところで,ここで修正したように,VArray に
> set_att('missing_value',gp_miss_val)
> とするとき,gp_miss_val は,実数だと
>
> /usr/local/lib/site_ruby/1.8/numru/gphys/attribute.rb:84:in `[]=': Not allowed as an attribute value: 1.0e+30 (ArgumentError)
> from /usr/local/lib/site_ruby/1.8/numru/gphys/varray.rb:507:in `set_att'
> from cira86_to_nc.rb:94
>
> とエラーになります.gphys/attribute.rb を見ると,
>
> ## val.is_a?(Numeric) || # disabled 2005/03/25 by horinout
>
> となっているので,これは意図した動作なんですよね.
>
> RubyNetCDF で put_att するときは,
> tmp.put_att("missing_value",-1000.0,"sfloat")
> などとできますが.
はい、そのようです。当時の私の考えを察するに、
NetCDF 同様数値は配列で取っておくのだから、
スカラーは許さないほうが混乱が少ないと
思ったのではないかと思います。
特に、float と sfloat を陽に意識させたかった
とか??
でも、NetCDF のほうは、こうできるんですよね。
あわせたほうがいい気はしたりしますが、実は
ちょっと面倒な点があります:
Attribute クラスは NetCDFAttr と違って、
一つで複数の key & val を持つようになってます。
実際 Hash を継承して作ってまして、
attr[key] = val
で、値を設定します。VArray で使う際には、
NetCDF とインターフェースをあわせて、put_att
が使えるようになってます。なので、実は、
tmp.put_att("missing_value",-1000.0,"sfloat")
のように、型も同時に別引数で指定するのに困ります。
勿論、型指定はできないないまま、スカラーを許すというのが
一つの解ではありますが。
ということで、とりあえず現状はそのままにしてあります。
Attribute クラスを使う人が多くて、かつスカラーもサポートしたい
要望が多ければ考えます。
なお、現在のエラーメッセージはわかりにくいので、
String か Numeric の NArray/Array を期待する旨を
書き加えました。
--
堀之内 武 <horinout@xxxxxxxxxxxxxxxxxx>
611-0011 宇治市五ヶ庄 京都大学生存圏研究所