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

2024-06-28 19:43:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用PyEphem计算太阳纬度和经度,但我不明白的是,当我计算太阳的经度和星座时

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

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

^{pr2}$

上面说白羊座出什么事了我不明白请你帮忙


Tags: sunlonprintcompute星座pyephem纬度经度
2条回答

在白羊座。以下是我使用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

黄道上的太阳距离贝塔阿里星6:09度,所以它仍然在白羊座。 我还用其他程序用那个日期复查了这个结果,结果是一样的。在

好问题!在

有两个原因让你得到了一个不同于你预期的答案。在

首先,天文学家目前使用的星座边界是根据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

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

^{pr2}$

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

你遇到的另一个问题是,官方的星座边界标记了天空中的实际恒星群,它们形成了公羊(金牛座)、天平(天秤座)等。碰巧这些数字甚至都不接近横跨黄道30°的每一个(正如你所预期的那样,因为你从返回的角度减去了30°)。如果你打印出沿黄道每度的星座图,你会(a)发现星座的宽度变化很大,(b)你会发现13个而不是12个星座穿过黄道,因为蛇夫座的一部分位于1875年的黄道上。在

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

{a1}

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

相关问题 更多 >