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

标签 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')

它说白羊座出了什么问题,我不明白,请有人帮忙

最佳答案

好问题!

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

首先,天文学家目前使用的星座边界是根据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()如果您提供一个具有 epoch 的 body 作为其参数,函数会在其星座边界表中查找天空位置之前自动将坐标转换为 1875这与 1875 年不同。

您遇到的另一个问题是,官方星座边界标记了天空中实际的恒星群,这些恒星群形成了白羊座(金牛座)、天秤座(天秤座)等图形。而且碰巧这些数字甚至与黄道上的每个跨越 30° 的数字都相差甚远(正如您可能所预料的,因为您是从返回的角度中减去 30°?)。如果沿着黄道打印出每个度数的星座,您会 (a) 发现星座的宽度变化很大,并且 (b) 您会发现有 13 个星座而不是 12 个星座穿过黄道,因为蛇夫座的一部分位于沿着 1875 年黄道。

以下是一些可能有用的引用:

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

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

关于python - 如何使用 PyEphem 计算正确的行星经度和星座,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16006244/

相关文章:

python - 如何在 PyQt5 中根据中心而不是左角使用移动命令定位标签

python - 使用相同的投影在图像上绘制线条

python - 使用 pyephem 计算卫星何时穿过经度

python - 如何在日出前2小时开始进程并在日落前1小时停止?

python - 带参数的自定义激活

python - 除法后期望非零值时接收 0.0

c++ - 太阳系模拟器物理集成问题(虚幻引擎 4,C++)

Python PyEphem 计算方位角和高度

python - 将转置分组 pandas 数据帧输出到 CSV

language-agnostic - 以计算方式求解开普勒方程