精密星历介绍与使用
文章目錄
- 精密星歷
- 精密星歷下載
- 精密星歷格式
- 簡單解讀
- rtklib 精密星歷應(yīng)用
- 插值處理
- Neville插值介紹
- 使用精密星歷解算與廣播星歷的對比
- 精密星歷解算結(jié)果
- 廣播星歷解算結(jié)果
精密星歷
SP3精密星歷格式,即The Extended Standard Product 3 Orbit Format.
精密星歷下載
點(diǎn)擊此處進(jìn)行精密星歷下載
以下圖片顯示的是下載2005-04-02的精密星歷,如此可下載這一天的精密星歷。
精密星歷格式
#cP2009 4 1 0 0 0.00000000 96 ORBIT IGS05 BHN ESOC European Space Operations Centre ## 1525 259200.00000000 900.00000000 54922 0.0000000000000 + 48 G32G24G25G26G27G30G03G04G06G08G09G10G14G13G28G21G11 + G22G20G18G16G19G23G02G31G17G12G15G29G07R04R06R07R10 + R11R13R14R15R17R19R20R23R18R21R22R03R02R08 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ++ 5 5 6 5 5 6 5 5 5 5 5 5 5 5 5 5 5 ++ 5 5 5 6 5 5 5 5 5 5 5 5 5 7 8 6 6 ++ 6 7 7 7 7 6 6 7 7 7 7 7 6 7 0 0 0 ++ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ++ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 %c M cc GPS ccc cccc cccc cccc cccc ccccc ccccc ccccc ccccc %c cc cc ccc ccc cccc cccc cccc cccc ccccc ccccc ccccc ccccc %f 0.0000000 0.000000000 0.00000000000 0.000000000000000 %f 0.0000000 0.000000000 0.00000000000 0.000000000000000 %i 0 0 0 0 0 0 0 0 0 %i 0 0 0 0 0 0 0 0 0 /* CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC /* CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC /* CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC /* PCV:IGS05_1461 OL/AL:FES2004 NONE YN ORB:CoN CLK:CoN * 2009 4 1 0 0 0.00000000 PG32 -8588.723867 -20090.643282 15669.151907 280.381686 PG24 22871.271694 12675.543847 -3627.944084 177.697220 ... (此處省略若干行) PR08 5808.861773 17946.260291 -17172.857334 -102.035201 * 2009 4 1 0 15 0.00000000 PG32 -8297.565626 -21671.755580 13538.952491 280.377529 PG24 22933.972419 13075.825862 -790.871026 177.700812簡單解讀
#cP2009 4 1 0 0 0.00000000 96 ORBIT IGS05 BHN ESOC-
#c, 版本
-
P, Pos/Vel 標(biāo)志位
-
2009 4 1 0 0 0.00000000, 精密星歷開始的年-月-日-時(shí)-分-秒
-
96, 歷元數(shù)
-
IGS05
http://acc.igs.org/igs-frames.html -
ESOC, European Space Operations Centre
- 1525, GPS周
- 259200.00000000, GPS周內(nèi)秒
- 900.00000000,歷元間隔 此處為900秒,15分鐘
- 54922,儒略日
- 48, 衛(wèi)星數(shù)
- G32…R08, 衛(wèi)星編號
更多SP格式說明點(diǎn)擊此處
rtklib 精密星歷應(yīng)用
rtklib支持精密星歷的使用,從下邊的代碼可以看到,我們可以通過指定星歷使用參數(shù)EPHOPT_PREC,這樣在進(jìn)行衛(wèi)星位置的解算時(shí),使用的就是精密星歷了。
extern int satpos(gtime_t time, gtime_t teph, int sat, int ephopt,const nav_t *nav, double *rs, double *dts, double *var,int *svh) {trace(4,"satpos : time=%s sat=%2d ephopt=%d\n",time_str(time,3),sat,ephopt);*svh=0;switch (ephopt) {case EPHOPT_BRDC : return ephpos (time,teph,sat,nav,-1,rs,dts,var,svh);case EPHOPT_SBAS : return satpos_sbas(time,teph,sat,nav, rs,dts,var,svh);case EPHOPT_SSRAPC: return satpos_ssr (time,teph,sat,nav, 0,rs,dts,var,svh);case EPHOPT_SSRCOM: return satpos_ssr (time,teph,sat,nav, 1,rs,dts,var,svh);case EPHOPT_PREC :if (!peph2pos(time,sat,nav,1,rs,dts,var)) break; else return 1;}*svh=-1;return 0; }如果我們直接使用rtklib編譯好的可執(zhí)行文件進(jìn)行數(shù)據(jù)處理,那么在option里設(shè)置一下精密星歷就好了。
插值處理
精密星歷播發(fā)的間隔為15分鐘,因此實(shí)際應(yīng)用中需要進(jìn)行插值處理。rtklib中使用的是Neville 插值方法。
/* polynomial interpolation by Neville's algorithm ---------------------------*/ static double interppol(const double *x, double *y, int n) {int i,j;for (j=1;j<n;j++) {for (i=0;i<n-j;i++) {y[i]=(x[i+j]*y[i]-x[i]*y[i+1])/(x[i+j]-x[i]);}}return y[0]; }Neville插值介紹
了解內(nèi)維爾插值的直接跳過
內(nèi)維爾插值可能不像牛頓和拉格朗日插值那么廣為人知,所以這里順便簡單介紹一下。內(nèi)維爾插值是一種由兩個(gè)n-1次插值多項(xiàng)式構(gòu)造一個(gè)n次多項(xiàng)式的線性逐次插值方法。什么是線性逐次插值呢?我們以五個(gè)點(diǎn)舉個(gè)例子。
首先,使用所有pip_ipi?和pi+1p_{i+1}pi+1?,如p0p_0p0?和p1p_1p1?進(jìn)行線性插值,我們得到了四個(gè)一階多項(xiàng)式。然后使用四個(gè)得到的一階多項(xiàng)式進(jìn)行線性插值可以得到三個(gè)二階多項(xiàng)式,一直這么進(jìn)行下去,得到一個(gè)四階多項(xiàng)式,這個(gè)四階多項(xiàng)式是通過這五個(gè)點(diǎn)的。
若是還是感覺有點(diǎn)兒抽象,可直接看下邊的例子。對三個(gè)點(diǎn)(-1,0)(0,1)(1,0)進(jìn)行2階內(nèi)維爾插值,結(jié)果如下。
使用精密星歷解算與廣播星歷的對比
精密星歷解算結(jié)果
廣播星歷解算結(jié)果
總結(jié)
- 上一篇: 前端学习(2363):数据缓存
- 下一篇: “约见”面试官系列之常见面试题之第六十七