궤도를 도는 위성이 n주기 후에 지구상의 특정 지점을 통과할지 예측할 수 있습니까?

Nov 15 2020

나는 기본적인 천체 역학을 배우고 있는데 인터넷에서 찾을 수없는 질문이 있습니다 (아마도 충분히 열심히 보지 않을 수도 있습니다).

내 질문은 현재 기간이 아니라면 다음 n 기간 동안 위성이 지구상의 특정 지점을 통과하는 데 필요한 기간을 예측하는 방법이 있습니까? 아니면 그럴 것인지 계산할까요?

좀 더 구체적으로 말하자면 현재 기간의 어느 시점에서 위성이 도시 A를 비행하지만 도시 B에서는 비행하지 않는다고 가정 해 봅시다. 이제 우리는 각 기간이 지나면 궤도가 서쪽으로 이동하여 비행하지 않을 수도 있다는 것을 알고 있습니다. 그 기간에 도시 A를 넘어 도시 B를 날아갈 수 있습니다. 위성의 궤도가 도시 B와 정렬되는 데 걸리는 기간 수 또는 시간을 어떻게 계산합니까?

여기 시각화 목적으로 그린 ​​엉뚱한 이미지가 있습니다 .. :)

감사! :)

답변

4 Uwe Nov 17 2020 at 05:15

Python 코드 사용 uhoh에서 ...의 지상 추적 기간을 어떻게 결정합니까?

그리고 대권 거리 파이썬에서 크리스 웹이에서, 나는 2020년 11월 17일 후 사일 동안 지구에 주어진 참조 점에 ISS 지상 트랙의 거리를 플롯하는 프로그램을 썼습니다.

최소 거리는 113.81km이며 4 일마다 1 분마다 계산됩니다. ISS는 작은 스텝 사이즈를 사용하여 발견 된 최소값을 매우 빠르게 변경합니다.

every 60 seconds of 2 days :  150.12 km
every 30 seconds of 2 days :   71.40 km
every 15 seconds of 2 days :   55.43 km

그러나 4 일 동안 5 초마다 계산하려면 너무 많은 메모리와 시간이 필요합니다.

ISS의 궤도 높이와주기는 일정하지 않습니다 . ISS 높이를 참조하십시오 . 따라서 며칠에 대한 예측 만 가능하지만 더 긴 시간과 결과적으로 다시 부스트되지는 않습니다.

import numpy as np
import matplotlib.pyplot as plt
from skyfield.api import Loader, Topos, EarthSatellite
import greatcircle

TLE = """1 44303U 98067QA  20320.43936697  .00008076  00000-0  12168-3 0  9990
2 44303  51.6405 305.3910 0005107 159.4387 200.6810 15.55769424 83251
"""

L1, L2 = TLE.splitlines()

load    = Loader('~/Documents/fishing/SkyData')  # avoids multiple copies of large files
data    = load('de421.bsp')
earth   = data['earth']
ts      = load.timescale(builtin=True)

minutes = np.arange(60. * 24 * 4)           # four days
time    = ts.utc(2020, 11, 17, 0, minutes)  # start November 17, 2020

ISS     = EarthSatellite(L1, L2)

subpoint = ISS.at(time).subpoint()

lon      = subpoint.longitude.degrees
lat      = subpoint.latitude.degrees

# great circle distance
if True :
    # reference point on Earth for distance calculation
    ref_point_lat = 49.619832
    ref_point_lon = 11.037711

    gc = greatcircle.GreatCircle()
    MEAN_EARTH_RADIUS_KM = 6371

    gc.name1 = "reference point"
    gc.latitude1_degrees = ref_point_lat
    gc.longitude1_degrees = ref_point_lon

    dist_km = np.zeros_like(lat, float)
    hours = np.zeros_like(lat, float)
    
    gc.name2 = "ISS"
    min_dist = 2.0 * np.pi * MEAN_EARTH_RADIUS_KM
    for i in range(len(lat)) :
        gc.latitude2_degrees = lat[i]
        gc.longitude2_degrees = lon[i]
        gc.calculate()
        if gc.valid == True :
            dist_km[i] = MEAN_EARTH_RADIUS_KM * gc.central_angle_radians
        hours[i] = minutes[i] / 60.

        min_dist = min(dist_km[i], min_dist)  # finding minimum distance
        
    print('minimum distance {: 5.2f} km'.format( min_dist))
        
    fig, ax = plt.subplots(figsize=(6, 6))
    plt.plot(hours, dist_km)
    ax.set_title("ISS pass over a specific point on Earth")
    ax.set_xlabel('time hours')
    ax.set_ylabel('distance km')
    plt.show()
2 Uwe Nov 17 2020 at 19:29

그동안 찾았습니다.

length_of 함수를 사용하여 arcminute 길이, 자오선, 적도 및 극 지름을 확인합니다.

from skyfield.api import Topos, load
from skyfield.functions import length_of

ts = load.timescale(builtin=True)
t = ts.utc(2021, 1, 1)

b1 = Topos(0., 0., elevation_m=0.0)
b2 = Topos(1. / 60., 0., elevation_m=0.0)
print(round(length_of(b1.at(t).position.km - b2.at(t).position.km), 5))

b3 = Topos(90., 0., elevation_m=0.0)
b2 = Topos(90.0 - 1. / 60., 0., elevation_m=0.0)
print(round(length_of(b3.at(t).position.km - b2.at(t).position.km), 5))

b2 = Topos(0., 1. / 60., elevation_m=0.0)
print(round(length_of(b1.at(t).position.km - b2.at(t).position.km), 5))

b4 = Topos(90., 0., elevation_m=0.0)
print(round(length_of(b1.at(t).position.km - b4.at(t).position.km), 3))

b5 = Topos(0., 180., elevation_m=0.0)
print(round(length_of(b1.at(t).position.km - b5.at(t).position.km), 3))

b6 = Topos(-90., 0., elevation_m=0.0)
print(round(length_of(b4.at(t).position.km - b6.at(t).position.km), 3))

#Meridianminute of geographic lattitude at the equator 1842.90 m,
#but at the poles 1861.57 m
#arclength of an arcminute at the equator 1855.31 m.
#a meridian from equator up to a pole 10,001.966 km
#equator diameter    12,756.27 km
#pole diameter    12,713.50 km    

결과는 매우 정확합니다.

  • 1.8429 킬로미터
  • 1.86157 킬로미터
  • 1.85532 킬로미터
  • 9004.939 km
  • 12756.273 km
  • 12713.504 km

물론 자오선은 지표면이 아닌지면을 통해 측정되므로 10,001.966km, 직선, 큰 원이 아닌 9004.939입니다.