Преобразование координат в Астропии

Я делаю преобразование координат в Астропии. Но это не работает правильно. Ситуация следующая: у меня есть координата звезды в J2000, и я хочу преобразовать ее в реальную эпоху (или другую конкретную дату). Я проверяю код по координатам, предоставленным Stellarium. Проблема в том, что результаты будут отличаться примерно через 20 минут, и это большая проблема, потому что мне нужна точность в несколько десятков миллисекунд. Используемый код является следующим:

from astropy.coordinates import SkyCoord
from astropy.coordinates import FK5

c = SkyCoord(20.398617733743833, 38.466348612533892,
         unit='deg', frame='icrs')

c_fk5 = c.transform_to(FK5(equinox='2018-10-19 00:19:41'))

Я хотел бы знать, если мой метод неправильный и как я могу получить лучшие результаты. Пожалуйста, каждый может свободно отвечать и оставлять комментарии и предложения. Благодарю.

1 ответ

Вы смешиваете равноденствие (классический нулевой пункт для прямого восхождения) и эпоху (когда что-то наблюдается). Также FK5 - это старая небесная система отсчета, которая была заменена ICRS, и эти два кадра очень тесно выровнены, поэтому нет смысла преобразовывать их между собой.

Astropy использует ERFA, которая является повторной реализацией кода SOFA, который реализует резолюции IAU2000/2006 для расчета позиций и использует современные преобразования на основе CIO. Stellarium использует более старый подход, основанный на равноденствии. Различие между этими двумя подходами можно увидеть на рисунке 2 " Руководства SOFA Tools for Earth Attitude ", где Astropy идет вниз по правой ветви CIO, а Stellarium - по левой ветви равноденствия.

Вы можете вычислить то, что вы спрашиваете, то есть "где в небе находится мой объект, который имел эти координаты ICRS на J2000.0 в мое время 2018-10-19 00:19:41 UTC", что было бы Небесным Промежуточным Ссылкой Система (CIRS) использует астропию, но это несопоставимо с очевидными геоцентрическими положениями, сообщенными в Stellarium. Это связано с тем, что модели, в которых находится полюс Земли (модели прецессии-нутации), происхождение прямого восхождения и модель вращения Земли различаются между двумя подходами. Это затрудняет сравнение, пока два подхода не встретятся снова на local apparent [h, delta] шаг на рисунке 2 (соответствует HA/Dec (apparent) в стеллариуме). Этому не помогает тот факт, что Astropy на самом деле не имеет рамки HA/Dec, так как обычно это промежуточный шаг по сравнению с Alt/Az, т. Е. Как далеко запад / восток и выше горизонта объект будет для Земли. основанный наблюдатель.

Следующий код должен позволить вам вычислить местный кажущийся HA, Dec для сравнения со Stellarium (при условии, что вы отправили дату и место в Stellarium одинаковыми). Это будет работать для удаленного объекта, для которого правильное движение и параллакс незначительны; в противном случае вам нужно будет добавить их при объявлении SkyCoord - см. Использование скоростей со SkyCoord для более подробной информации.

import astropy.units as u
from astropy.coordinates import SkyCoord, ITRS, EarthLocation
from astropy.time import Time

c = SkyCoord(20.398617733743833, 38.466348612533892, unit='deg', frame='icrs')
t = Time('2018-10-19 00:19:41', scale='utc')
loc = EarthLocation(lon=30*u.deg, lat=30*u.deg, height=0*u.m)

c_ITRS = c.transform_to(ITRS(obstime=t))
# Calculate local apparent Hour Angle (HA), wrap at 0/24h
local_ha = loc.lon - c_ITRS.spherical.lon
local_ha.wrap_at(24*u.hourangle, inplace=True)
# Calculate local apparent Declination
local_dec = c_ITRS.spherical.lat
print("Local apparent HA, Dec={} {}".format(local_ha.to_string(unit=u.hourangle, sep=':'), local_dec.to_string(unit=u.deg, sep=':', alwayssign=True) ))

Будет некоторое различие из-за различных используемых моделей, учитывающих параметры ориентации Земли (UT1-UTC, полярное движение) и т. Д., Но они должны сравниваться на субсекундном уровне.

Другие вопросы по тегам