前回、「月・惑星の暦 JPL DE430 について」という記事を公開しました。(DE430 は、NASA の機関である JPL(Jet Propulsion LaboratoryJPL) が惑星探査用に編纂・発行している月・惑星の暦の最新版)
今回は、複数存在する DE430 のテキスト形式データファイルを1つのバイナリ形式のファイルにコンバートする方法についての記録です。但し、現在はバイナリ形式のデータも公開されているので、今回のようなコンバート作業は不要です。今回は、公開されているコンバート用の FORTRAN77 プログラムの動作確認の意味で作業を行いました。)
0. 前提条件
- Linux Mint 17.2(64bit) での作業を想定。
- GNU Fortran (GCC) 4.9.1 でのコンパイル作業を想定。(FORTRAN77 のソースコードがコンパイルできる環境であること)
1. 使用するデータファイル
“ftp://ssd.jpl.nasa.gov/pub/eph/planets/ascii/de430/” 内の以下のファイル。
- ヘッダファイル: header.430_572
- テキスト形式データファイル: ascp1550.430 〜 ascp2550.430
- 検証用ファイル: testpo.430
2. 使用するプログラム(ソースコード)
“ftp://ssd.jpl.nasa.gov/pub/eph/planets/fortran/” 内の以下のファイル。
- コンバートプログラム: asc2eph.f
- データ検証プログラム: testeph.f
3. コンバートプログラムのコンパイル
“asc2eph.f” の 74、75 行目辺りに以下のような記述があるので、 NRECL = 4
の方のコメントを解除(行頭の C
を削除)する。
1 2 |
|
そして、コンパイルする。
1
|
|
コンパイルに成功すると、 “asc2eph” というオブジェクトファイルが作成される。
4. データ検証プログラムのコンパイル
“testeph.f” の NRECL=
となっている箇所を NRECL=4
に、 KSIZE =
となっている箇所を KSIZE = 2036
と編集する。さらに、コメント化されている CALL FSIZER2 ...
のコメントを解除(行頭の C
を削除)する。
1 2 3 4 5 |
|
そして、コンパイルする。
1
|
|
コンパイルに成功すると、 “testeph” というオブジェクトファイルが作成される。
5. テキスト形式データのマージ&コンバート
“asc2eph” をヘッダファイル・テキスト形式データファイルと同じディレクトリに配置して以下のように実行する。(必要なテキスト形式データファイルだけをマージするようにしてもよいし、全てのテキスト形式データファイルをマージするようにしてもよい)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
成功すると、同じディレクトリ内に “JPLEPH” というバイナリファイルが作成される。(全てのテキスト形式データファイルをマージ&コンバートした場合は “ftp://ssd.jpl.nasa.gov/pub/eph/planets/Linux/de430/linux_p1550p2650.430” と同じサイズになるはず)
“JPLEPH” が既に存在している場合はコンパイルエラーになるので、コンパイルし直す際は “JPLEPH” ファイルを削除してから。
6. バイナリ形式データの検証
“testeph” を “JPLEPH” や “testpo.430” と同じディレクトリに配置して以下のように実行する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
difference
の列が 0.00000E+00
もしくは 0.88818E-15
のように限りなく小さい値になっていれば、データに誤りがない(テキストデータが正常にバイナリデータにコンバートされている)ということではないでしょうか。(本来は全ての difference
値が 0.00000E+00
になるべきであろう。この誤差は “testpo.430” 読み込み時の誤差によるもの(浮動小数点数が受ける影響によるもの))
また、全てのテキスト形式データファイルをマージ&コンバートした場合は、当方の環境では “testeph” 実行後に「浮動小数点」に関する例外が発生した。(原因は不明。これも浮動小数点数が受ける影響によるものかもしれない)
検証用フィル “testpo.430” の仕様については、「月・惑星の暦 JPL DE430 について!」を参照のこと。
参考サイト
JPL 本家サイトと FTP サイト。
今後、データやプログラムを解析して惑星の位置を正確に計算するのに役立てたいと思っております。
以上。