ここでは、JPLより発行されている、CD−ROM版天文暦(DE200/405/406)をPC上のC言語ソフトにて解読する方法について紹介します。尚、CコンパイラはMS VC++ VER6.0を使用しています。
その後JPLのDE天文暦はFTPサイトからLinux版(PC用)もリリースされるようになりましたので、以下の1章/2章の作業(CD ROMの購入とPC用にファイルの変換)は不要となってます。また、第5章のソフトについては新しいバージョンを[JPL DE天文暦ファイルをCで読む(第2版)]のページにアップしていますので、そちらを使用ください。(2015/03/16追記)
******************************************************************************
ここで紹介するプログラムは無保証です。このプログラムの使用によっていかなる
損害が生じても一切責任は負えません。しかしながら、バグ・改善要望につきまし
ては出 来るだけ対応したいと思いますのでお知らせください。
他のNETへの転載、再配布等は自由に行って下さい、特に制限しません。営利目的
(無料配付を含む)での利用も制限しません。しかし、配布等の時にはオリジナル
ソースをこの形式で添付下さい。また、著作権は放棄していません。
******************************************************************************
まずはCD−ROMそのものを購入しないといけません。CD−ROMはWillmann-Bell, Inc. にて販売されていますので、以下のURLにアクセスして購入します。
JPL PLANETARY AND LUNAR EPHEMERIDES ON CD-ROM
by Standish, et. al.
$24.95
それぞれの暦でサポートされている期間は以下
DE200 : (includes nutations but not librations)
JED 2305424.5 (1599 DEC 09) to JED 2513360.5 (2169 MAR 31)
DE405 : (includes both nutations and librations)
JED 2305424.50 (1599 DEC 09) to JED 2525008.50 (2201 FEB 20)
DE406 : the New "JPL Long Ephemeris" (includes neither nutations nor librations)
JED 0625360.50 (-3000 FEB 23) to 2816912.50 (+3000 MAY 06)
それぞれの暦のファイルのサイズは以下
Ephemeris items de200 de405 de406
--------------- ----- ----- -----
UNIX binary : 55Mb 62 Mb 199 Mb
ASCII (each 20-year block) : 5.2Mb 6.4Mb -
このCD−ROMを使う上での問題点は、
@計算用ソースコードがフォートランしか添付されてない。
AバイナリファイルはUNIX形式(バイト配置が上下逆)
BPCで使うにはASCII版からコンバートする必要があるが、これもソフトはフォートラン。
CDE406にはアスキーファイルの添付無し。
ワークステッション上にフォートランのコンパイラがある環境では問題ありませんが、
CD−ROMをPC上のC言語で読むには、
@バイナリファイルのUNIX形式からDOS形式への変換
AC言語でアクセスできるソフトの入手&改造
が必要になります。これを順に解説します。
第2章 バイナリファイルのUNIX形式からDOS形式への変換
|
以下のソフトでUNIX形式のファイル(unix.xxx)を直接DOS形式のファイル(dos.xxx)に変更します。(xxxは200、405若しくは406)
UNIXファイルと同じ大きさのファイルが出来るので、ディスク容量に気をつけてください。
JPL_CD-ROMファイル変換ソース"file_convert.zip"
CD−ROMには、フォートラン版の試験用計算ソフト及びその結果比較するための計算結果の入ったファイル"testpo.xxx"が添付されています。C言語用には、JPLの以下のディレクトリに、C言語で計算する為のソースファイルが公開されています。
Index of /ephem/export/C-versions/kourosh
しかし、このソフトも独自のフォーマットを使っているので、そのままでは上記dos.xxxファイルは読めません。この中のディレクトリにある"test.c"に若干手を加えた以下のファイル"test.c"が必要となります。
@"test.c"をコンパイルした実行ファイル
A上記のdos.xxxファイル
BCD−ROMに添付されている、"testpo.xxx"ファイル
の3つのファイルを使ってファイル変換&計算ルーチンが正しく動いているかをチェックします。
試験ソフトが正常終了したら、ファイル変換&計算ルーチンが正しく動いていることになります。
変換ファイル試験ソース"test.zip"
CD−ROMには、フォートラン版の直交座標計算ソフト"test1"が添付されています。C言語用には、JPLの以下のディレクトリに、C言語で計算する為のソースファイルが公開されています。
Index of /ephem/export/C-versions/kourosh
このソフトをdos.xxxデータファイル用に変換したものが以下のソフトです。
以下の環境で使用してください。
@"test1.c"をコンパイルした実行ファイル
A上記のdos.xxxファイル
の2つのファイルを使って直交座標を計算します。計算例も添付します。
直交座標計算ソース"test1.zip"
地球の位置の計算結果例(at 1999/01/00 0hTDB)"test1.txt"
CD−ROMのデータは直交座標系なので、赤緯赤経等の位置情報を得るためには、追加の計算が必要となります。
上記"test1.c"ファイルは、直交座標迄の計算しかしてくれないので、
以下、追加の処理を入れたファイルを添付します。
これにて、ファイルの中のPLANETに数値を与えることで、太陽、月、惑星の位置計算が出来ます。
以下の環境で使用してください。
@"jpl_eph.zip"を解凍しコンパイルした実行ファイル
A上記のdos.xxxファイル
の2つのファイルを使って位置を計算します。計算例も添付します。
太陽・月・惑星位置計算ソース"jpl_eph.zip(21kbytes)"
水星の位置の計算結果例(at 1999/01/01 0hTDB)"test.txt"