
衛星の地上軌跡をPythonで計算|なぜ軌道が"ずれていく"のか
2026-09-14 ・ 実践
人工衛星が地表のどこの上空を通るかを表すのが 地上軌跡(ground track) です。衛星は同じ軌道を回っているのに、地上から見ると通る場所が毎回ずれていく。その理由は地球の自転。この記事ではPythonで地上軌跡の経度ずれを計算します。
なぜ軌跡がずれるのか
衛星は宇宙空間の固定された軌道面を回ります。その下で地球が自転しているので、衛星が1周する間に地表は東へ回転。結果、次の周回では地上軌跡が西へずれて見えます。
1周ごとに西へずれる
衛星は1周
軌道面は固定
地球が自転
その間に東へ
軌跡が西へ
毎周ずれる
準備
pip install numpy
① 周回ごとの経度ずれを計算
ISS相当(高度400km)の周期を求め、1周のあいだに地球が何度回るかを計算します。
import numpy as np
GM = 3.986e14
R = 6.371e6
EARTH_DAY = 86164.0 # 恒星日(秒)※太陽日でなく自転周期
alt = 400e3
r = R + alt
T = 2 * np.pi * np.sqrt(r**3 / GM) # 軌道周期
print(f"周期: {T/60:.1f} 分")
# 1周のあいだに地球が回る角度 = 地上軌跡の西へのずれ
shift_deg = 360.0 * (T / EARTH_DAY)
print(f"1周あたりの経度ずれ: 西へ {shift_deg:.1f}°")
print(f"1日の周回数: {EARTH_DAY / T:.1f} 周")
出力:
周期: 92.4 分
1周あたりの経度ずれ: 西へ 23.2°
1日の周回数: 15.5 周
ISSは約93分で1周し、毎周 西へ約23° ずれます。1日で15.5周。だから同じ場所の上空に来るのは毎回少しずつ違う時刻・場所になるのです。
② サブ衛星点の緯度を追う
軌道傾斜角 i の衛星は、緯度が ±i の範囲を行き来します。単純な近似で緯度変化を出します。
inclination = 51.6 # ISSの軌道傾斜角(度)
times = np.linspace(0, T, 6) # 1周を6分割
for t in times:
phase = 2 * np.pi * t / T
lat = inclination * np.sin(phase) # 緯度の近似
print(f"t={t/60:4.0f}分 緯度 {lat:+5.1f}°")
緯度が +51.6° と −51.6° の間を正弦波で往復します。傾斜角が到達できる最高緯度を決めるので、ISSは南北緯51.6°より高緯度の真上には来ません。
なぜ恒星日を使う?
地上軌跡の計算では、太陽日(24時間)でなく**恒星日(約23時間56分)**を使います。地球の"本当の自転周期"だからです。この4分の差が、軌道計算では効いてきます。
実際はもっと複雑
今回は理想的な計算です。実際は地球の膨らみ(J2摂動)で軌道面自体もゆっくり回転し(太陽同期軌道はこれを利用)、大気抵抗で高度も下がります。精密な軌跡計算にはこれらを含めます。
まとめ
- 地上軌跡は衛星が地表のどこを通るかを表す
- 軌道面は固定で地球が自転するため、毎周 西へずれる
- ISSは周期約93分・1周で西へ約23°・1日15.5周
- 軌道傾斜角が到達できる最高緯度を決める
もう少し詳しく(背景と理論)
地上軌跡(グラウンドトラック)は、衛星の真下の点が地表に描く軌跡です。軌道そのものは慣性空間で固定に近い一方、地球が下で自転しているため、軌跡は一周ごとに西へずれます。1周期あたりのずれは「地球の自転角速度×軌道周期」で決まります1。軌道傾斜角が軌跡の到達できる最高緯度を決め、正弦波状のうねりとして現れます2。1日の周回数がちょうど整数(または簡単な分数)になるよう軌道を設計すると、毎日同じ地点の上空を通る**回帰軌道(repeat ground track)**になり、定点観測に便利です3。太陽同期軌道と組み合わせると、同じ地点を同じ時刻・同じ照明で撮り続けられます。
次の一歩 🌸
軌道の種類は軌道の種類、地球の膨らみを使う太陽同期軌道、衛星群はメガコンステレーションへどうぞ。