Преобразовать направление (вектор) в RA и Dec в Skyfield

В Скайфилде, если у меня есть вектор (x, y, z) от центра Земли, как я могу преобразовать его обратно в точку на "Небесной сфере" (т. Е. Правильное Вознесение и Склонение)?

Например, предположим, что у меня есть несколько точек на орбите телескопа вокруг Земли, и я хочу вычислить точное RA и Dec направления, нормального к орбите - по любой причине.

Здесь можно пренебречь такими эффектами, как аберрация и гравитация - я просто хочу изменить направление в ICRF на RA и декабрь.

В псевдокоде:

from skyfield.api import load
import numpy as np

eph = load('de421.bsp')
ts  = load.timescale()
now = ts.now()

vec     = np.array([3141, 2718, 5820], dtype=float)
nvec = vec / np.sqrt((vec**2).sum())  # normalize for the heck of it

earth = eph['earth']
evec  = earth.at(now).vector(vec)   # pseudocode

print "It's pointing toward: ", evec.radec()   # pseudocode

1 ответ

Решение

К счастью, преобразование вектора направления в ICRF в прямое восхождение и склонение полностью не зависит от положения Земли или чего-либо еще - это вопрос, который включает только то, как некоторые координаты x,y,z будут выражаться в виде полярных координат, то есть быстрая проблема геометрии.

Используя Skyfield:

from skyfield.positionlib import ICRF

vec = ICRF([3141, 2718, 5820])
ra, dec, distance = vec.radec()
print(ra)
print(dec)

Какие выводы:

02h 43m 28.94s
+54deg 29' 04.7"

Это даже избавляет от необходимости импортировать NumPy вручную, потому что ICRF Класс автоматически определяет, был ли ему передан список Python, и автоматически преобразует его в массив NumPy.

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