常州武进网站建设,怎么申请微信公众平台账号,水果零售电子商务网站综合评价与建设研究,设计一个个人网站的具体步骤概述
因为工作原因需要使用rtklib处理北斗三代(B1C/B2a)的数据#xff0c;不多说废话#xff0c;直接上代码
代码修改
因为rtklib抽象后的eph_t结构已经支持北斗三代#xff0c;通过eph_t结构体的code字段判断星历来源#xff0c;在计算卫星位置的时候#xff0c;在eph…概述
因为工作原因需要使用rtklib处理北斗三代(B1C/B2a)的数据不多说废话直接上代码
代码修改
因为rtklib抽象后的eph_t结构已经支持北斗三代通过eph_t结构体的code字段判断星历来源在计算卫星位置的时候在ephemeris.c文件作如下修改
/* broadcast ephemeris to satellite position and clock bias --------------------
* compute satellite position and clock bias with broadcast ephemeris (gps,
* galileo, qzss)
* args : gtime_t time I time (gpst)
* eph_t *eph I broadcast ephemeris
* double *rs O satellite position (ecef) {x,y,z} (m)
* double *dts O satellite clock bias (s)
* double *var O satellite position and clock variance (m^2)
* return : none
* notes : see ref [1],[7],[8]
* satellite clock includes relativity correction without code bias
* (tgd or bgd)
*-----------------------------------------------------------------------------*/
extern void eph2pos(gtime_t time, const eph_t *eph, double *rs, double *dts,double *var)
{double tk,M,E,Ek,sinE,cosE,u,r,i,O,sin2u,cos2u,x,y,sinO,cosO,cosi,mu,omge;double xg,yg,zg,sino,coso;int n,sys,prn;double A,A0,deltNa,Na,N0;trace(4,eph2pos : time%s sat%2d\n,time_str(time,3),eph-sat);tktimediff(time,eph-toe);switch ((syssatsys(eph-sat,prn))) {case SYS_GAL: muMU_GAL; omgeOMGE_GAL; break;case SYS_CMP: muMU_CMP; omgeOMGE_CMP; break;default: muMU_GPS; omgeOMGE; break;}if(sysSYS_CMP(eph-code 7||eph-code9))//data source (0:unknown,1:B1I,2:B1Q,3:B2I,4:B2Q,5:B3I,6:B3Q,7:B1Cd,8:B1Cp,9:B2ad,10:B2ap) */{A0 eph-A;A A0 eph-Adot*tk;N0 sqrt(mu/(A0*A0*A0));deltNa eph-deln 0.5*eph-ndot*tk;Na N0 deltNa;M eph-M0 Na*tk;} else{A eph-A;Meph-M0(sqrt(mu/(eph-A*eph-A*eph-A))eph-deln)*tk;}for (n0,EM,Ek0.0;fabs(E-Ek)RTOL_KEPLERnMAX_ITER_KEPLER;n) {EkE; E-(E-eph-e*sin(E)-M)/(1.0-eph-e*cos(E));}if (nMAX_ITER_KEPLER) {trace(2,eph2pos: kepler iteration overflow sat%2d\n,eph-sat);return;}sinEsin(E); cosEcos(E);trace(4,kepler: sat%2d e%8.5f n%2d del%10.3e\n,eph-sat,eph-e,n,E-Ek);uatan2(sqrt(1.0-eph-e*eph-e)*sinE,cosE-eph-e)eph-omg;rA*(1.0-eph-e*cosE);ieph-i0eph-idot*tk;sin2usin(2.0*u); cos2ucos(2.0*u);ueph-cus*sin2ueph-cuc*cos2u;reph-crs*sin2ueph-crc*cos2u;ieph-cis*sin2ueph-cic*cos2u;xr*cos(u); yr*sin(u); cosicos(i);/* beidou geo satellite */if (sysSYS_CMP(prn5||prn59)) { /* ref [9] table 4-1 */Oeph-OMG0eph-OMGd*tk-omge*eph-toes;sinOsin(O); cosOcos(O);xgx*cosO-y*cosi*sinO;ygx*sinOy*cosi*cosO;zgy*sin(i);sinosin(omge*tk); cosocos(omge*tk);rs[0] xg*cosoyg*sino*COS_5zg*sino*SIN_5;rs[1]-xg*sinoyg*coso*COS_5zg*coso*SIN_5;rs[2]-yg*SIN_5zg*COS_5;}else {Oeph-OMG0(eph-OMGd-omge)*tk-omge*eph-toes;sinOsin(O); cosOcos(O);rs[0]x*cosO-y*cosi*sinO;rs[1]x*sinOy*cosi*cosO;rs[2]y*sin(i);}tktimediff(time,eph-toc);*dtseph-f0eph-f1*tkeph-f2*tk*tk;/* relativity correction */*dts-2.0*sqrt(mu*A)*eph-e*sinE/SQR(CLIGHT);/* position and clock error variance */*varvar_uraeph(sys,eph-sva);
}扩展测试
使用B1I的观测值和北斗三号的星历rtklib能正确解算出卫星位置。
参考链接
北斗B1C ICD文档 北斗B2a ICD文档