LoginSignup
10
16

More than 3 years have passed since last update.

[Python]pyorbitalで簡単衛星軌道予測

Last updated at Posted at 2019-05-05

はじめに

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を使ったコードを書く

以下のようなコードを書きました。

aqua_orbit.py
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などにプロットしてみると、また面白いかもしれませんね。

10
16
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
16