使用关键词替换(Keyword Replacement)进行RTKLIB RTKPOST批处理
一、可执行程序中的实现
使用RTKPOST GUI进行后处理定位时,输入文件框数量较少,仅可满足单个测站单个时间段的解算。RTKLIB提供了关键词替换(Keyword Replacement)这一方法进行数据的批量处理。
点击观测值路径框上方的 “?” 即可呼出可用关键词帮助,如下:
下面,给出一个多测站RTK解算示例:
处理文件:基站观测文件:hklm0010.20o 流动站观测文件:hkqt0010.20o hkst0010.20o hkst0010.20o hktk0010.20o 导航文件:brdm0010.20p
观测文件来源:香港CORS站数据:
ftp://ftp.geodetic.gov.hk/rinex3
输入文件中,将流动站的测站名替代为 %r ,输出的pos文件同样。
点击Options,除了常规的解算配置外,还需进行测站列表的输入。
点击Misc,在Rovers处输入需要处理的站点名。同样地,Base Stations即为输入多基站列表的位置。
点击进行处理,状态显示中会多出现一个代表 %r 的处理信息。
处理得到的文件:
其他时间相关关键词操作更为简便,无需进行测站列表的添加。
二、程序源代码中的实现
程序命令参数的输入与GUI中需保持一致,将GUI中的设置进行保存,得到batch.conf文件。则最终的输出参数为:-k batch.conf %r0010.20o hklm0010.20o brdm0010.20p -o %r0010.20o.pos
由于conf文件中并没有测站列表的相关配置,因此需要进行一定的代码修改。可以发现最外层的处理函数postpos中的参数rov和base即为测站列表参数。
转到main函数中的输入部分,我们发现此处原始输入为均为 “”, 因此,对此处进行修改。添加Rovers和Base两个字符串作为测站列表输入。
配置完成,可以进行处理:
进一步阅读源代码可以发现,对 **%b **和 %r 这两个测站列表参数进行处理的函数均为较外层的嵌套函数 execses_b 和 execses_r 。其中对 %b 和 %r 的判断即为关键词替代的实现。
PS:不得不感叹RTKLIB程序设计之精妙,以前作为初学者看这种多层的嵌套感觉很繁琐,一层套一层,现在看来确实是十分巧妙的处理。
三、引申关键词(*)
在进行DCB文件读取时,有一个类似的关键词替代操作,常规情况下只能选择单个DCB文件。
当我们需要读取P1C1、P2C2、P1P2多个DCB文件时,可以采用 ***** 进行代替,代表多个文件读取。
对应代码中的实现:
expath:通过 * 实现文件路径扩展
引用该函数的文件读取函数的有:
readdcb() DCB文件
readrnxt() 观测与导航文件
readrnxc() 钟差文件
readsp3() 精密星历文件
sbsreadmsgt() SBAS信息