gtool4 規約 version 4.0beta4

8. (参考) 規定の注釈

2000/02/02 22:27 豊田英司


サポートする既存の規約

NCAR-CSM 規約を重要視したのは、数値モデル NCAR CSM によって作られる数値データとの可搬性を考慮したためである。

ファイル名

ファイル名の末尾を固定するのは、ファイル名の末尾によって起動すべきアプリケーションを決めるソフトウェアが不便にならないようにするためである。

ファイル名を 8 文字に制限する推奨規約は、ISO 9660 level 1 (CD-ROM) ファイルシステムを考慮したものである。CD-ROM への可搬性を考慮しなければ、文字数に関する制限は事実上なくなり、ハイフンマイナスなどのありふれた文字を利用することもできるようになる。

変数名

NetCDF ユーザーズガイドによれば、変数名、次元名、属性名は以下の規則に従わねばならない。

ユーザーズガイドには書いていないが、dimensions, variables, data も予約語とすべきである。

appendices 属性

これにより、他の GDT 互換性を十分に考慮しておけば、 :Conventions 属性値を "GDT" と変更するだけで完全に GDT 規約に従うことが可能となる。

履歴情報の信頼性

以下のような理由から、history 属性から意味のある情報を機械的に取り出すことはできない。

非数以外の欠損値表現法の必要性

NetCDF で用いる外部表現の浮動小数点形式は IEEE 754 規格である。IEEE 754 規格には非数 (Not a Number, NaN) があり、非数と通常の実数の演算結果は欠損値の条件を満たす。従って、内部表現も IEEE が使えることが確実であれば、欠損値としては非数を用いることができる。そうすればプログラムは欠損値処理を明示的に書く必要がない。

しかしながら、実際には伝統的なプログラミング言語 (たとえば C, Fortran 90 など) はともに IEEE 754 規格が使えることも非数が使えることも保証していない。また、netCDF の想定しているプラットフォームでも内部的に IEEE 754 規格の数値演算が行える保証はない。

IEEE 754 以前から習慣として、「無効な数値」の範囲 (または単独の欠損値) を定義しておいて、その範囲の数値を欠損値とみなす処理が行われてきた。IEEE 754 規格の使えない環境が無視できるようになった現在も、gtool4 規約の対象とする領域にとってこの習慣は無視できないものである。

以上のような理由から、著者にとって非常に残念なことではあるが、gtool4 規約においても欠損値範囲の取り扱いはなされなければならないものとする。

欠損値範囲の推奨値

6.0e36 を推奨するのは、 netCDF のデフォルトの _FillValue (NF_FILL_REAL) より小さく、単精度実数形式の指数部が繰り上がった直後だからである。

周期的座標と modulo 属性の必要性

GDT の議論によれば、modulo 属性が必要なのは座標変数の単調増加性を維持するためである。たとえば「0 から 360 まで」の経度座標の切断点を動かして「180 から 360 すなわち 0 を経由して 180 まで」の座標に作り変える場合、周期性を利用してたとえば「-180 から 180」のように単調増加の値に変換しなければならない。このために周期を知る必要がある。

単位の文法

単位を表記する文法udunits のドキュメンテーションおよびソースコードから推測した文法を明文化したものである。NetCDF および既存規約は udunits によって単位が処理されることだけを規定している。乗算やべき乗の推奨される形は JIS X 0124 に合わせた。単位名は udunits に許容されるものを用いることが推奨されるので、推奨される単位表記は単位名を置き換えなければ JIS X 0124 には適合しない。

オブジェクトとリンク

リンクしたいよね。