
RTKLIB源码之单点定位相对定位后处理简化版—第一版.doc
21页RTKLIB源码之单点定位相对定位后处理简化版—第⼀版将RTKLIB读取Rinex数据部分进⾏简化,同时,去掉与SPP/RTK⽆关的代码;在实现时,只需要在main函数中,输⼊压缩/不压缩的Rinex观测⽂件、导航⽂件,即可实现SPP/RTK功能;简化后的代码框架如下:⼀、相对定位 /RTK处理流程:1、读取移动站观测⽂件: rcv=13 readobsnav: ts=2019/04/01 00:00:00 n=33 readrnxt: file=E:\专业资料\⽹友交流\Curtin GNSS Research Centre\CUT00\CUT000AUS_R_20190910000_01D_30S_MO.rnx rcv=13 expath : path=E:\ 专业资料\⽹友交流\Curtin GNSS Research Centre\CUT00\CUT000AUS_R_20190910000_01D_30S_MO.rnx nmax=10243 readrnxfile: file=E:\专业资料\⽹友交流\Curtin GNSS Research Centre\CUT00\CUT000AUS_R_20190910000_01D_30S_MO.rnx flag=0 index=13 rtk_uncompress: file=E:\ 专业资料\⽹友交流\Curtin GNSS Research Centre\CUT00\CUT000AUS_R_20190910000_01D_30S_MO.rnx3 rtk_uncompress: stat=03 readrnxfp: flag=0 index=13 readrnxh:4 decode_obsh: ver=3.03进⼊readonsnav函数,读取观测⽂件,rcv=1;将⽂件路径替换/expath,读取观测⽂件;初始化移动站/sta参数,如果输⼊路径是压缩类型,则解压路径;进⼊readrnxfp函数,在这⾥⾯读取观测⽂件,包括⽂件头和数据记录:3 readrnxfp: flag=0 index=13 readrnxh:4 decode_obsh: ver=3.03读取观测⽂件,⽂件头循环:n⾏内容4 readrnxobs: rcv=1 ver=3.03 tsys=16517496针对,某⼀频率多个信号,还要对优先级低的信号抛弃;4 decode_obsepoch: ver=3.034 decode_obsepoch: time=2019/04/01 00:00:00.000 flag=0读取观测⽂件,数据记录:读取⽂件头,对应输出 decode_obsh: ver=3.03;循环读取数据记录,对应输出 4 readrnxobs: rcv=1 ver=3.03 tsys=16517496读取数据记录时,根据RTKLIB MANUAL中每个导航系统中对应的某频点的观测数据优先级原则,每个频点只保留⼀个有效数据,多余的进⾏抛弃;2、读取基准站观测⽂件: rcv=23 readrnxt: file=E:\专业资料\⽹友交流\Curtin GNSS Research Centre\CUTA0\CUAI00AUS_R_20190910000_01D_30S_MO.rnx rcv=23 expath : path=E:\ 专业资料\⽹友交流\Curtin GNSS Research Centre\CUTA0\CUAI00AUS_R_20190910000_01D_30S_MO.rnx nmax=10243 expath : file=E:\专业资料\⽹友交流\Curtin GNSS Research Centre\CUTA0\CUAI00AUS_R_20190910000_01D_30S_MO.rnx3 readrnxfile: file=E:\专业资料\⽹友交流\Curtin GNSS Research Centre\CUTA0\CUAI00AUS_R_20190910000_01D_30S_MO.rnx flag=0 index=23 rtk_uncompress: file=E:\ 专业资料\⽹友交流\Curtin GNSS Research Centre\CUTA0\CUAI00AUS_R_20190910000_01D_30S_MO.rnx3 rtk_uncompress: stat=03 readrnxfp: flag=0 index=23 readrnxh:4 decode_obsh: ver=3.03读取观测⽂件,⽂件头循环:n⾏内容针对,某⼀频率多个信号,还要对优先级低的信号抛弃;4 decode_obsepoch: ver=3.034 decode_obsepoch: time=2019/04/01 00:00:00.000 flag=0读取观测⽂件,数据记录:读取顺序和步骤,与移动站观测数据⼀致;3、读取导航⽂件: rcv=33 readrnxt: file=E:\专业资料\⽹友交流\Curtin GNSS Research Centre\CUT00\CUT000AUS_R_20190910000_01D_MN.rnx rcv=33 expath : path=E:\ 专业资料\⽹友交流\Curtin GNSS Research Centre\CUT00\CUT000AUS_R_20190910000_01D_MN.rnx nmax=10243 expath : file=E:\专业资料\⽹友交流\Curtin GNSS Research Centre\CUT00\CUT000AUS_R_20190910000_01D_MN.rnx3 readrnxfile: file=E:\专业资料\⽹友交流\Curtin GNSS Research Centre\CUT00\CUT000AUS_R_20190910000_01D_MN.rnx flag=0 index=33 rtk_uncompress: file=E:\ 专业资料\⽹友交流\Curtin GNSS Research Centre\CUT00\CUT000AUS_R_20190910000_01D_MN.rnx3 rtk_uncompress: stat=03 readrnxfp: flag=0 index=33 readrnxh:4 decode_navh:读取导航电⽂和观测数据区别有两个:sta=NULL;读取导航电⽂时,进⼊对应的导航电⽂读取函数;4、观测、导航数据预处理3 sortobs: nobs=95863 uniqnav: neph=2127 ngeph=455 nseph=03 uniqeph: n=21274 uniqeph: n=20593 uniqgeph: ng=4554 uniqgeph: ng=4553 uniqseph: ns=0完成观测⽂件、导航⽂件读取后,对观测数据和导航电⽂进⾏排序;5、读取卫星、接收机天线参数此部分参数由输⼊的天线⽂件得到,在简化版本或RTK定位中,⼀般不输⼊卫星和接收机的天线⽂件,因此,此部分可以不⽤考虑。
如果没有输⼊⽂件,那么函数运⾏后的输出为;3 searchpcv: sat= 1 type=3 no satellite antenna pcv: G013 searchpcv: sat= 2 type=3 no satellite antenna pcv: G02⽐如,设置G导航系统为:GPS;则按照prn号,输出卫星参数……循环3 searchpcv: sat=32 type=3 no satellite antenna pcv: G323 searchpcv: sat= 0 type=2 no receiver antenna pcv:3 searchpcv: sat= 0 type=2 no receiver antenna pcv:最后两个分别为:移动站、基准站接收机天线参数;6、获取基准站坐标根据设置中,基准站坐标的获取⽅式,选择对应的函数;⽐如,此例中,选择通过Rinex⽂件头获取,则需要注意需要将pco、pcv进⾏转换后加到APPROX POSITION XYZ中2364337.4414 4870285.6211 -3360809.6724 APPROX POSITION XYZ0.0000 0.0000 0.0000 ANTENNA: DELTA H/E/N7、新建⽇志流 /.trace⽂件rtkopenstat8、输出⽂件头到 .pos⽂件outhead% program : RTKLIB ver.2.4.3% inp file : E:\专业资料\⽹友交流\Curtin GNSS Research Centre\CUT00\CUT000AUS_R_20190910000_01D_30S_MO.rnx% inp file : E:\专业资料\⽹友交流\Curtin GNSS Research Centre\CUTA0\CUAI00AUS_R_20190910000_01D_30S_MO.rnx% inp file : E:\专业资料\⽹友交流\Curtin GNSS Research Centre\CUT00\CUT000AUS_R_20190910000_01D_MN.rnx% obs start : 2019/04/01 00:00:00.0 GPST (week2047 86400.0s)% obs end : 2019/04/01 01:00:00.0 GPST (week2047 90000.0s)% pos mode : kinematic% freqs : L1% solution : forward% elev mask : 15.0 deg% dynamics : off% tidecorr : off% ionos opt : broadcast% tropo opt : saastamoinen% ephemeris : broadcast% amb res : fix and hold% val thres : 3.0% antenna1 : ( 0.0000 0.0000 0.0000)% antenna2 : ( 0.0000 0.0000 0.0000)% ref pos :-32.003958382 115.894804118 22.7063%% (lat/lon/height=WGS84/ellipsoidal,Q=1:fix,2:float,3:sbas,4:dgps,5:single,6:ppp,ns=# of satellites)% GPST latitude(deg) longitude(deg) height(m) Q ns sdn(m) sde(m) sdu(m) sdne(m) sdeu(m) sdun(m) age(s) ratio vn(m/s) ve(m/s) vu(注意:输出信息流,先存储在缓冲区中,只有fclose(fp)时,才会将头信息写⼊.pos⽂件。
9、定位模式 /定位部分—转第⼆部分⽰例中,设置前向处理,Kinematic解算模式;则进⼊procpos函数进⾏处理10、释放导航电⽂、观测数据,程序结束freeobsnav(&obss,&navs);⼆、相对定位。





![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)






