此脚本应该获取传输时间,获取传输时间的角度,然后获得达到角度的时间。我给出的两个印刷语句应该给出相同的输出。
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过渡到地平线以下
答案 0 :(得分:0)
首先:按照之前的讨论,你似乎已经将问题编辑成了良好的形状。我可以将其粘贴到文件中并运行它并得到相同的错误。
第二:问题可能在于你正在寻找一种称为“密切”的环境,使用的是一个求解器来寻找直线交叉点。像next_setting()
这样的例程期望在一天的某个时刻发现太阳高于地平线,然后一段时间之后低于地平线,然后它在转变发生的确切时刻变窄。但是如果我正确地读取你的代码,那么你正在为它找到下一个设置的问题,因为地平线的高度与太阳的最高海拔一样高 - 如果我正确地读取你的代码,那么太阳就永远不会有这样的时刻。 “向上”,因为在运输时它永远不会高于(或多或少)高于地平线的高度。当你设置远处天空的地平线时,换句话说,你创造了PyEphem看起来像没有日出的一天的东西,所以它明智地向你报告它找不到日落。
你说你的目标是“获得角度达到的时间” - 但不是transit_time
本身?我不确定我理解为什么transit_time
已经不是您正在寻找的时间了。