为什么我不能用 pyephem 得到相同的坐标?

Why can't I get the same coordinate back with pyephem?

如果您简单地创建一个 FixedObject 并给它一组坐标,然后请求它们回来,您会得到一个不同的位置:

>>> import ephem
>>> TestStar = ephem.FixedBody()
>>> TestStar._ra, TestStar._dec = '12:43:20', '-45:34:12'
>>> TestStar.compute()
>>> print TestStar.ra, TestStar.dec
12:44:15.34 -45:39:46.8

我现在明白这是因为,如文档所述,FixedBody 默认在 J2000 纪元,但是默认观察者的纪元是创建所述观察者的时刻,这似乎是什么时候的默认值你没有指定观察者。

但是,如果我尝试弥补这一点:

>>> TestStar4 = ephem.FixedBody()
>>> TestStar4._ra, TestStar4._dec, TestStar4._epoch = '12:43:20', '-45:34:12', '2000/01/01 12:00:00'
>>> TestSite2 = ephem.Observer()
>>> TestSite2.lat, TestSite2.lon, TestSite2.date = 0,0,'2000/01/01 12:00:00'
>>> TestStar4.compute(TestSite2)
>>> print TestStar4.ra, TestStar4.dec
12:43:19.42 -45:33:51.9

对于这个例子,你得到几乎相同的 RA,但 DEC 相差 20 角秒。

我特别想在 WEBDA 目录中获取一些恒星的 J2000 坐标,该目录为大多数恒星提供相对坐标。

例如看这个随机簇: http://www.univie.ac.at/webda/cgi-bin/frame_list.cgi?ic0166

"Coordinates J2000"只有9颗星的信息,"XY positions"link几乎所有的星都有信息。这些XY位置的中心和比例有点随意,但可以在网站上找到。

但是如果不知道为什么会有 20 弧秒的坐标差异,我不知道我的系统什么时候会失败。

好的,我想这个差异是由于一些修正因素造成的。 我现在知道我想使用天体地心位置,所以:

>>> import ephem
>>> TestStar = ephem.FixedBody()
>>> TestStar._ra, TestStar._dec = '12:43:20', '-45:34:12'
>>> TestStar.compute()
>>> print TestStar.a_ra, TestStar.a_dec
12:43:20 -45:34:12

足够简单(只是没理解手册的那部分,抱歉)。

我仍然很好奇所有更正中的哪一个会对这个影响最大,但我现在可以在不知道的情况下继续。