海上保安庁海洋情報部-天体の位置計算データファイルの作成
前記事の「海上保安庁海洋情報部-天体の位置計算式をコード化してみた」では、解説に掲載された計算方法をGNU Fortranでコード化してみましたが、太陽や惑星や恒星データについては、その都度、コードを書き換える必要がありました。データを書き換えるのは結構手間がかかります。そこで、もう少し楽な方法を一例として紹介します。なお、OSとしてLinux Mint 20.3 MATE Editionを使用した方法になります。
準備するもの
- Visual Studio Code
- LibreOffice Calc(表計算)
- 天体位置計算用係数データ(.txt形式)
天体位置計算用係数データファイルを作成
海上保安庁海洋情報部にある天文・暦情報のページから「コンピュータによる天体の位置計算式 (天測暦/天測略暦付録)」にある令和4年版のtxtをクリックして内容を表示します。表示したらデータ部分を選択してCtrl+Cでコピーします。
Vusal Studio Codeを起動して、Documentフォルダを開きます。なお、フォルダを作成してもデスクトップでもでも構いません。フォルダを開いたら、適当な名前で新規にファイルを作成して、コピーしたデータを貼り付けて保存します。ここではsun-data.txtとしました。
保存したら、データ部分だけを矩形選択します。Linux Mintではちょっとコツが必要です。最初にデータの先頭をクリックして、そのまま押しっぱなしにします。次にShift+Altを押したままドラッグして矩形選択します。矩形選択したらCtrl+Cでコピーします。WindowsやMacでは押すキーが異なると思います。
LibreOffice Calcに貼り付けてCSVファイルを作成する
LibreOffice Calcを起動したらセルA1を選択して、右クリックして貼り付けます。テキストのインポートというウィンドウが開きます。
例ではきちんとなっていますが、必要なのは区切りオプションは固定長することです。次にフィールドの数値にある部分にあるガイドマークにマウスポインタを合わせると両矢印に変わりますので、ドラッグしてガイドラインを適切な位置になるように設定します。設定したら[OK]をクリックすると以下のように読み込まれます。
読み込んだら、新しいシートを作成してデータをコピーします。データは太陽の場合は1月0日-5月1日、4月30日- 9月 1日、8月31日-12月32日というように別れていますので、それぞれシートを作成してカット&ペーストしていきます。コピーしたら適当な名前で保存します。ここでは、sun-data.xlsx(EXCEL Office2007-365)として保存しました。
あとはワークシートごとにCSV形式で出力して、プログラム側で読み込むコードを書くだけです。
最後に
今回はプログラム中の係数データをひとつひとつ書き換えずにTXTファイルを利用することで、プログラム中のデータを変更する方法を紹介しました。特に月の係数データは1ヶ月毎に変わるので、紹介した方法が利用できるのかなと思います。
おまけ
表計算に読み込めればいかようにできてしまうのです。GNU Fortranで配列にデータを格納する部分のコードを作成してみました。
フィールドごとの区切り記号を指定せず(空白)にCSV形式で出力してVisual Studio Codeで読み込むと、
コードとして読み込まれています。あとは見栄えよく少し加工すればいいと思います。