首先根据广播星历中给出的参数 A \sqrt{A} A 计算参考时刻 t o e t_{\mathrm{oe}} toe 的平均角速度 n 0 n_0 n0 :
n 0 = G M ( A ) 3 n_0=\frac{\sqrt{G M}}{(\sqrt{A})^3} n0=(A)3GM
式中, G M G M GM 为万有引力常数 G G G 与地球总质量 M M M 之乘积, 其值为 G M = 3.986005 × 1 0 14 m 3 / s 2 G M=3.986005 \times 10^{14} \mathrm{~m}^3 / \mathrm{s}^2 GM=3.986005×1014 m3/s2 。 然后根据广播星历中给定的摄动参数 Δ n \Delta n Δn 计算观测时刻卫星的平均角速度 n n n :
n = n 0 + Δ n n=n_0+\Delta n n=n0+Δn
M = M 0 + n ( t − t o e ) M=M_0+n\left(t-t_{o e}\right) M=M0+n(t−toe)
式中, M 0 M_0 M0 为参考时刻 t o e t_{o e} toe 时的平近点角, 由广播星历给出。
为什么要用参考时刻 t o e t_{o e} toe 来替代卫星过近地点时刻 t 0 t_0 t0 来计算呢? 原因很简单, 因为广播 星历每 2 h 2 \mathrm{~h} 2 h 更新一次, 将参考时刻设在中央时刻时, 外推间隔小于等于 1 h 1 \mathrm{~h} 1 h 。而卫星的运行周 期为 12 h 12 \mathrm{~h} 12 h 左右, 采用卫星过近地点时刻 t 0 t_0 t0 来计算时, 外推间隔最大有可能达 6 h 6 \mathrm{~h} 6 h 。用 t o e t_{o e} toe 来取 代卫星过近地点时刻 t 0 t_0 t0 后, 外推间隔将大大减小, 用较简单的模型也能获得精度较高的结 果。
用弧度表示的开普勒方程为:
E = M + e sin E E=M+e \sin E E=M+esinE
用角度表示的开普勒方程为:
E ∘ = M ∘ + ρ ∘ ⋅ e sin E ∘ E^{\circ}=M^{\circ}+\rho^{\circ} \cdot e \sin E^{\circ} E∘=M∘+ρ∘⋅esinE∘
解上述方程可用迭代法或微分改正法。
{ cos f = cos E − e 1 − e cos E sin f = 1 − e 2 sin E 1 − e cos E \left\{\begin{array}{l} \cos f=\frac{\cos E-e}{1-e \cos E} \\ \sin f=\frac{\sqrt{1-e^2} \sin E}{1-e \cos E} \end{array}\right. {cosf=1−ecosEcosE−esinf=1−ecosE1−e2sinE
式中, e e e 为卫星轨道的偏心率, 由广播星历给出。
所以,
f = arctan 1 − e 2 sin E cos E − e f=\arctan \frac{\sqrt{1-e^2} \sin E}{\cos E-e} f=arctancosE−e1−e2sinE
u ′ = ω + f u^{\prime}=\omega+f u′=ω+f
式中, ω \omega ω 为近地点角距, 由广播星历给出。
广播星历中给出了下列 6 个摄动参数: C u c , C w e , C r c , C r , C i c , C i s C_{u c}, C_{\mathrm{we}}, C_{r c}, C_r, C_{i c}, C_{i s} Cuc,Cwe,Crc,Cr,Cic,Cis, 据此可求出由于 J 2 J_2 J2 项 而引起的升交角距 u u u 的改正项 δ u \delta_u δu 、卫星矢径 r r r 的改正项 δ r \delta_r δr 和卫星轨道倾角 i i i 的摄动改正项 δ i \delta_i δi 。 计算公式如下:
{ δ u = C u k cos 2 u ′ + C w sin 2 u ′ δ r = C r c cos 2 u ′ + C r r sin 2 u ′ δ i = C i c cos 2 u ′ + C i u sin 2 u ′ \left\{\begin{array}{l} \delta_u=C_{u k} \cos 2 u^{\prime}+C_w \sin 2 u^{\prime} \\ \delta_r=C_{r c} \cos 2 u^{\prime}+C_{r r} \sin 2 u^{\prime} \\ \delta_i=C_{i c} \cos 2 u^{\prime}+C_{i u} \sin 2 u^{\prime} \end{array}\right. ⎩ ⎨ ⎧δu=Cukcos2u′+Cwsin2u′δr=Crccos2u′+Crrsin2u′δi=Ciccos2u′+Ciusin2u′
{ u = u ′ + δ u r = r ′ + δ r = a ( 1 − e cos E ) + δ r i = i 0 + δ i + d i d t ( t − t ∂ t ) \left\{\begin{array}{l} u=u^{\prime}+\delta_u \\ r=r^{\prime}+\delta_r=a(1-e \cos E)+\delta_r \\ i=i_0+\delta_i+\frac{\mathrm{d} i}{\mathrm{~d} t}\left(t-t_{\partial t}\right) \end{array}\right. ⎩ ⎨ ⎧u=u′+δur=r′+δr=a(1−ecosE)+δri=i0+δi+ dtdi(t−t∂t)
式中, a a a 为卫星轨道的长半径, a = ( A ) 2 , A a=(\sqrt{A})^2, \sqrt{A} a=(A)2,A 由广播星历给出; i 0 i_0 i0 为 t o e t_{\mathrm{oe}} toe 时刻的轨道倾角, 由 广播星历中的开普勒六参数给出; d i d t \frac{\mathrm{d} i}{\mathrm{~d} t} dtdi 为 i i i 的变化率, 由广播星历中的摄动九参数给出。
在轨道平面直角坐标系中 (坐标原点位于地心, X X X 轴指向升交点) 卫星的平面直角坐 标为:
{ x = r cos u y = r sin u \left\{\begin{array}{l} x=r \cos u \\ y=r \sin u \end{array}\right. {x=rcosuy=rsinu
若参考时刻 t o e t_{\mathrm{oe}} toe 时升交点的赤经为 Ω t α e \Omega_{t_{\alpha e}} Ωtαe, 升交点对时间的变化率为 Ω ˙ \dot{\Omega} Ω˙, 那么观测瞬间 t t t 的 升交点赤经 Ω \Omega Ω 应为:
Ω = Ω t e e + Ω ˙ ( t − t o t ) \boldsymbol{\Omega}=\Omega_{t_{e e}}+\dot{\Omega}\left(t-t_{o t}\right) Ω=Ωtee+Ω˙(t−tot)
Ω ˙ \dot{\Omega} Ω˙ 可从广播星历的摄动参数中给出。
设本周开始时刻 (星期日 0 时) 格林尼治恒星时为 G A S T veek \mathrm{GAST}_{\text {veek }} GASTveek , 则观测瞬间的格林尼治恒 星时为:
GAST = G A S T week + ω e t \text { GAST }=\mathrm{GAST}_{\text {week }}+\omega_e t GAST =GASTweek +ωet
式中, ω e \omega_e ωe 为地球自转角速度, 其值为 ω e = 7.292115 × 1 0 − 5 r a d / s 。 \omega_e=7.292115 \times 10^{-5} \mathrm{rad} / \mathrm{s}_{\text {。 }} ωe=7.292115×10−5rad/s。
t t t 为本周内的时间 ( s ) (\mathrm{s}) (s) 。显然, 上述 @埓中把地球自转看成是完全匀速的, 末顾及地球 自转的不均匀性。这样就可求得观测䀰间昲交点的经度值为:
L = Ω − G A S T = Ω t o e − G A S T week + Ω ˙ ( t − t o e ) − ω e t Ω 0 = Ω t o e − G A S T week \begin{gathered} L=\Omega-\mathrm{GAST}=\Omega_{t_{o e}}-\mathrm{GAST}_{\text {week }}+\dot{\Omega}\left(t-t_{o e}\right)-\omega_e t \\ \Omega_0=\Omega_{t_{o e}}-\mathrm{GAST}_{\text {week }} \end{gathered} L=Ω−GAST=Ωtoe−GASTweek +Ω˙(t−toe)−ωetΩ0=Ωtoe−GASTweek
则有:
L = Ω 0 + Ω ˙ ( t − t o e ) − ω e t = Ω 0 + ( Ω ˙ − ω e ) t − Ω ˙ ⋅ t o e L=\Omega_0+\dot{\Omega}\left(t-t_{o e}\right)-\omega_e t=\Omega_0+\left(\dot{\Omega}-\omega_e\right) t-\dot{\Omega} \cdot t_{o e} L=Ω0+Ω˙(t−toe)−ωet=Ω0+(Ω˙−ωe)t−Ω˙⋅toe
注意: 广播星历中给出的并不是参考时刻 t o e t_{o e} toe 的升交点赤经 Ω t e c \Omega_{t_{e c}} Ωtec, 而是该值与本周起始时 刻的格林尼治恒星时 G A S T w e c k \mathrm{GAST}_{\mathrm{weck}} GASTweck 之差。
已知升交点的大地经度 L L L 以及轨道平面的倾角 i i i 后, 就可通过两次旋转方便地求得卫 星在地固坐标系中的位置:
( X Y Z ) = R Z ( − L ) R X ( − i ) ( x y 0 ) = ( x cos L − y cos i sin L x sin L + y cos i cos L y sin i ) \left(\begin{array}{l} X \\ Y \\ Z \end{array}\right)=\boldsymbol{R}_Z(-L) \boldsymbol{R}_X(-i)\left(\begin{array}{l} x \\ y \\ 0 \end{array}\right)=\left(\begin{array}{c} x \cos L-y \cos i \sin L \\ x \sin L+y \cos i \cos L \\ y \sin i \end{array}\right) ⎝ ⎛XYZ⎠ ⎞=RZ(−L)RX(−i)⎝ ⎛xy0⎠ ⎞=⎝ ⎛xcosL−ycosisinLxsinL+ycosicosLysini⎠ ⎞
观测瞬间卫星在协议地球坐标系中的位置为:
( x y z ) = R Y ( − x p ) R x ( − y p ) ⋅ ( X Y Z ) = ( 1 0 x p 0 1 − y p − x p y p 1 ) ⋅ ( X Y Z ) \begin{aligned} \left(\begin{array}{l} x \\ y \\ z \end{array}\right) &=\boldsymbol{R}_Y\left(-x_p\right) \boldsymbol{R}_x\left(-y_p\right) \cdot\left(\begin{array}{l} X \\ Y \\ Z \end{array}\right) \\ &=\left(\begin{array}{ccc} 1 & 0 & x_p \\ 0 & 1 & -y_p \\ -x_p & y_p & 1 \end{array}\right) \cdot\left(\begin{array}{l} X \\ Y \\ Z \end{array}\right) \end{aligned} ⎝ ⎛xyz⎠ ⎞=RY(−xp)Rx(−yp)⋅⎝ ⎛XYZ⎠ ⎞=⎝ ⎛10−xp01ypxp−yp1⎠ ⎞⋅⎝ ⎛XYZ⎠ ⎞
在 GPS 定位中, 常常需要多次计算卫星的位置和速度, 如用上述方法计算需占用较多的内存和计算时间。为此, 常将卫星星历用一个时间多项式来表示, 在内存中仅保存该多项式的系数, 供计算时调用。在各种多项式中, 切比雪夫多项式的拟合效果最佳, 即使在该时 间段的两端近似性也很好。用 n n n 阶切比雪夫多项式来逼近时间段 [ t 0 , t 0 + Δ t ] \left[t_0, t_0+\Delta t\right] [t0,t0+Δt] 中的卫星星历时, 先将变量 t ∈ [ t 0 , t 0 + Δ t ] t \in\left[t_0, t_0+\Delta t\right] t∈[t0,t0+Δt] 变换为变量 τ ∈ [ − 1 , 1 ] : \tau \in[-1,1]: τ∈[−1,1]:
τ = 2 Δ t ( t − t 0 ) − 1 \tau=\frac{2}{\Delta t}\left(t-t_0\right)-1 τ=Δt2(t−t0)−1
于是卫星坐标可表示为:
X ( t ) = ∑ i = 0 n C x i T i ( t ) X(t)=\sum_{i=0}^n C_{x_i} T_i(t) X(t)=i=0∑nCxiTi(t)
式中, n n n 为多项式的阶数; C x i C_{x_i} Cxi 为切比雪夫多项式的系数。根据已知的卫星坐标, 用最小二乘 法拟合出多项式系数 C x i C_{x_i} Cxi, 就可用式(3-27) 计算出该时段中任一时刻的卫星位置。切比雪 夫多项式 T i T_i Ti 的递推公式如下:
T 0 ( τ ) = 1 T_0(\tau)=1 T0(τ)=1
T 1 ( τ ) = τ T n ( τ ) = 2 τ T n − 1 ( τ ) − T n − 2 ( τ ) , ∣ τ ∣ ⩽ 1 , n ⩾ 2 \begin{aligned} &T_1(\tau)=\tau \\ &T_n(\tau)=2 \tau T_{n-1}(\tau)-T_{n-2}(\tau),|\tau| \leqslant 1, n \geqslant 2 \end{aligned} T1(τ)=τTn(τ)=2τTn−1(τ)−Tn−2(τ),∣τ∣⩽1,n⩾2
精密星历是按一定的时间间隔 (通常为 15 m i n 15 \mathrm{~min} 15 min ) 来给出卫星在空间的三维坐标、三维运 动速度及卫星钟改正数等信息。著名的 IGS 综合精密星历需 1 ∼ 2 1 \sim 2 1∼2 周后才能获得。由 NGS 提出的格式被广泛采用,其中 ASCII 格式的 SP1 和二进制格式的 ECF1 格式不仅给出了卫 星的三维位置信息 ( k m ) (\mathrm{km}) (km), 也给出了卫星的三维运动速度信息 ( k m / s ) (\mathrm{km} / \mathrm{s}) (km/s) 。而 SP2(ASCII 格式) 和 ECF2 (二进制格式) 则仅给出了卫星三维位置信息。速度信息需通过位置信息用数值微 分的方法来求出。采用这种格式时存储量可减少一半左右。在 SP3(ASCII 格式) 和 ECF3 (二进制格式) 中增加了卫星钟的改正数信息。
观测瞬间的卫星位置及运动速度可采用内揷法求得。其中拉格朗日 (Lagrange) 多项式 内揷法被广泛采用, 因为这种内揷法速度快且易于编程。拉格朗日揷值公式十分简单: 已知 函数 y = f ( x ) y=f(x) y=f(x) 的 n + 1 n+1 n+1 个节点 x 0 , x 1 , x 2 , ⋯ , x n x_0, x_1, x_2, \cdots, x_n x0,x1,x2,⋯,xn 及其对应的函数值 y 0 , y 1 , y 2 , ⋯ , y n y_0, y_1, y_2, \cdots, y_n y0,y1,y2,⋯,yn, 对揷值区 间内任一点 x x x, 可用下面的拉格朗日揷值多项式来计算函数值:
f ( x ) = ∑ k = 0 n ∏ i = 0 , i ≠ k n ( x − x i x k − x i ) y k f(x)=\sum_{k=0}^n \prod_{i=0, i \neq k}^n\left(\frac{x-x_i}{x_k-x_i}\right) y_k f(x)=k=0∑ni=0,i=k∏n(xk−xix−xi)yk
Remondi 的研究表明, 对 GPS 卫星而言, 如果要精确至 1 0 − 8 10^{-8} 10−8, 用 30 m i n 30 \mathrm{~min} 30 min 的历元间隔和 9 阶内插已足够保证精度。