PyEphem:Sun 的 AlwaysUpError 发生在不应该发生的位置

PyEphem: AlwaysUpError for the Sun occurs in a location where this shouldn't happen

import ephem
rwth = ephem.Observer()
rwth.lat = '50.8'
rwth.long = '6.1'
rwth.horizon = '-18'
rwth.next_setting(ephem.Sun())

这会导致错误

Traceback (most recent call last): File "", line 1, in File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ephem/init.py", line 498, in next_setting return self._riset_helper(body, start, use_center, False, False) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ephem/init.py", line 470, in _riset_helper d1 = visit_antitransit() File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ephem/init.py", line 418, in visit_antitransit % (body.name, d)) ephem.AlwaysUpError: 'Sun' is still above the horizon at 2017/7/3 23:39:58

不过,在这个位置,太阳肯定会达到天文暮色(对应-18度)。你知道问题出在哪里吗?

在这个日期(7 月初)的那个纬度,太阳实际上从未达到 –18° 高度,因为北纬 50.8° 离北极圈太近了。在冬至日——每年 6 月 21 日左右——太阳位于北纬 23.5°,如果我们仔细考虑后果,这意味着:

  • 在北极的观察者会看到太阳整天在 horizon 上方 23.5° 的位置环绕天空。
  • 在 90° – 23.5° = 66.5° 的观察者会看到太阳整天都在 horizon 上,沿着它的圆周画一个圆。
  • 观察者必须在 90° – 23.5° – 18° = 48.5° 纬度或更南端,以便太阳下沉到足够低,以便他们观察到定义为天文暮光的黑暗程度。

即使当前日期是春分后几天,太阳还没有从其 farthest-north 纬度退回足够远,无法开始将天文曙光带到您询问的位置。 PyEphem 的答案在这里看起来是正确的。