我正在尝试使用python的ephem模块定位月球位置(海拔高度和方位角),并将其与查找表进行比较,以查找我所在位置的明显月球位置。我注意到我获得的角度值的显着差异。这是我的测试代码。
>>> o = ephem.Observer()
>>> o.lat = 39.2545
>>> o.lon = -76.7095
>>> o.elevation = 80
>>> o.date = datetime.datetime.utcnow()
>>> print o.date
2012/8/13 21:00:55
>>> m = ephem.Moon(o)
>>> import math
>>> azimuth = math.degrees(m.az)
>>> azimuth
286.2894281178355
>>> alt = math.degrees(m.alt)
>>> alt
19.35235063580148
现在,将这些角度与查找表值进行比较:
Date/Time Zenith Azimuth
2012 Aug 13 21:00:00.0 88.45125 294.56966
2012 Aug 13 21:20:00.0 91.82583 297.59090
注意:Alt = 90 - Zenith。所以我们的天顶值将是:70.64764
我的问题是,为什么会有区别?查找表提供明显角度。这与它有关吗?
答案 0 :(得分:1)
你的问题是你不小心提供弧度的lat
和lon
值,因为当给PyEphem一个浮点数时,它总是假设你在做“原始数学”并提交以弧度表示的值:
>>> o.lat = 39.2545
>>> o.lon = -76.7095
如果您想要提供学位并让PyEphem翻译,您可以提供字符串:
>>> o.lat = '39.2545'
>>> o.lon = '-76.7095'
或者您可以提供使用math
函数计算的数字,如果这可以帮助您保持一切正确,因为PyEphem将字符串转换为数字的做法不是标准的Python习语,而每个人都会理解{{ 1}}在阅读你的代码时:
math.radians()
你实际上询问的那些大弧度值的观察者位于北纬89:07:01.8°,284:52:09.8°E,非常靠近北极。