PyEphem:从太阳的时间计算角度然后从角度计算角度时的时间不匹配

时间:2017-07-11 12:07:33

标签: python pyephem

此脚本应该获取传输时间,获取传输时间的角度,然后获得达到角度的时间。我给出的两个印刷语句应该给出相同的输出。

import ephem
obs = ephem.Observer()
obs.lat = '30'
obs.long = '30'
sun = ephem.Sun(obs)
obs.date = sun.transit_time

sun.compute(obs)
altitude = sun.alt
obs.horizon = altitude
print(obs.next_setting(ephem.Sun(), use_center = True))

相反,这给了我一个NeverUpError。这没有任何意义。我试过坐标20,20。它没有给出错误,但时间不匹配。

  

回溯(最近一次呼叫最后):文件" test.py",第11行,in          print(obs.next_setting(ephem.Sun(),use_center = True))File" /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ephem/ 初始化的.py&#34 ;,   第498行,在next_setting中       return self._riset_helper(body,start,use_center,False,False)文件   " /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ephem/的初始化的.py&#34 ;,   第466行,在_riset_helper中       d0 = visit_transit()文件" /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ephem/ init .py",   第410行,在visit_transit中       %(body.name,d))ephem.NeverUpError:' Sun'在2017/7/12 10:05:39过渡到地平线以下

1 个答案:

答案 0 :(得分:0)

首先:按照之前的讨论,你似乎已经将问题编辑成了良好的形状。我可以将其粘贴到文件中并运行它并得到相同的错误。

第二:问题可能在于你正在寻找一种称为“密切”的环境,使用的是一个求解器来寻找直线交叉点。像next_setting()这样的例程期望在一天的某个时刻发现太阳高于地平线,然后一段时间之后低于地平线,然后它在转变发生的确切时刻变窄。但是如果我正确地读取你的代码,那么你正在为它找到下一个设置的问题,因为地平线的高度与太阳的最高海拔一样高 - 如果我正确地读取你的代码,那么太阳就永远不会有这样的时刻。 “向上”,因为在运输时它永远不会高于(或多或少)高于地平线的高度。当你设置远处天空的地平线时,换句话说,你创造了PyEphem看起来像没有日出的一天的东西,所以它明智地向你报告它找不到日落。

你说你的目标是“获得角度达到的时间” - 但不是transit_time本身?我不确定我理解为什么transit_time已经不是您正在寻找的时间了。