Pyorbitalを用いてISSの軌道を地図上にプロット

プログラミング

目次

はじめに

久々に宇宙ネタについて書きます。
本記事はpyorbitalを使ってISS(国際宇宙ステーション)の軌道計算を行い、その結果を地図上にプロットしてみます。

Pyorbitalとは

衛星の2行軌道要素形式(TLE)ファイルから、衛星の軌道パラメータを簡単に計算出来るpythonライブラリです。
現在のところ、pyorbital は低軌道の地球周回衛星のみをサポートしているようです。
詳細は公式ドキュメントをご覧ください。

ISSの軌道を地図上にプロット

調べてみたところ、既に衛星軌道*1やISS軌道*2の計算をされている記事があったので、これらの記事を参考にしました。
また、今回は地図上にプロットするにあたりfoliumを使いました。
まずはPyorbitalとfoliumのインストールです。
pip install pyorbital
pip install folium
必要なライブラリのインポート
from pyorbital.orbital import Orbital
from pyorbital.tlefile import Tle
import folium
import datetime

TLEの読み込み

ISSのTLEはCelesTrakから直接取得しても良いのですが、pyorbitalではデフォルトでISSのTLE情報が格納されているので今回はこれを使います。
使い方は簡単で下記のように指定してあげればOK。
# TLEの読み込み
iss_orb = Orbital("ISS (ZARYA)")

ISSの軌道計算, 地図上にプロット

現在時間から100分後(10分間隔)の時刻をリストに格納しておきます。
それぞれの時刻におけるISSの軌道を計算して、foliumで地図上にプロットします。
now = datetime.datetime.utcnow()
time_list = []
time = now
for i in range(10):
    time = time + datetime.timedelta(minutes=10)
    time_list.append(time)

map_ = folium.Map(location=[35.681167, 139.767052], zoom_start=2)
for time in time_list:
    lon, lat, alt = iss_orb.get_lonlatalt(time)
    print(time, lon, lat, alt)
    folium.Marker([lat, lon], popup='ISS', icon=folium.Icon(color='red')).add_to(map_)
    map_.save('iss_position.html')
出力されたhtmlを見てみると、ちゃんと軌道がプロットされているようです。

おわりに

本記事では、pyorbitalとfoliumを使ってISSの軌道を地図上にプロットしてみました。
私が新卒で新人研修受けてた時は軌道六要素を使って一生懸命に軌道計算をしてたなぁと懐かしく感じました。
もう10年以上前の話ですが。。
せっかくだから軌道が動くようなアニメーションにでもしようかなっと考えていたら、既にリーマンサットさんがもっと素晴らしいものを作っていました*3(汗)
バーチャル地球儀でISSの現在位置と軌道が見れますので、ご興味ある方は是非そちらをご覧になってください。そしたらこの記事は何だったの?とは聞かないでください。

参考

*2
タイトルとURLをコピーしました