2

我正在使用 python SGP4 1.1 模块来计算 MEO 卫星的位置和速度。当与 STK 和 JSatTrak 进行比较时,我注意到返回的位置和速度值不正确。卫星应该有大约 6 小时的地面重复轨道,但这个程序显示的是 4:47:51 的地面重复。有什么我做错了吗?

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   
4

3 回答 3

3

您需要在计算中考虑到地球的自转。您计算的不是经度,而是地心赤经。首先阅读Wikipedia中有关Hour Angle的文章。

于 2013-05-16T17:49:51.110 回答
3

你问这个问题已经三周了,所以我想这对你没有帮助,但无论如何,对于档案......

我没有 Python SGP4 例程,我无法对其进行测试,但通常 SGP4 例程会在称为 TEME(真赤道,平均春分:https://en.wikipedia )的惯性(非旋转)参考系中返回位置和速度.org/wiki/Earth-centered_inertial#TEME)。你在这个参考系统中计算地球的纬度/经度,它会给你错误的结果。您应该首先将 TEME 系统转换为随地球旋转的旋转系统(如 ECEF:https ://en.wikipedia.org/wiki/ECEF ),然后您可以计算纬度/经度。

我希望有用于这种转换的库,因为它不是一个简单的库。

问候。

于 2013-04-06T18:21:32.787 回答
0

简化扰动模型是一组五个数学模型(SGP、SGP4、SDP4、SGP8 和 SDP8),用于计算卫星和空间碎片相对于地心惯性坐标系的轨道状态向量。这组模型通常被统称为 SGP4,因为该模型的使用频率很高,尤其是 NORAD 和 NASA 生产的两线元素组。这些模型预测了由地球形状、阻力、辐射和来自太阳和月球等其他天体的引力效应引起的扰动效应。简化的一般扰动 (SGP) 模型适用于轨道周期小于 225 分钟的近地物体。简化的深空扰动 (SDP) 模型适用于轨道周期大于 225 分钟的物体,对应于 5,877.5 公里的高度,假设一个圆形轨道。SGP4 模型是由 Ken Cranford 于 1970 年开发的。该模型是通过简化 Lane 和 Cranford 的更广泛的分析理论获得的,该理论将 Brouwer 的解用于其引力模型,并将功率密度函数用于其大气模型。在以下链接中,您可以使用 SGP4 Python 版本,该版本返回卫星在三个坐标系中的状态向量,即 TEME、ITRS 和 GCRS。请使用我的 SGP4,然后将输出与 STK 进行比较。我猜您正在将 SGP4 的 TEME 输出与 STK 进行比较。该模型是通过简化更广泛的 Lane 和 Cranford 分析理论获得的,该理论将 Brouwer 的解用于其引力模型,将功率密度函数用于其大气模型。在以下链接中,您可以使用 SGP4 Python 版本,该版本返回卫星在三个坐标系中的状态向量,即 TEME、ITRS 和 GCRS。请使用我的 SGP4,然后将输出与 STK 进行比较。我猜您正在将 SGP4 的 TEME 输出与 STK 进行比较。该模型是通过简化更广泛的 Lane 和 Cranford 分析理论获得的,该理论将 Brouwer 的解用于其引力模型,将功率密度函数用于其大气模型。在以下链接中,您可以使用 SGP4 Python 版本,该版本返回卫星在三个坐标系中的状态向量,即 TEME、ITRS 和 GCRS。请使用我的 SGP4,然后将输出与 STK 进行比较。我猜您正在将 SGP4 的 TEME 输出与 STK 进行比较。https://www.researchgate.net/publication/358351066_SGP4_Python_code

于 2022-03-05T09:28:33.603 回答