2013-03-12 9 views
2

저는 python SGP4 1.1 모듈을 사용하여 MEO 위성의 위치와 속도를 계산합니다. STK 및 JSatTrak에 비해 위치 및 속도에 대한 반환 값이 올바르지 않은 것으로 나타났습니다. 위성은 대략 6 시간의 지상 반복 트랙을 가져야하지만,이 프로그램은 지상 반복을 4:47:51로 보여줍니다. 내가 잘못하고있는 것이 있습니까?Python SGP4 1.1 잘못된 궤도 계산

from sgp4.earth_gravity import wgs72 
from sgp4.io import twoline2rv 
from math import atan2, cos, pi, sin, sqrt, tan 
from datetime import datetime 

def calculate(options): 
    x = options[0] 
    y = options[1] 
    z = options[2] 

    # Constants (WGS ellipsoid) 
    a = 6378.137 
    e = 8.1819190842622e-2 
    # Calculation 
    b = sqrt(pow(a,2) * (1-pow(e,2))) 
    ep = sqrt((pow(a,2)-pow(b,2))/pow(b,2)) 
    p = sqrt(pow(x,2)+pow(y,2)) 
    th = atan2(a*z, b*p) 
    lon = atan2(y, x) 
    lat = atan2((z+ep*ep*b*pow(sin(th),3)), (p-e*e*a*pow(cos(th),3))) 
    n = a/sqrt(1-e*e*pow(sin(lat),2)) 
    alt = str(p/cos(lat)-n) 
    lat = str((lat*180)/pi) 
    lon = str((lon*180)/pi) 
    #print "%s %s %s" % (lat, lon, alt) 
    return (lat, lon, alt) 

line1 = '1  1U 001001 14001.00000000 .00000000 00000+0 00000+0 0 00022'   
line2 = '2  1 0.0891 294.8098 0002843 64.8653 0.5014 5.00115502 09' 

satellite = twoline2rv(line1, line2, wgs72) 
position1, velocity1 = satellite.propagate(2013, 3, 1, 0, 0, 1) 
position2, velocity2 = satellite.propagate(2013, 3, 1, 4, 47, 52) 
lat1,lon1,alt1 = calculate(position1) 
lat2,lon2,alt2 = calculate(position2) 

print lat1 + " " + lon1 + " " + alt1 
print lat2 + " " + lon2 + " " + alt2 
print "\n\n" 
print position1 
print position2 

답변

3

그래서는 아카이브, 어쨌든 당신을 도울 수 있지만하지 않습니다 가정이 질문을 이후 3 주되었습니다 ...

나는 파이썬 SGP4 루틴이 없어 그럴 수 없어 SGP4 루틴은 TEME (True Equator, Mean Equinox : https://en.wikipedia.org/wiki/Earth-centered_inertial#TEME)라는 관성 (비 회전) 참조 프레임에서 위치와 속도를 반환합니다. 이 참조 시스템에서 지구의 위도/경도를 계산하면 잘못된 결과가 나옵니다. 먼저 TEME 시스템을 지구 (ECEF : https://en.wikipedia.org/wiki/ECEF 등)와 함께 회전하는 회전 시스템으로 변환 한 다음 위도/경도를 계산할 수 있습니다.

사소한 것이 아니기 때문에이 변환을위한 라이브러리가 있기를 바랍니다.

감사합니다.

3

계산에서 지구의 회전을 허용해야합니다. 경도 대신에 지구상의 적경을 계산했습니다. 위키 백과에서 Hour Angle에 대한 기사를 읽어보십시오.