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

[dennou-ruby:002331] Re: GGraph:line, missing_value



竹広です. 

やっと納得しました. 結局 RubyNetcdf で読みさえすれば
missing_value 処理をユーザはする必要がない, ということですね. 

gpview パッチは別途送ります. 


> > もしかして gphys (netcdf) 変数をオープンしたときに, 
> > データが NArrayMiss で読み込まれ, そこで欠損要素であるかを
> > 判定する際に missing_value 属性の値が使われているのでしょうか? 
> > いったん NArrayMiss データとなると, もはや欠損値がいくらで
> > あったかということは関係ない, というのは正しいでしょうか? 
> 
> まさにその通りです.
> 
> NArrayMiss は,欠損かどうかをバイト型のフラグ配列で持ってて,
> 欠損かどうかは中身の値でなくフラグで決まることになってます.
> データ欠損の指定法というのはいろいろあって,何か欠損「値」を決め
> る場合や,ある範囲にあるものだけを正常と見なす場合などがあります
> が,異なる指定法のデータが交じっても(例えば足し算したりしても)
> うまく扱えるように,値でなくフラグで管理するようになってます. 
> 
> そんなわけなので,RubyDCL は NArrayMiss を解釈する際,
> データ欠損である箇所に,自分が欠損値と解釈する値を代入した
> NArray を作って使うようにしてあります.そういうことがしやすいよ
> う NArrayMiss#to_na(missval=nil) というメソッドがあって,引数で
> 値を指定すれば,欠損部分にその値を埋めた NArray を返すようになっ
> てます.
> 
> 参考まで,欠損のある NetCDF のデータを NArrayMiss に読み込むい
> うのは,RubyNetCDF レベルで実装されている機能です
> (NetCDFVar#get_with_miss_and_scaling というメソッドを使うと,
> もしあれば add_offset と scale_factor を解釈した上で,
> データ欠損値指定のあるデータは NArrayMiss,そうでないのは
> NArray で値を読み込みます).GPhys としては,NetCDFファイルを読
> み込む際にこれを使うようにしている以上には,データ欠損対応はして
> ません.一旦 NArryMiss になったものは,欠損が然るべく自律的に扱
> われることが期待されてるからです.例えば平均を取る際に,欠損値の
> 部分をよけて集計するというのは,NArrayMiss 自身の機能です.また,
> 絵を書くときも上述のように,RubyDCL に NArrayMiss 解釈機能が埋め
> 込まれてます.
> 
> 堀之内 武                    horinout@xxxxxxxxxxxxxxxxxx
> 京都大学生存圏研究所               611-0011 宇治市五ヶ庄
> 
>