TOC PREV NEXT INDEX

Put your logo here!


7.16 フィル値


オープンされたNetCDFファイルに書き込まれたことのない値を読み取ろうとしたならば何が起こるでしょう?必ずエラーが発生し、エラーメッセージもしくはエラーステータスが返されると思われがちです。確かに、オープンされていないNetCDFファイルからデータを読もうとした場合、指定されたNetCDFファイルにおいてその変数IDが有効でない場合、または指定されたインデックスが指定された変数の次元長で定義された領域外にある場合にはエラー発生します。しかし、それ以外の場合には、書き込まれていない値を読もうとすると初めにNetCDF変数が書かれたときに未定義のすべての値を埋めるための使用される特別なフィル値(fill value)が返されます。

このフィル値を無視してNetCDF外部データ型の全領域を使うこともできますが、その場合には読む前にすべてのデータ値を書き込んだことを確認しなければなりません。もし、読む前にすべてのデータ値を書き込むことが確かであれば、書き込む前にnc_set_fillを呼び出すことによってフィル値を持っている変数が前もって埋められてしまわないと確信できます。これによってNetCDFの書き込み効率が著しく向上することもあります。

変数属性_FillValueはある変数のフィル値を指定するためにも使えます。各型ごとにデフォルトのフィル値があり、インクルードファイルnetcdf.hの中で次のように定義されています:NC_FILL_CHAR, NC_FILL_BYTE, NC_FILL_SHORT, NC_FILL_INT, NC_FILL_FLOAT, NC_FILL_DOUBLE

NetCDFバイトと文字型は異なるデフォルトのフィル値を持ちます。文字用のデフォルトのフィル値は零バイトであり、可変長のC文字列の終わりを判別するのに役立ちます。バイト変数にフィル値が必要なときには、適切な_FillValue属性を定義することをお勧めします。それは、ncdump等の一般的なユーティリティではバイト変数に関してはデフォルトのフィル値を仮定しないからです。

フィル値の型変換は他の値の型変換と全く同様です。ある値をその値を表現できない別の型に変換しようとするとレンジエラーが生じます。そのようなエラーは、大きな型(例えば倍精度型)から小さな型(例えば単精度型)へと読み書きする際に、大きい方のフィル値が小さい方の型では表現できない時に生じることがあります。



Quadralay Corporation
http://www.webworks.com
Voice: (512) 719-3399
Fax: (512) 719-3606
sales@webworks.com
TOC PREV NEXT INDEX