Расстояние до комет с помощью Skyfields
Я использую Skyfield, чтобы вычислить относительное расстояние планет к Земле как функцию времени (как описано на домашней странице Skyfield). Это прекрасно работает, и теперь я пытаюсь реализовать расстояние от кометы Earth=> (например, 67P/ Tchouri).
Я нашел в NASA JPL способ создания файлов Spice SPK для комет ( здесь), но он создает файлы xsp, которые я не могу прочитать с помощью load
команда с небесного поля.
Еще одна возможность, которую я рассмотрел, - это использовать информацию об орбитах, как это предлагается для пифема (см. Здесь), но я не знаю, как читать их в Скайфилде. Я также видел, что кометы были на дорожной карте для спринта кодирования неба, так что, возможно, это мой ответ, но если вы знаете способ заставить его работать с текущей версией, это было бы очень полезно.
Спасибо!
0 ответов
Skyfield получил поддержку комет! Вы можете найти подробности здесь:
https://rhodesmill.org/skyfield/kepler-orbits.html#comets
Адаптировав код из документации, вот расстояние до кометы из базы данных Minor Planet Center:
from skyfield.api import load
from skyfield.constants import GM_SUN_Pitjeva_2005_km3_s2 as GM_SUN
from skyfield.data import mpc
ts = load.timescale()
eph = load('de421.bsp')
sun, earth = eph['sun'], eph['earth']
with load.open(mpc.COMET_URL) as f:
comets = mpc.load_comets_dataframe(f)
comets = comets.set_index('designation', drop=False)
row = comets.loc['1P/Halley']
comet = sun + mpc.comet_orbit(row, ts, GM_SUN)
t = ts.utc(2020, 10, 17)
ra, dec, distance = earth.at(t).observe(comet).radec()
print('Distance in AU:', distance.au)
Вижу результат:
Distance in AU: 35.22790002485247