【RTKLIB】使用RTKPOST控制台程序RNX2RTKP程序批量处理GNSS数据

RNX2RTK 使用

好久没有写博客,勤奋努力学习的人才能成功,只是写论文不如让我写博客。
昨天老师给分配一个用RTKlib批量处理数据的任务,我的第一个想法就是想到了CUI来处理。

RNX2RTK介绍

RTKlib包含了5个CUI程序,这些控制台程序都是只需要简单标准的c库都能运行,能够跨平台运行,其中就有我们需要的CUI——RNX2RTKP,这是后处理程序是RTKPOST的控制台版本。

RNX2RTKP编译

编译RNX2RTP的方法有两种,说明书只说了这两种,其中 C++ Builder XE2 or XE3去编译,第二种就是用GCC编译makefile。
我用的是第二种,因为第一种还得装C++ Builder,而且必须c盘留很大空间才能装的上(听说40G),装这个真是槽点满满,希望这些C++ Builder工程师不要怼我,我是非专业的。第二种就太爽了,不用装编译器,直接使用ubuntu就搞定了。
环境:ubuntu 18.04 rtklib:2.3.4 b29

1.第一步安装gfortran

这里编译rnx2rtkp程序需要ierf.a库,需要在/lib/iers/gcc进行编译,之前需要安装gfortran

sudo apt-get install gfortran 
cd ./lib/iers/gcc
make

2.编译RNX2RTKP

cd app/rnx2rtkp/gcc
make
make install

make成功之后,能在文件夹下看到rnx2rtkp文件,make install 只是将rnx2rtkp添加到系统路径中去了。

编写批处理程序

程序执行格式

rnx2rtkp -k configFile rover.o base.o navFile.nav -o out.pos

configFile是配置文件,里面包含了使用哪种系统,高度角,滤波等等处理参数,与rtkpost的option里面的配置是一样,本次使用的配置文件就是讲rtkpost的option导出得到的。
语言:bash shell

#!/bin/bash

#文件 导航文件夹名为:NAVFILE navfile:brdm00x0.15p-brdm3650.15p
#     数据文件夹为:YuX,datafile:JX0sxxx0.15o
#     输出文件夹为:pos  outfile:JX0sxxx0.150.pos JX0sxxx0.150.pos.state
echo "处理程序开始,处理程序以Yu1作为基准站,Yu2,Yu3,Yu4作为流动站处理";
#ifile=1;#这是文件数文件为365个
ifolder=1;#这个文件夹数,共4个,3个流动站,1个基准站
while((ifolder<=3))
do
    ifile=1;
    echo "处理Yu$[${ifolder}+1]文件夹";
    while (("$ifile"<=365))
    do
        if ((${ifile} >= 10)) && ((${ifile}<100))
        then
            str=0;
        elif ((${ifile}<10))
        then
            str=00;
        else
            str="";

        fi

        #开始调用rnx2rtkp
        echo 读取导航文件;
        if (($ifolder==2))
        then
            ifolder_t=3;
            echo "处理文件JX0$[${ifolder_t}+1]${str}${ifile}0.15o文件";
            echo rnx2rtkp -k static.conf ./Yu$[${ifolder}+1]/JX0$[${ifolder_t}+1]${str}${ifile}0.15o ./Yu1/JX01${str}${ifile}0.15o ./NAVFILE/brdm${str}${ifile}0.15p -o ./pos/JX0$[${ifolder_t}+1]${str}${ifile}0.15o.pos
            rnx2rtkp -k static.conf ./Yu$[${ifolder}+1]/JX0$[${ifolder_t}+1]${str}${ifile}0.15o ./Yu1/JX01${str}${ifile}0.15o ./NAVFILE/brdm${str}${ifile}0.15p -o ./pos/JX0$[${ifolder_t}+1]${str}${ifile}0.15o.pos
        elif(($ifolder==3))
        then
            ifolder_t=13;
            echo "处理文件JX$[${ifolder_t}+1]${str}${ifile}0.15o文件";
            echo rnx2rtkp -k static.conf ./Yu$[${ifolder}+1]/JX$[${ifolder_t}+1]${str}${ifile}0.15o ./Yu1/JX01${str}${ifile}0.15o ./NAVFILE/brdm${str}${ifile}0.15p -o ./pos/JX$[${ifolder_t}+1]${str}${ifile}0.15o.pos
            rnx2rtkp -k static.conf ./Yu$[${ifolder}+1]/JX$[${ifolder_t}+1]${str}${ifile}0.15o ./Yu1/JX01${str}${ifile}0.15o ./NAVFILE/brdm${str}${ifile}0.15p -o ./pos/JX$[${ifolder_t}+1]${str}${ifile}0.15o.pos
        fi
        if(($ifolder!=3))
        then
        echo "处理文件JX0$[${ifolder}+1]${str}${ifile}0.15o文件";
        echo rnx2rtkp -k static.conf ./Yu$[${ifolder}+1]/JX0$[${ifolder}+1]${str}${ifile}0.15o ./Yu1/JX01${str}${ifile}0.15o ./NAVFILE/brdm${str}${ifile}0.15p -o ./pos/JX0$[${ifolder}+1]${str}${ifile}0.15o.pos
        rnx2rtkp -k static.conf ./Yu$[${ifolder}+1]/JX0$[${ifolder}+1]${str}${ifile}0.15o ./Yu1/JX01${str}${ifile}0.15o ./NAVFILE/brdm${str}${ifile}0.15p -o ./pos/JX0$[${ifolder}+1]${str}${ifile}0.15o.pos
        fi
        let ifile++;
    done
    let ifolder++;
done
echo ok

在处理时发现,测站的名称居然不是规律的,导致使用了很多if。最后处理完了四个站一年365天的数据。

你可能感兴趣的:(RTKlib使用笔记,rtklib,rnx2rtkp,rtklib批处理GNSS)