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)
エラーは以下です。上記のコードで「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"
エフェメリス ファイルを間違った方法で使用していますか (重心位置が間違っていますか?)、それとも de421.bsp ファイルの単なる制限ですか? Skyfield の Web サイト (ここ) でエフェメリス ファイルの説明を読みましたが、完全には理解できませんでした。
Skyfield を使用して地球と木星の距離を簡単に計算する方法について何か提案はありますか?
ありがとう !