Python (Alt,Az)到(Ra,Dec)和背面的pyephem转换内部不一致

Python (Alt,Az)到(Ra,Dec)和背面的pyephem转换内部不一致,python,coordinate-transformation,astronomy,pyephem,Python,Coordinate Transformation,Astronomy,Pyephem,我发现当我把一个(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 = ephe

我发现当我把一个(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并注释掉
circu.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;
当你要求派弗海姆从观测到的赤经和赤经“向后”到它们后面的天空位置时,它只是反转折射(你已经关闭了)和进动来生成它的答案

为什么就到此为止?为什么它不尝试扭转章动和畸变?(除了实际原因:这些量是通过昂贵的多项式估算的,不容易逆转!)

它不尝试反向补偿章动和像差的原因是它不知道你所问的位于RA和dec的物体的范围。例如,如果你因为看到一颗卫星从头顶经过而询问RA和dec,那么像差就无关紧要了——地球卫星和地球在同一相对论框架内运行——章动也无关紧要,因为你不会对“理想”在哪里感兴趣地极点-你会对在你抬头看到卫星从头顶经过的特定夜晚地极指向的位置感兴趣


因此,在不知道你所看到的物体是地球卫星,还是月球,或者是太阳系不同相对论框架中的行星,或者更远的物体的情况下,“libastro”图书馆做了最简单的事情并停在那里,而不是用可能不适用于你的情况的相反效果来搞乱答案。不过,当我接近Pypehem的下一个版本时,我会记住这一点,并考虑是否使用多种
radec_of()
技术可能不合适。

你确定行星图纬度和行星中心纬度之间没有混淆吗?另一个疯狂的猜测是,这个时代存在一些问题。由于发生了一些(未记录的?)内部计算,可能应该在_ra和_dec之前设置_epoch。OTOH,这是胡说八道,因为J2000是默认值。尽管如此,高精度天文学需要一点偏执,所以这应该被仔细检查。行星图和行星中心纬度的混淆可能解释了第一个问题,但我不认为这可以解释为什么它们在内部不一致。文档中没有,但是有人知道应该在哪个坐标中指定哪个数字吗?当然,Ra和dec是行星中心。Lat、long、alt和az行星图?谢谢您的解释。
pole=ephem.FixedBody()
不意味着这是一个遥远的源吗?是的,
FixedBody
确实是作为遥远的源处理的。但是,
radec_of()
调用不知道正在询问有关固定体的信息,因此它不会执行所有“远距离”处理。