はじめに
pyorbitalは(低軌道)衛星のTLE情報から、軌道パラメータを計算するためのpythonパッケージです。
環境
- windows 10
- python=3.6.5
- pyorbital=1.5.0
1. TLEファイルを取得
まずは、計算に必要なTLEファイルを用意します。衛星のTLEはNORADのホームページから取得することができます。今回は例として、地球観測衛星AquaのTLEを使用します。こちらにアクセスしてください。すると、以下のような情報が載っていると思います。
AQUA
1 27424U 02022A 19124.57944444 .00000044 00000-0 19699-4 0 9999
2 27424 98.2004 66.1134 0001895 143.6983 232.6166 14.57117668904232
1行目が衛星の名前、2~3行目がTLEになります。
1~3行目をコピーし、てきとうなテキストエディタに貼り付け、「aqua.tle」と名付けて保存します。
2. pyorbitalのインストール
pyorbitalはpipでインストールできます。
$ pip install pyorbital
3. pyorbitalを使ったコードを書く
以下のようなコードを書きました。
from datetime import datetime
from pyorbital.orbital import Orbital
from pyorbital.tlefile import Tle
# TLEの読み込み
aqua_tle = Tle('AQUA', 'aqua.tle')
aqua_orbit = Orbital('AQUA', line1=aqua_tle.line1, line2=aqua_tle.line2)
now = datetime.utcnow()
# 現在の緯度、経度、高度を取得
lon, lat, alt = aqua_orbit.get_lonlatalt(now)
print('Aquaの現在地')
print('経度: ', lon)
print('緯度: ', lat)
print('高度[km]: ', alt)
print('')
# 24時間以内に東京タワーから衛星が見える時間を計算
pass_time_list = (aqua_orbit.get_next_passes(utc_time=now, length=24,
lon=139.75, lat=35.66, alt=0.333))
print('次にAquaが到来する時刻[UTC]: ',
pass_time_list[0][0].strftime('%Y/%m/%d %H:%M:%S'))
Orbitalインスタンスのget_lonlatalt()メソッドを使うと、datetime型で指定した時刻の衛星の位置を取得することができます。
また、get_next_passes()メソッドを使うと、utc_timeで指定した時刻から、lengthで指定した時間分までに、ある地点(今回は例として東京タワーの緯度、経度を用いた)からの衛星の可視時間をリストで取得できます。
スクリプトを実行すると、出力は以下のようになります。
Aquaの現在地
経度: -139.1972385567638
緯度: 59.24613580619223
高度[km]: 711.2824044503619
次にAquaが到来する時刻[UTC]: 2019/05/05 15:08:02
これら以外にも、get_observer_look()メソッドを使うと、観測者から見た衛星のAzimuth(方位角)とElevation(仰角)を得られたりします。
取得した緯度、経度をBasemapなどにプロットしてみると、また面白いかもしれませんね。