2012-08-13 46 views
1

我想用python的ephem模块找到月亮位置(高度和方位角),并将它与我的位置的明显月亮位置的查找表进行比较。我注意到我为这些角度获得的价值观上的重大差异。这是我的测试代码。为什么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 - 天顶。所以我们的天顶价值将是:70.64764

我的问题是,为什么有差异?查找表给出了角度。这与它有什么关系?

+0

你正在使用什么查找表?它值得信赖吗?对于观察者位置? – DarenW 2012-08-13 23:47:00

+0

查找表来自海军天文台MICA数据库,应该是非常好的。该位置与上面代码中的位置相同。 – 2012-08-14 04:00:36

回答

1

你的问题是,你不小心提供的latlon值弧度,因为当PyEphem被赋予一个浮点数它总是假定你正在做的“原始数学”和弧度提交值:

>>> o.lat = 39.2545 
>>> o.lon = -76.7095 

如果你不是想提供度和有PyEphem翻译,你可以提供字符串:

>>> o.lat = '39.2545' 
>>> o.lon = '-76.7095' 

或者你也可以提供您计算使用号的功能,如果这能帮助你把一切都直,因为字符串转换为数字的PyEphem做法是不是一个标准的Python的成语,而阅读你的代码的时候大家都会明白math.radians()

>>> o.lat = math.radians(39.2545) 
>>> o.lon = math.radians(-76.7095) 

,你是真正的观察员询问那些大的弧度值是在89:07:01.8°N,284:52:09.8°E这个非常靠近北极的位置。

+1

谢谢!有用。生病时,请记住你所说的一切。 – 2012-08-14 14:55:01

+0

快速的问题:有没有办法将ra/dec转换为ephem中的xyz for moon? – 2012-08-14 16:26:36

相关问题