Fab*_*bio 3 python astronomy skyfield
我正在尝试使用Skyfield绘制从地球到太阳系行星的距离作为时间的函数.这非常简单,甚至在包主页的首页中给出.然而,虽然这对汞,金星和火星非常有效,但它对其他行星不起作用.我不熟悉JPL星历文件,但似乎例如Jupiter在de421.bsp文件中没有密钥条目,这可以解释这个问题.
这是一个最小的例子(来自主页的那个):
from skyfield.api import load, now
planets = load('de421.bsp')
earth, planet = planets['earth'], planets['jupiter']
jd = now()
position = earth.at(jd).observe(planet)
ra, dec, distance = position.radec()
print(distance)
Run Code Online (Sandbox Code Playgroud)
错误如下.请注意,如果您在上面的代码中将'jupiter'替换为'mars',它就不会崩溃.
----> earth, planet = planets['earth'], planets['jupiter']
KeyError: "kernel 'de421.bsp' is missing 'JUPITER' - the targets it supports are:
SOLAR SYSTEM BARYCENTER, MERCURY BARYCENTER, VENUS BARYCENTER, EARTH BARYCENTER,
MARS BARYCENTER, JUPITER BARYCENTER, SATURN BARYCENTER, URANUS BARYCENTER,
NEPTUNE BARYCENTER, PLUTO BARYCENTER, SUN, MERCURY, VENUS, MOON, EARTH, MARS"
Run Code Online (Sandbox Code Playgroud)
我是以错误的方式使用星历文件(错误的重心?)还是这只是de421.bsp文件的限制?我在Skyfield网站(这里)上阅读了星历文件的描述,但不确定我是否完全理解它.
有关如何使用Skyfield进行地球 - 木星距离简单计算的任何建议吗?
谢谢 !
就像错误说的那样,你需要使用JUPITER BARYCENTER而不是jupiter.