Я пытаюсь использовать Skyfield, чтобы построить расстояние в а.е. от Земли до планет солнечной системы как функцию времени. Это очень просто и даже указано на первой странице домашней страницы пакета. Однако, хотя это отлично работает для Меркурия, Венеры и Марса, это не работает для других планет. Я не знаком с файлами эфемерид JPL, но кажется, что, например, Юпитер не имеет ключевой записи в файле 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 (здесь), но не уверен, что полностью понял Это.
Есть ли какие-нибудь предложения о том, как выполнить этот простой расчет расстояния Земля-Юпитер с помощью Skyfield?
Спасибо !
planets['jupiter barycenter']
? - person Psytho   schedule 19.01.2016