1

我目前正在研究天文安装支持工具。这需要在 JNow 和 J2000 之间转换坐标。我已经使用 SOFA 库中的 ERFA 实现来完成此操作,该库也存在于 astropy 中。当我开始关注 Skyfield 进行卫星跟踪时,我想减少使用的库的数量。实际上,从 J2000(或 ICRS)到 JNow(Topocentric)的转换可以在 ERFA 上使用“atic13”例程完成:

        rc, dc, eo = self.ERFA.atic13(self.ERFA.anp(ra * self.ERFA.D2PI /24 + self.ERFA.eo06a(jdtt, 0.0)),
                                      dec * self.ERFA.D2PI / 360,
                                      <topo julian date>,
                                      0.0)
        val1 = rc * 24.0 / self.ERFA.D2PI
        val2 = dc * self.ERFA.DR2D

在 Skyfield 上执行此操作的相同方法是

result = earth.at(<topo julian date>).observe(<coordinates>).apparent()

我可以从结果中访问坐标。现在让我伤心的是,因为我可能走错了路,我会反其道而行之。所以在 ERFA 中很简单:

            ri, di, eo = self.ERFA.atci13(ra * self.ERFA.D2PI / 24,
                                      dec * self.ERFA.D2PI / 360,
                                      0,
                                      0,
                                      0,
                                      0,
                                      <topo julian date>,
                                      0)
        val1 = self.ERFA.anp(ri - eo) * 24 / self.ERFA.D2PI
        val2 = di * 360 / self.ERFA.D2PI

但我没有找到 Skyfield 的正确方法。如果有人能以正确的方式指导我,这将非常有帮助。我实际上正在使用最新的(1.6)

米歇尔

4

1 回答 1

0

唉,Skyfield 目前还没有对像差和光偏转的倒数实施迭代近似——它只能在通常的正向应用它们。相比之下,您引用的 ERFA 例程确实颠倒了它们:

“迭代技术用于像差和光偏转校正,因此函数eraAtic13(或eraAticq)和eraAtci13(或eraAtciq)是精确的逆;即使在太阳圆盘的边缘,差异也只有大约 1 纳弧秒。”</p>

https://juliaastro.github.io/ERFA.jl/v0.4/api.html#ERFA.atic13-NTuple{4,Any}

您将希望继续使用 AstroPy 进行该转换。

于 2020-09-03T08:41:56.960 回答