大阪市立科学館学芸員 江越航のホームページ  大阪市立科学館 学芸員

 江越 航のホームページ

Python で天文計算

日の出・日の入りの計算(下記)

Python で今日の月

Python で日食計算

Python で月食計算

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