フォーマット仕様詳細
NetCDF_file := header data
header := magic numrecs dim_array gatt_array var_array
magic := 'C' 'D' 'F' VERSION_BYTE
VERSION_BYTE := '\001' // ファイルフォーマットのバージョン番号
numrecs := NON_NEG
dim_array := ABSENT | NC_DIMENSION nelems [dim …]
gatt_array := att_array // グローバル属性
att_array := ABSENT | NC_ATTRIBUTE nelems [attr …]
var_array := ABSENT | NC_VARIABLE nelems [var …]
ABSENT := ZERO ZERO // 配列が無いことを意味する( nelems == 0に同じ)
nelems := NON_NEG // 以下のシークエンスの要素数
dim := name dim_length
name := string
dim_length := NON_NEG // 0であればこれは記録次元
// 記録次元は1つまで
attr := name nc_type nelems [values]
nc_type := NC_BYTE | NC_CHAR | NC_SHORT | NC_INT | NC_FLOAT | NC_DOUBLE
var := name nelems [dimid …] vatt_array nc_type vsize begin
// nelems は変数のランク(次元数)
// スカラーなら0、ベクトルなら1、行列なら2など
vatt_array := att_array // 変数に特定の属性
dimid := NON_NEG // 変数形状のための次元 ID(dim_arrayへのインデックス)
// 最初の次元が記録次元である場合に限って、
// これを"記録変数”と呼ぶ。
vsize := NON_NEG // 変数サイズ。記録変数で無い場合には、
// 変数データに割り当てらたスペース(単位はバイト)
// この数は次元長と次元型のサイズの積であり、
// 4バイト境界に合わせて詰め込まれている。
// これが記録変数である場合には
// 記録ごとのスペースに対応する。
// NetCDFの”記録サイズ”は記録変数の
// vsizeのを和として計算される。
begin := NON_NEG // 変数のスタート位置。この変数のデータの
// 先頭のファイル中におけるバイト単位の
// オフセット(インデックス必要)
data := non_recs recs
non_recs := [values …] // 記録変数ではない最初の変数、2番目、…のデータ。
recs := [rec …] // 最初の記録、2番目の記録、…
rec := [values …] // 記録nに対する最初の記録変数、
// 2番目の記録変数、…のデータ
// 特殊なケースのついては下記の注釈を参照のこと
values := [bytes] | [chars] | [shorts] | [ints] | [floats] | [doubles]
string := nelems [chars]
bytes := [BYTE …] padding
chars := [CHAR …] padding
shorts := [SHORT …] padding
ints := [INT …]
floats := [FLOAT …]
doubles := [DOUBLE …]
padding := <次の4バイト境界までの0, 1, 2, または 3 バイト>
// ヘッダーでは、詰め込むのは0バイト
// データでは、詰め込むのは変数のフィル値
NON_NEG := <非負の値を持つINT>
ZERO := <0の値を持つINT>
BYTE := <8ビット byte>
CHAR := <8ビット ACSII/ISO でコード化されたcharacter>
SHORT := <16ビット符号付整数・ビッグエンディアン・ 2の補数表現>
INT := <32ビット符号付整数・ビッグエンディアン・ 2の補数表現>
FLOAT := <32ビット IEEE 単精度浮動小数点・ビッグエンディアン>
DOUBLE := <64ビット IEEE ニ倍精度浮動小数点・ビッグエンディアン>
// タグは32ビット整数
NC_BYTE := 1 // データは8ビット符号付整数の配列
NC_CHAR := 2 // データは文字配列(テキスト等)
NC_SHORT := 3 // データは16ビット符号付整数の配列
NC_INT := 4 // データは32ビット符号付整数の配列
NC_FLOAT := 5 // データはIEEE 単精度浮動小数点の配列
NC_DOUBLE := 6 // データはIEEE 倍精度浮動小数点の配列
NC_DIMENSION := 10
NC_VARIABLE := 11
NC_ATTRIBUTE := 12
Quadralay Corporation http://www.webworks.com Voice: (512) 719-3399 Fax: (512) 719-3606 sales@webworks.com |