5.8. Binary Table Extension (Standard extension 3)
5.8.2 Binary Table Extension
のヘッダ 要求されるキーワードはXTENSION Binary Table
に対しては’BINTABLE’
である。BITPIX Binary Table
では8
である。NAXIS Binary Table
では2
。NAXIS1
各々の“
行”
の(8
ビット)
バイト数。NAXIS2
表の中の行の数。PCOUNT
表の正規の部分に続くヒープと呼ばれる部分のバイト数。GCOUNT Binary Table
に対しては1
である。TFIELDS
表中のフィールド(
列)
の数。TFORMn n
フィールドのサイズとデータタイプを与える。1
からTFIELDS
の値までの範囲 をとる。TFORMn
はr Ta
の形式をとり、繰り返し回数r
はフィールドn
の要素数を 表す非負の整数(
通常は1
で省略可)
、T
はフィールドn
のデータタイプ、a
は文字 列配列を定義する場合の1
要素あたりの文字列長。(t
とe
maxは後述の可変長配列で 使う。)
データタイプとして許されるのは次の表10
のとおり。TFORMn
の値 意味8-bit
バイト数r L
論理値(’F’
または’T’) 1 × r
r X
ビット[(r − 1)/8] + 1
rB
符号無バイト1 × r
rI 16-bit
整数2 × r
r J 32-bit
整数4 × r
r K 64-bit
整数8 × r
rAa
キャラクタ(
文字列) r
r E
単精度浮動小数4 × r
r D
倍精度浮動小数8 × r
rC
単精度複素数4 × 2 × r
r M
倍精度複素数8 × 2 × r
rPt(e
max) 32-bit
配列記述子(
配列長,
ヒープオフセット) 4 × 2 × r r Qt(e
max) 64-bit
配列記述子(
配列長,
ヒープオフセット) 8 × 2 × r
表
10: BINTABLE
の有効なTFORMn
データタイプ表の
n
列で必要とされる総バイト数n
row(=NAXIS1)
は次のように表される。n
row=
TFIELDS
∑
i=1
r
ib
i(9)
ここで
r
iはフィールドi
の繰り返し回数、b
iはフィールドi
のデータタイプで必要 なバイト数、TFIELDS
はこのキーワードの値、を各々表す。また、表の
n
番目の列のエントリに対するオプションのキーワードとして、ラベルTTYPEn
、単位TUNITn
、スケーリングファクターTSCALn
、ゼロ点TZEROn
、ブランクTNULLn
、 表示フォーマットを与えるTDISPn
等がある。TDISPn
で使えるのはFORTRAN-77
形式 のフォーマットで次のとおり。フィールド値 データタイプ
Aw
文字列Lw
論理値Iw.m 10
進整数Bw.m 2
進整数Ow.m 8
進整数Zw.m 16
進整数Fw.d
実数、固定小数点表示Ew.dEe
実数、指数表示Gw.dEe
実数、汎用表示(
精度によってF
またはE
同等)
Dw.dEe
実数、指数表示表
11: BINARY Table Extension
で有効なTDISPn
フォーマット。ここで
w
は表示欄全体の幅、m
は出力される最低の桁数、d
は小数点以下の桁数、e
は 指数部分の桁数を表す。.m
、Ee
は省略可。5.8.3
多次元配列と可変長配列2005
年に、それまではBinary Table
の付録となっていた“
多次元配列”
と“
可変長配 列”
の規約が正式にスタンダードに取り入れられた。FITS
のバイナリテーブルにおいて最も特徴的なのは、1
つの列に複数のセルを持たせる 事ができることで、TFORMn
の値においてr
が2
以上の場合を固定長配列という。例えばTFORM99 = ’48I’
と定義すると、1
つの列に16-bit
整数が48
個入ることになる。この様 子はテーブルを単純な列の連なりと捉えるとわかりづらいが、テーブルに奥行があって、48
個のセルが奥に向かってずらりと並んでいると考えると理解しやすいかもしれない。多次元配列を定義するには、オプションキーワード
TDIMn
を使う。TDIMn
は、列n
の 多次元配列の定義を与えるもので、TFORMn
のr
とは異なり、列のバイト長に影響を与え るものではなく、データの解釈として利用される。r
が2
以上の場合に指定でき、(l, m)
の形を取る。上記の例でさらにTDIM99 = ’(8,6)’
と定義すれば、48
個のセルを8 × 6
の2
次元配列と解釈することになっており、これを多次元配列という。データ型の定義で最もわかりづらいのが、いわゆる
“
可変長配列”
と呼ばれるTFORMn
がr Pt
またはr Qt
の場合である。この場合、セルが奥に向かってずらりと並んでおり、そ の個数は固定ではないと考えれば良いが、データの格納方法が極めて特殊である。可変長 配列の場合は、配列データの実体はヒープ領域のどこかに格納され、テーブル本体(Data
Unit
のデータ配列)
のセルにはその行における“
配列長”
と“
ヒープ領域中の位置(
オフ5.8. Binary Table Extension (Standard extension 3)
セット)”
が格納されている。例えば、TFORM6 = ’1PE(3353)’
という定義があった場合、配列の個数の最大が
3353
であり、ヒープ領域のどこかに32-bit
浮動小数点数(
シンボル は“E”)
を格納しているという意味になる。この場合、テーブル本体の当該列のある行に、(12, 34)
という数値(
配列記述子)
が格納されているとすると、ヒープ領域の先頭から34
バイトのオフセットの位置から12
個の32-bit
浮動小数点数が格納されていることになる。詳細については前述の原論文、または
FITS Standard 4.0
の7.3
節を参照されたい。5.8.4 Binary Table Extension
のヘッダの例異なるデータタイプと次元の
19
の列からなるBinary Table
のヘッダの例を示す(
スペー スの関係で途中一部略)
。“IFLUX”
というラベルの列は2
次元の配列である。“SOURCE”
の ラベルは各々16
の長さの文字列である。非標準のキーワード“NO IF”, “VELTYP”, “VELDEF”
がヘッダの最後に現れている。
1 2 3 4 5 6
1234567890123456789012345678901234567890123456789012345678901234 XTENSION= ’BINTABLE’ / Extension type
BITPIX = 8 / Binary data
NAXIS = 2 / Table is a matrix
NAXIS1 = 168 / Width of table row in bytes
NAXIS2 = 5 / Number of rows in table
PCOUNT = 0 / Random parameter count
GCOUNT = 1 / Group count
TFIELDS = 19 / Number of columns in each row EXTNAME = ’AIPS SU ’ / AIPS source table
EXTVER = 1 / Version number of table
TFORM1 = ’1I ’ / 16-bit integer
TTYPE1 = ’ID. NO. ’ / Type (label) of column 1 TUNIT1 = ’ ’ / Physical units of column 1 TFORM2 = ’16A ’ / Character string
TTYPE2 = ’SOURCE ’ / Type (label) of column 2 TUNIT2 = ’ ’ / Physical units of column 2 TFORM5 = ’2E ’ / Single precision array TTYPE5 = ’IFLUX ’ / Type (label) of column 5 TUNIT5 = ’JY ’ / Physical units of column 5 TUNIT19 = ’DEG/DAY ’ / Physical units of column 19
NO_IF = 2
VELTYP = ’LSR ’
VELDEF = ’OPTICAL ’
END
Dalam dokumen
FITS の手引き
(Halaman 66-70)