3

我正在尝试为不同的卫星轨道高度显示不同的子点图,并使用这些线进行进一步分析。

所以我给自己写了一个卫星创建函数来计算倾角和平均运动:

def create_sat (a,orbit_type='ISS',e=0.0008835,epoch=26317,number=1):
    a=(a+6378)*1000
    if orbit_type=='ISS':
        i=0.90058989402907
    else:
        i=np.arccos(-(((a)/(12352000))**(7/2)))
    
    mu=3.986004418*(10**14)
    pii=3.14159265359793
    p=np.sqrt((a**3*4*pii**2)/(mu))/60
    mean_motion=((2*pii)/p)
    
    satrec = Satrec()
    satrec.sgp4init(
        WGS84,           # gravity model
        'i',             # 'a' = old AFSPC mode, 'i' = improved mode
        number,          # satnum: Satellite number
        epoch,           # epoch: days since 1949 December 31 00:00 UT
        2.2,             # bstar: drag coefficient (/earth radii)
        6.969196665e-13, # ndot: ballistic coefficient (revs/day)
        0.0,             # nddot: second derivative of mean motion (revs/day^3)
        e,               # ecco: eccentricity
        0,               # argpo: argument of perigee (radians)
        i,         # inclo: inclination (radians)
        0,               # mo: mean anomaly (radians)
        mean_motion,           # no_kozai: mean motion (radians/minute)
        2,               # nodeo: right ascension of ascending node (radians)
    )
    
    print(p)
    print(1/(p/60))
    print(mean_motion)
    print(i)
    ts = load.timescale()
    sat = EarthSatellite.from_satrec(satrec, ts)
    return sat

但是,当我尝试使用 skyfiled 包计算子点时,出现错误:

\toposlib.py:232: RuntimeWarning: invalid value encountered in remainder
lon = (arctan2(y, x) - pi) % tau - pi

我发现_compute_latitude(self, position)skyfields toposlib.py 为x、y 和z 返回nan。

如果我为倾斜度选择不同的值i并且mean_motion它有效,但不适用于计算值。(虽然计算是正确的)

为什么它返回 nan 以及计算的边界是什么?

提前致谢!

4

1 回答 1

0

您可能创建了一个无效的卫星,并且正在返回[nan nan nan]它的位置 - 当一个 NaN 值被询问它的余数时,某些版本的 NumPy 会感到不安%

  1. 在询问其坐标之前尝试打印原始位置。这将帮助您确认 NaN 值是否是问题所在。
  2. 如果确实是问题所在,请尝试打印 EarthSatellite.message属性以查看 SGP4 例程与您的坐标有关的错误。
于 2022-01-22T04:40:41.137 回答