Help us understand the problem. What is going on with this article?

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

はじめに

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away