pyephem を使用して日の出と日の入りを計算しようとしていますが、アルゴリズムが極域で収束しないようです。
以下のサンプルコードを確認してください。次の日の出と日の入りを求めて、10 分単位で 1 年間を繰り返します。pyephem は常に AlwaysUpError または NeverUpError を返しますが、1 年に少なくとも 1 回は太陽が昇り沈む必要がありますか?
import ephem
from datetime import datetime, timedelta
obs = ephem.Observer()
obs.lat = '89:30'
obs.long = '0'
start = datetime(2011, 1, 1)
end = datetime(2012, 1, 1)
step = timedelta(minutes=10)
sun = ephem.Sun()
timestamp = start
while timestamp < end:
obs.date = timestamp
try:
print obs.next_rising(sun)
except (ephem.AlwaysUpError, ephem.NeverUpError):
pass
try:
print obs.next_setting(sun)
except (ephem.AlwaysUpError, ephem.NeverUpError):
pass
try:
print obs.previous_rising(sun)
except (ephem.AlwaysUpError, ephem.NeverUpError):
pass
try:
print obs.previous_setting(sun)
except (ephem.AlwaysUpError, ephem.NeverUpError):
pass
timestamp += step
API の使い方が間違っているか、pyephem にバグがあるか、基本的なことを誤解しています。助けはありますか?