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

回到顶部