在Skyfield内,如果我有一个来自地球中心的向量(x,y,z),我怎样才能将它反转换为“天球”上的一个点(即右上升和偏角)?
例如,假设我在地球望远镜的轨道上有几个点,我想计算轨道上正常方向的确切RA和Dec-无论如何原因。
这里可以忽略像像差和引力这样的效果 - 我只是想将ICRF中的方向转换为RA和Dec.
在伪代码中:
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
答案 0 :(得分: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数组。