gtool4 規約 version 4.0beta2
2000/01/26 15:57 豊田英司
本章では数値データの格納法を規定する。不規則配置データについて十分に検討を行う時間がなかったため、現在の版では格子点データの格納法だけを規定する。
long_name 属性
units 属性
netCDF はデータ圧縮をサポートしないが、精度の低い浮動小数点実数を短い整数型として格納することによってファイルサイズを小さくすることができる。このような処置は推奨はされないが、広く用いられているので解釈系はこの処理をしなければならない。
解釈系は変数を読み取った後に、scale_factor 属性値があればこれを読み取った数値に乗算し、その後でもし add_offset 属性があればこれをその結果に加算しなければならない。
生成系は scale_factor と add_offset を用いた書き込みを行う前にデータの最大値と最小値が表現できることを確認しなければならない。
scale_factor と add_offset 属性は同じ型でなければならない。その型が変数の本来意図された型であるから、scale_factor と add_offset 以外の属性に関する規定で変数の型という場合は、scale_factor または add_offset 属性の型を指す。
例1: 地表面気圧を 1hPa 単位で観測した数値を保存する場合には「観測値から 1000 を引いた数値」を格納すれば byte 型で 873hPa から 1127hPa の範囲を表現でき、float の 1/4 の記憶容量しか必要としない。
- 元のデータ
- 1007.0, 1009.0, 1012.0, 1020.0, 1016.0, ....
- CDL 表記
byte ps(some_dimension); ps:long_name = "surface pressure"; ps:add_offset = 1000.0; data: ps = 7, 9, 12, 20, 16, ....例2: 気温を通常 0.1℃ 単位で観測した値は、「観測値を 10 倍した数値」を格納すれば short 型で -273.1℃ から 3276.7 ℃までを表現できるので、float 型の 1/2 の記憶容量しか必要としない。
- 元のデータ
- -12.7, 3.2, 22.1, 18.3, 30.4, ....
- CDL 表記
short T(some_dimension); T:long_name = "temperature"; T:scale_factor = 10.0; data: T = -127, 32, 221, 183, 304, ....
欠損値とは、数値データの中で何らかの理由によって「値が与えられない」個所に指定すべき値である。欠損値の表現として IEEE 754 規格の非数 (NaN) を用いるという考えは利点が多いが、残念ながら現時点では推奨しない[注]。
浮動小数点数値のある範囲を欠損値と指定する必要がある場合、valid_min 属性、valid_max 属性、またはその双方を指定することを推奨する。valid_range 属性の使用は推奨されないが、欠損値処理時に解釈しなくてはならない。
変数に valid_min 属性が存在する場合は、その属性値より小さな数値は欠損とみなされる。変数に valid_max 属性が存在する場合は、その属性値より大きな数値は欠損とみなされる。数値型の2要素を持つ valid_range 属性が存在する場合には、第1要素 (Fortran 的添字) は valid_min 属性、第2要素は valid_max 属性であるとみなされる。valid_max 属性値が valid_min 属性値より小さい場合は gtool4 規約に適合せず、解釈は規定されない。
生成系は必要がない場合は valid_min, valid_max, valid_range 属性を作成しないことを強く推奨する。そうすればデータ全体にわたる数値比較と条件判定をしないで済ませることができる。典型的な実装は、すでに欠損値範囲が定義されている入力に対してだけ、欠損値範囲を定義することである。
もし欠損値範囲を任意に設定できるのならば、変数の物理的意味にかかわりなく、絶対値の十分大きな数を用いることを推奨する。ただし、デフォルトの fill 値は欠損値とみなすことを強く推奨する。指定するのは valid_min と valid_max のどちらか片方にとどめるべきである。物理的に負にならない量 (たとえば温度) については valid_min を -6.0e36 とすることを推奨する。それ以外の量については valid_max をを 6.0e36 とすることを推奨する[注]。
例: 温度 (負にならない)
float T; T:valid_min = -6.0e36;
デフォルトの fill 値が欠損値ではない場合、_FillValue 属性値を指定することを推奨する。
gtool4 規約に従ったのデータを読み書きするソフトウェアのことを考える。
情報が与えられないところから情報が勝手に生成されてはいけないから、欠損値と正常値 (欠損値ではない数値) の混合した演算の結果は
とならなければならない。
可搬性を IEEE 754 規格の範囲に制限することにはなるが、ソフトウェアの内部表現として非数 (NaN) を用いることはよい考えである ― そうすればソフトウェアの内部は欠損値処理を明示的にコーディングする必要がなくなるからである。この場合は外部表現では適当な数値に変換することを推奨する。
入力の変数に missing_value 属性が定義されていれば、その値を用いることを推奨する。複数の入力が異なる missing_value を定義していた場合には、出力の物理的性質に反しない限りで絶対値の大きなものを採用すべきである。
missing_value 属性を生成するソフトウェアは、missing_value を含んだ欠損値範囲を指定しなければならない。
C_format 属性
FORTRAN_format 属性
time_format 属性 (参考)
axis 属性
positive 属性
bounds 属性
modulo 属性
topology 属性
associate 属性
coordinate 属性
subgrid 属性
coord_op 属性
old_interval 属性
old_spacing 属性
expand 属性
calendar 属性
north_pole 属性
proj_coordinates 属性
proj_parameter 属性
gt_user_anything 属性
orbital_parameter 属性 (参考)