• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Observer()的结果似乎没有考虑到PyEphem中的海拔效应

python 来源:Smingos 3次浏览

我对PyEphem模块给出的有关Observer()查询的结果以及海拔效果有一个查询。我从几个来源(如http://curious.astro.cornell.edu/question.php?number=388)了解到,观察者的海拔高度对日落时间有显着影响。然而,在下面的代码,我看到旁边没有区别:Observer()的结果似乎没有考虑到PyEphem中的海拔效应

import ephem 

emphemObj = ephem.Observer() 
emphemObj.date = '2011/08/09' 
emphemObj.lat = '53.4167' 
emphemObj.long = '-3' 
emphemObj.elevation = 0 

ephemResult = ephem.Sun() 
ephemResult.compute(emphemObj) 
print "Sunset time @ 0m: " + str(emphemObj.previous_rising(ephemResult)) 

emphemObj.elevation = 10000 
ephemResult.compute(emphemObj) 
print "Sunset time @ 10000m: " + str(emphemObj.previous_rising(ephemResult)) 

我得到的输出:

Sunset time @ 0m: 2011/8/8 04:38:34 
Sunset time @ 10000m: 2011/8/8 04:38:34 

我确信我做错了什么,而不是这是一个错误,但已经尝试了许多不同的方式,恐怕我会继续收到相同的结果。有谁知道我在这里做错了吗?

我已经在https://launchpad.net/pyephem上发布了,但是我没有回应。我希望我没有从根本上误解海拔函数的目的…


===========解决方案如下:

观察者的elevation意味着海拔高度的位置 – 例如亚利桑那州弗拉格斯塔夫的海拔高度。但可以推测,不仅观测者及其望远镜或双筒望远镜是海拔这一距离,假定在这个高度上地面以及地平线是也是。所以增加的elevation相对于地平线没有任何优势,因为当你移动到更高海拔的城市时,地平线会随着你移动。

用铅笔和纸黄色垫几分钟后,它看起来像角降到地平线hza是关系到地球半径r和你的距地面高度h如上如下:

hza = - acos(r/(h + r)) 

所以从你上面的例子以下的:

import math 
height = 10000 
hza = - math.acos(ephem.earth_radius/(height + ephem.earth_radius)) 
emphemObj.horizon = hza 
print "Sunrise time @ 10000m: " + str(emphemObj.previous_rising(ephemResult)) 

我得到的输出:

Sunrise time @ 10000m: 2011/8/8 04:08:18 

(请注意,“日出”去与previous_rising()和“日落”去与next_setting()!)


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)