如何使用PyEphem计算行星的正确经度和星座

时间:2013-04-15 01:12:58

标签: python astronomy pyephem

我试图计算太阳拉特和长期使用PyEphem我不理解的是当我计算太阳经度和星座时

>>> sun = ephem.Sun()
>>> sun.compute('2011/05/04')
>>> print ephem.Ecliptic(sun).lon
43:02:58.8

所以43:02:58.8是13.02金牛座 但是当我试图得到星座时

>>> print ephem.constellation(sun)
('Ari', 'Aries')

它说白羊座出了什么问题我不明白请一些帮助

2 个答案:

答案 0 :(得分:3)

好问题!

有两个原因可以得到与您预期不同的答案。

首先,天文学家目前使用的星座边界是利用黄道发生于1875年的位置建立起来的。从那时起,黄道上的“零经度”点随着地球轴线的进入而继续移动,所以你得到的答案将是几度。要真正了解1875年坐标中的经度,你必须这样问:

import ephem
sun = ephem.Sun()
sun.compute('2011/05/04')
print "Today's coordinates:", ephem.Ecliptic(sun).lon
sun.compute('2011/05/04', epoch='1875')
print "In 1875 coordinates:", ephem.Ecliptic(sun).lon

运行此脚本时,我得到输出:

Today's coordinates: 43:02:58.8
In 1875 coordinates: 41:18:14.1

这样就可以从结果中删除一个错误来源。请注意,PyEphem constellation()函数在查找星座边界表中的天空位置之前会自动将坐标转换为1875,如果您提供的主体作为其参数的epoch不同于1875。

你遇到的另一个问题是,官方的星座边界标志着天空中真正的恒星组,它们组成了Ram(金牛座),天秤座(天秤座)等人物的形象。并且碰巧这些数字甚至没有接近每个横跨黄道的正好30°(正如你可能预期的那样,因为你从你回来的角度减去30°?)。如果你沿着黄道打印出各个角度的星座,你将(a)发现星座的宽度变化很大,(b)你会发现,由于蛇夫座的一部分,所以13个星座而不是12个星座穿过黄道。沿着1875年的黄道。

以下是一些可能有用的参考资料:

http://en.wikipedia.org/wiki/Constellation#IAU_constellations

http://en.wikipedia.org/wiki/Precession

答案 1 :(得分:0)

它在白羊座。这是我使用 Beta Ari 作为参考的计算:

>>> sun = e.Sun()
>>> sun.compute('2011/05/04')
>>> e.Ecliptic(sun).lon
43:02:58.8
>>> beta_ari = e.readdb('Sheratan,f|S|A5,01:54:38.5|98.74,28:48:28.9|-110.41,2.65,2000,0')
>>> beta_ari.compute('2011/05/04')
>>> e.Ecliptic(beta_ari).lon
36:53:55.2
>>> e.Ecliptic(sun).lon - e.Ecliptic(beta_ari).lon
0.10735523133236013
>>> e.degrees(e.Ecliptic(sun).lon - e.Ecliptic(beta_ari).lon)
6:09:03.6

黄道线上的太阳距离Beta Ari 6:09度,所以它仍然在白羊座。 我还使用该日期对其他程序进行了双重检查,结果是相同的。