海上保安庁海洋情報部-天体の位置計算データファイルの作成

前記事の「海上保安庁海洋情報部-天体の位置計算式をコード化してみた」では、解説に掲載された計算方法を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]をクリックすると以下のように読み込まれます。

データをCalcに読み込む
データをCalcに読み込む

読み込んだら、新しいシートを作成してデータをコピーします。データは太陽の場合は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で読み込むと、

読み込むとコードが作成されている
読み込むとコードが作成されている

コードとして読み込まれています。あとは見栄えよく少し加工すればいいと思います。