我发现当我将 (Alt, Az) 转换为 (Ra, Dec) 然后用 PyEphem 返回时,我不明白我的开始。下面是一个简单的例子。
import ephem
print ephem.__version__
# '3.7.3.4'
gbt = ephem.Observer()
gbt.long = '-79:50:23.4'
gbt.lat = '38:25:59.23'
gbt.pressure = 0 # no refraction correction.
gbt.epoch = ephem.J2000
# Set the date to the epoch so there is nothing changing.
gbt.date = '2000/01/01 12:00:00'
# Should get the north pole right?
ra, dec = gbt.radec_of(0, '38:25:59.23')
# Not the north pole... error might be abberation.
print dec
# 89:59:30.5
# Now check internal consistancy by reversing the calculation.
pole = ephem.FixedBody()
pole._ra = ra
pole._dec = dec
pole._epoch = ephem.J2000
pole.compute(gbt)
# Should get what I started with right?
alt = pole.alt
# Not what I started with... error unknown.
print alt
# 38:26:26.7
正如评论中所指出的,虽然 30"比维基百科规定的 20"的最大效果要大,但没有准确到达北极可能只是恒星畸变。
当我进行反向计算时,我没有得到同样的结果,这一事实让我感到困惑。有什么建议么?
最佳答案
由于畸变和章动,您得到的结果是错误的。如果您自己编译 PyEphem 并注释掉 circum.h
的第 271 和 272 行,那么您会发现您得到的结果正是您期望的——通过这些编辑,代码将如下所示:
/* correct EOD equatoreal for nutation/aberation to form apparent
* geocentric
*/
/* nut_eq(mjed, &ra, &dec); */
/* ab_eq(mjed, lsn, &ra, &dec); */
op->s_gaera = ra;
op->s_gaedec = dec;
当您要求 PyEphem 从观察到的 RA“向后”并下降到它们后面的天空位置时,它只是反转折射(您已经关闭)和进动以生成答案。
为什么会停在那里?为什么它不尝试逆转章动和畸变? (除了实际原因:这些数量是通过难以逆转的昂贵多项式估算的!)
它不尝试对章动和像差进行反向补偿的原因是它不知道您所询问的位于 RA 和 dec 的对象的范围。例如,如果您因为看到卫星从头顶飞过而询问 RA 和 dec,那么像差将无关紧要——地球卫星在与地球相同的相对论坐标系中运行——章动也无关紧要,因为你不会对地球“理想”极点指向的位置感兴趣——你会感兴趣的是在你抬头观察卫星从头顶飞过的那个特定夜晚,极点指向的位置。
因此,在不知道您看到的物体是地球卫星,月球,还是太阳系不同相对论框架中的行星,或者更远的物体时,“libastro”库会做最简单的事情并停在那里,而不是用甚至可能不适用于您的情况的相反效果来混淆答案。不过,当我接近 PyEphem 的下一个版本时,我会牢记这一点,并考虑多种
radec_of()
技术是否可能不合适。关于python - (Alt, Az) 到 (Ra, Dec) 并返回内部不一致的 pyephem 转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11970713/