Python で天文計算
日の出・日の入りの計算 (PyEphem版)
(→ Skyfield を使った計算方法はこちら)Python の天文計算ライブラリ PyEphem を使用することで、簡単に日の出・日の入り時刻の計算ができます。
(ephemeris:天体暦の意)
Pyephem をインポートします。
import ephem
観測者のクラスのインスタンス(ここでは osaka)を作成します。Tokyo と Osaka は、ephem.city('Osaka') などとするだけで設定できます。
osaka = ephem.city('Osaka')
緯度と経度を直接設定する場合は、次のようにします。緯度、経度は文字列として設定します。
osaka = ephem.Observer()
osaka.lat = '34.6914'
osaka.lon = '135.4917'
作成した観測者 osaka に、現在の日時を設定ます。Pyephem で使用する時刻は、世界時で設定します。
osaka.date = datetime.datetime.utcnow()
太陽のインスタンス(ここでは sun)を作成します。
sun = ephem.Sun()
osaka.next_rising(sun) で、現在時刻から見て、一番早い次の日の出の時刻を計算します。
print(osaka.next_rising(sun))
日の出の時刻が表示されます。時刻は世界時です。
2018/6/13 19:44:03
日本標準時で表示するには、ephem.localtime メソッドを使用します。
print(ephem.localtime(osaka.next_rising(sun)))
全体では、次のようになります。
import ephem
import datetime
osaka = ephem.city('Osaka')
osaka.date = datetime.datetime.utcnow()
sun = ephem.Sun()
print('次の大阪の日の出時刻:', ephem.localtime(osaka.next_rising(sun)))
print('次の大阪の日の入り時刻:', ephem.localtime(osaka.next_setting(sun)))
表示結果
次の大阪の日の出時刻: 2018-06-14 04:44:03.000003
次の大阪の日の入り時刻: 2018-06-13 19:12:01.000002