
衛星コンステレーションのカバレッジをPythonで計算|何機で地球を覆えるか
2026-09-22 ・ 実践
Starlinkのような 衛星コンステレーション(衛星群) は、なぜ何千機も必要なのでしょう? 答えは「1機が覆える範囲が意外と狭い」から。この記事ではPythonで、1機のカバー範囲と地球全体を覆う機数を見積もります。メガコンステレーションの"数字の裏側"です。
1機が見渡せる範囲
衛星から地表を見下ろすと、地平線までの円い範囲だけが見えます。このフットプリントは高度が高いほど広がります。低軌道は狭く、静止軌道は超広い。
準備
pip install numpy
① 1機のカバー半径を計算
最低仰角(地平線からの角度)を考慮して、1機が覆う地表の角半径を求めます。
import numpy as np
R = 6371.0 # 地球半径 km
def coverage_angle(alt_km, min_elev_deg=25):
# 最低仰角min_elevで見える地表の中心角(度)
e = np.radians(min_elev_deg)
# 幾何:地球中心から見た角度
central = np.degrees(np.arccos(R / (R + alt_km) * np.cos(e)) - e)
return central
for alt in [550, 1200, 35786]:
ca = coverage_angle(alt)
print(f"高度 {alt:>5}km → カバー角半径 {ca:5.1f}°")
出力:
高度 550km → カバー角半径 8.5°
高度 1200km → カバー角半径 15.3°
高度 35786km → カバー角半径 57.1°
低軌道(550km)は角半径わずか約8.5°しか覆えません。一方、静止軌道は約57°=地球の広い範囲を1機で覆えます。低軌道は狭いから数が要るのです。
② 地球全体に必要なおおよその機数
1機のカバー面積で地球表面積を割って、ざっくり見積もります。
def satellites_needed(alt_km, min_elev_deg=25):
ca = np.radians(coverage_angle(alt_km, min_elev_deg))
cap_area = 2 * np.pi * R**2 * (1 - np.cos(ca)) # 球冠の面積
earth_area = 4 * np.pi * R**2
return earth_area / cap_area
for alt in [550, 1200, 35786]:
n = satellites_needed(alt)
print(f"高度 {alt:>5}km → 最低 約 {n:.0f} 機で全球カバー")
低軌道550kmでは 理論最小でも約180機、実際は重なりや連続性のため数倍必要。だからStarlinkは数千機規模なのです。静止軌道はわずか4機ほどで理論上ほぼ全球を覆えます(極域を除く)。
低軌道 vs 静止軌道のトレードオフ
静止軌道は少数で覆えますが、高度3.6万kmで通信遅延が大きい。低軌道は遅延が小さい代わりに、狭いフットプリントを大量の衛星で埋める必要がある。Starlinkが低軌道×多数を選ぶのは「低遅延」を取ったからです。
これは理想的な最小値
実際は「常に複数機が見える冗長性」「軌道の配置(傾斜角・軌道面)」「極域のカバー」などで、必要数は理論値の数倍になります。今回の計算は"下限の目安"。それでも「なぜ数千機か」の直感は掴めます。
まとめ
- 1機のフットプリントは高度で決まる(低軌道は狭い)
- 550kmでは角半径約8.5°、静止軌道は約57°
- 低軌道の全球カバーは理論最小でも約180機、実際は数千機
- 低軌道×多数は「低遅延」を取った設計。静止軌道は少数だが高遅延
もう少し詳しく(背景と理論)
1機の衛星が地上を見渡せる範囲は、高度と最低仰角(地平線近くは大気で使えない)で決まるフットプリントに限られます。全球や連続被覆を得るには複数機を配置したコンステレーションが要ります1。設計の定番が Walker constellation——総機数・軌道面数・面間位相をパラメータ化し、均等に配置する方式です2。GPS が中軌道に約24機超を配置して常時4機以上を可視にするのはこの考え方によります3。低軌道は1機のカバー範囲が狭いぶん、メガコンステレーションのように多数機で埋める必要があり、低遅延と引き換えに機数・運用・軌道混雑の課題が生じます。
次の一歩 🌸
衛星群の実際はメガコンステレーション、電波が届くかはリンクバジェット、軌道の種類は軌道の種類へどうぞ。