更新 Bernese 的 DE405 星历文件

Bernese 使用的行星/月球星历文件为 JPL 的 DE405 模型,该模型未包含在 Bernese 的安装包中,读者需要按照其说明文档自己制作。虽然目前网上已经有一些制作好的文件可供下载,但多数文件在 2020 年后未必可用。因为根据 Bernese 教程制作的模型只包含 1980 至 2020 之间的数据。

本文介绍 DE405 文件的制作方法,并在最后给出一个可用到 2040 年的 DE405 文件。

制作之前

首先你需要成功安装 Bernese 软件,因为制作该文件需要使用 Bernese 中的两个程序。如果你在 GNU/Linux 系统上操作,可以从前文 Ubuntu 操作系统安装 BerneseCentOS 操作系统安装 Bernese 中获取安装参考。

本文的制作方法皆为 Linux 系统上使用的命令。

文件下载

登录 JPL 的 FTP 服务器,切换到其中的 文件夹,该文件夹每 20 年为一个文件,包含 DE405 模型的全部数据,可从 1900 年用至 2200 年。但我们并不需要下载所有文件。只需下载以下文件即可:

  • header.405:文件头;
  • testpo.405:测试文件;
  • ascp1980.405:1980 ~ 2000 年的星历数据;
  • ascp2000.405:2000 ~ 2020 年的星历数据;
  • ascp2020.405:2020 ~ 2040 年的星历数据。

需要注意的是,JPL 的服务器已经被屏蔽,目前国内的用户暂时无法访问,而代理程序又不支持 FTP 协议。因此下载上述文件可能一点特殊的“技巧”。但我已将上述文件下载并打包,你可以在这里下载

文件拼接

使用 cat 命令将除了测试文件之外的所有文件拼接起来:

1
2
3
4
$ cat header.405 > temp.405
$ cat ascp1980.405 >> temp.405
$ cat ascp2000.405 >> temp.405
$ cat ascp2020.405 >> temp.405

这样便生成了一个 temp.405 临时文件,其中包含了 DE405 星历文件的基础信息,以及从 1980 ~ 2040 年的星历数据。

格式转换

使用 Bernese 中的 ASC2EPH 命令将文本的 temp.405 转换为二进制文件:

1
2
3
$ echo temp.405 > ASC2EPH.INP
$ echo JPLEPH >> ASC2EPH.INP
$ $XG/ASC2EPH

如果以上命令没有报错,将生成一个名为 DE405.EPH 的文件,将其拷贝到 Bernese 的 GEN/ 文件夹内即可使用。

测试

使用 Bernese 中的 TESTEPH 命令测试所制作的 JPLEPH 文件的正确性。

1
2
3
4
$ echo JPLEPH > TESTEPH.INP
$ echo testop.405 >> TESTEPH.INP
$ echo DE405 >> TESTEHP.INP
$ $XG/TESTEPH

以上命令将会使用你刚制作的星历文件与 JPL 提供的 testpo.405 测试文件进行对比,并打印出各自的计算结果。

最后,附上我制作好的 DE405.EPH 文件,你可以直接下载使用。其有效时间段为 1980 ~ 2040 年,还有相当长的寿命。