Python Observer()的结果似乎没有考虑Pyphem中的高程效应

Python Observer()的结果似乎没有考虑Pyphem中的高程效应,python,astronomy,pyephem,Python,Astronomy,Pyephem,我对PyEphem模块给出的与Observer()查询相关的结果以及高程的影响进行了查询。我从几个来源(例如)了解到,观测者的海拔高度对日落时间有显著影响。但是,在以下代码中,我几乎看不到任何区别: import ephem emphemObj = ephem.Observer() emphemObj.date = '2011/08/09' emphemObj.lat = '53.4167' emphemObj.long = '-3' emphemObj.elevation = 0 ephe

我对PyEphem模块给出的与Observer()查询相关的结果以及高程的影响进行了查询。我从几个来源(例如)了解到,观测者的海拔高度对日落时间有显著影响。但是,在以下代码中,我几乎看不到任何区别:

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
Sunrise time @ 10000m: 2011/8/8 04:08:18
我相当肯定我做错了什么,而不是这是一个错误,但在尝试了许多不同的方法后,我担心我总是得到同样的结果。有人知道我做错了什么吗


我已经把这个贴在网上了,但是我没有回应。我希望我没有从根本上误解提升函数的目的

观察者的
海拔
是指他们所在位置的海拔高度,比如亚利桑那州弗拉格斯塔夫的海拔。但据推测,不仅观测者和他们的望远镜或双筒望远镜在海平面以上的这个距离;据推测,地面和地平线也在这个高度。因此,相对于地平线而言,升高的
海拔
不会给您带来任何优势,因为当您移动到海拔较高的城市时,地平线会随之移动

几分钟后,用铅笔和黄色的纸垫,看起来向下到地平线的角度
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))
我得到输出:

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

(请注意,“日出”和“上一次上升”()一起出现,“日落”和“下一次上升”(!)一起出现)

如果你重复链接文章中的例子,在12000米的赤道上,你会得到同样的结果吗?如果是这样的话,那么可能他们还没有实现高程问题。我不是100%确定我试过12000M,但我肯定试过其他(更高)的值。上一次上升报告的时间确实发生了变化,这让我相信海拔代码正在起作用。我只是希望它不是仅仅考虑大气折射而不是“地平线”效应。谢谢布兰登!我花了那么多时间试图解决这个问题,我没有停下来思考它是否真的是个问题。当我想起来的时候,这是有道理的。。。尽管如此,当存在显著的局部日珥时,上述计算无疑对我有用。哦,天哪,我刚刚注意到我将上一次上升标记为日落时间!:-)很高兴一个没有进入实际的代码!