Observer()的结果似乎没有考虑到PyEphem中的海拔效应
我对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()
!)
以上是 Observer()的结果似乎没有考虑到PyEphem中的海拔效应 的全部内容, 来源链接: utcz.com/qa/259627.html