Я пытаюсь преобразовать гелиоцентрические декартовы векторы в RA / Dec с помощью Astropy.
У меня есть следующий вывод с сервера Skybot для определения положения Юпитера и астероида Флоры (8)на дату 2019-10-11 00: 00:
Используя пакет координат Astropy, я могу преобразоватьгелиоцентрические декартовы векторы;Px, Py, Pz (x = -1.0394055704345, y = -5.1017277480665, z = -2.1859827838526), чтобы соответствовать RA / Dec выхода Skybot (17 13 56.2541 -22 46 31.024).
# Jupiter, Cartesian to ra/dec
from astropy.coordinates import SkyCoord
h = (-1.0394055704345, -5.1017277480665, -2.1859827838526) #Skybot Cartesian
Skybot_radec = '17 13 56.2541 -22 46 31.024'
helio = SkyCoord(x = h[0], y = h[1], z = h[2],
unit='AU',
representation_type ='cartesian')
print('\nJupiter\nAstropy = ', helio.to_string('hmsdms'))
print ('Skybot = ', Skybot_radec )
Skybot и Astropy дают один и тот же результат:
>>>
Jupiter
Astropy = 17h13m56.2542s -22d46m31.0237s
Skybot = 17 13 56.2541 -22 46 31.024
Однако, попытка того же процесса с астероидной флорой приводит к несовпадению ra / dec:
h = ( -0.217732049, -2.230749006, -0.848768038 ) #Skybot Cartesian
Skybot_radec = '16 25 19.6257 -19 37 54.618'
helio = SkyCoord(x = h[0], y = h[1], z = h[2],
unit='AU',
representation_type='cartesian')
print('\nFlora\nAstropy = ', helio.to_string('hmsdms'))
print ('Skybot = ', Skybot_radec )
>>>
Flora
Astropy = 17h37m42.0741s -20d44m27.5348s
Skybot = 16 25 19.6257 -19 37 54.618
Почему это работает дляв одном случае, но не в другом?
В ответ на комментарий Стюарта, приведенный ниже, приведен код с рамкой GCRS и включенным obstime:
from astropy.coordinates import SkyCoord, GCRS
from astropy import units as u
obs_date = '2019-10-11 00:00'
h = ( -0.217732049, -2.230749006, -0.848768038 ) #Skybot cartesian
Skybot_radec = '16 25 19.6257 -19 37 54.618'
helio = SkyCoord(x = h[0], y = h[1], z = h[2],
unit='AU',
frame = 'icrs',
representation_type='cartesian',
obstime = obs_date)
geo = helio.transform_to(GCRS(obstime = obs_date))
print('\nFlora\nAstropy = ', geo.to_string('hmsdms'))
print ('Skybot = ', Skybot_radec )
## calculate object separation in the sky
Skybot_radec = SkyCoord(Skybot_radec, frame = 'gcrs', unit = (u.hourangle, u.deg),
obstime = obs_date)
print('separation is ',Skybot_radec.separation(geo))
результат:
Flora
Astropy = 16h20m00.3151s -19d17m49.5591s
Skybot = 16 25 19.6257 -19 37 54.618
separation is 1d17m53.9205s
Гораздо ближе, но все же существенная разница. Любые предложения, чтобы приблизить это?