Астропия, проблема преобразования гелиоцентрического декартова в RA / Dec - PullRequest
1 голос
/ 11 октября 2019

Я пытаюсь преобразовать гелиоцентрические декартовы векторы в RA / Dec с помощью Astropy.

У меня есть следующий вывод с сервера Skybot для определения положения Юпитера и астероида Флоры (8)на дату 2019-10-11 00: 00:

Skybot output enter image description here

Используя пакет координат 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

Гораздо ближе, но все же существенная разница. Любые предложения, чтобы приблизить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...