mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

JPL 天文暦バイナリデータの仕様!

[ プログラミング, 暦・カレンダー ] [ カレンダー ]

こんばんは。

NASA の機関である JPL(Jet Propulsion Laboratory) が惑星探査用に編纂・発行している月・惑星の暦の最新版 DE430 には、テキスト形式のデータの他にバイナリ形式のデータが存在します。実際には1つにまとめたバイナリ形式のデータファイルを参照することが多いようです。

今回は DE430 のバイナリ形式データの仕様について、 FORTRAN77 プログラムを解析して理解できた内容についての記録です。

1. DE430 バイナリ形式データの仕様

  • Intel x86, IA64 等の環境では、エンディアンはリトルエンディアンである。
  • テキスト形式データを JPL 提供の FORTRAN77 プログラム等でマージ&バイナリ化した場合は KSIZE の値が設定されているが、 JPL が提供するバイナリ形式データでは KSIZE の値が設定されていない。(別途テキスト形式ファイルを参照して KSIZE 値を得る必要がある)
  • ヘッダ部分は 4 * KSIZE バイトのレコード2個で構成されている。
  • ヘッダ部分の後ろに係数の一覧が格納されている

以下、仕様。(項目名のアルファベットは FORTRAN77 プログラムで使用されている変数。データ型は FORTRAN77 でのもの)

オフセット項目名データ型項目数備考
4 * KSIZE * 0 TTL(タイトル) CHARACTER * 84 3 84 byte * 3
CNAM(定数名) CHARACTER * 6 400 6 byte * 400
SS(ユリウス日(開始、終了)、分割日数) DOUBLE PRECISION 3 8 byte * 3
NCON(定数の数) INTEGER 1 4 byte * 1
AU(天文単位) DOUBLE PRECISION 1 8 byte * 1
EMRAT(地球と月の質量比) DOUBLE PRECISION 1 8 byte * 1
IPT(オフセット、係数の数、サブ区間数)(水星〜月・章動) INTEGER 3 * 12 4 byte * 3 * 12
NUMDE(DEバージョン番号) INTEGER 1 4 byte * 1
IPT(オフセット、係数の数、サブ区間数)(月・秤動) INTEGER 1 4 byte * 1
パディング領域 4 * KSIZE byte の残りの部分
4 * KSIZE * 1 CVAL(定数値) DOUBLE PRECISION NCON の値 8 byte * NCON 値
パディング領域 4 * KSIZE byte の残りの部分
4 * KSIZE * 2 CVAL(係数値) DOUBLE PRECISION 8 byte の連続
最初の2項目はそのインデックスに
おけるユリウス日(開始、終了)
3項目目以降が系数値
さらに、これの繰り返し

以上。

Comments