使用编译版rtklib过程中如何进行main的调试(spp ppp)

使用编译版rtklib过程中如何进行main的调试(spp ppp)

在编译版rtklib的调试过程中,需要在main函数中定义一些参数。
在进行spp(伪距单点定位)的时候,我们通常这样设定相关参数。

// An highlighted block
  prcopt_t popt = prcopt_default;
    solopt_t sopt = solopt_default;
    filopt_t fopt = { "" };
    gtime_t ts = { 0 }, te = { 0 };
    double tint = 0.0;
    int n = 8;
    char *infile[] = {
        {"D:\\data\\2019182\\kat11820.19o"},
        {"D:\\data\\2019182\\gbm20600.clk"},
        {"D:\\data\\2019182\\gbm20600.sp3"},
        {"D:\\data\\2019182\\gbm20601.clk"},
        {"D:\\data\\2019182\\gbm20601.sp3"},
        {"D:\\data\\2019182\\gbm20602.clk"},
        {"D:\\data\\2019182\\gbm20602.sp3"},
        {"D:\\data\\2019182\\brdm1820.19p"}
    };
    char *outfile = { "D:\\data\\2019182\\kat1091820_spp.pos" };
    #if 1    /* SPP */
    popt.navsys = SYS_GPS;// GPS+GAL //SYS_ALL;
    popt.mode = PMODE_SINGLE;
    popt.sateph = EPHOPT_PREC;
    popt.elmin = 7 * D2R;
    popt.ionoopt = IONOOPT_BRDC;
    popt.ionoopt = IONOOPT_TEC;
  
    sopt.posf = SOLF_XYZ;
    sopt.times = TIMES_GPST;
    sopt.timef = 1;
    sopt.timeu = 3;
    #endif
    postpos(ts, te, tint, 0.0, &popt, &sopt, &fopt, infile, n, outfile, "", ""); 

在进行ppp(精密单点定位的时候,因为需要进行dcb(different code bias)改正、pcv改正等等,需要一些额外的文件 如图所示。在这里插入图片描述
那么,如何在编译版的main中进行设置以达到同rtkpost一样的结算结果呢?
我们从代码出发,rtklib通过postpos.c进行后处理

在这里插入图片描述
找到execses函数

/* execute processing session ------------------------------------------------*/
static int execses(gtime_t ts, gtime_t te, double ti, const prcopt_t *popt,
                   const solopt_t *sopt, const filopt_t *fopt, int flag,
                   char **infile, const int *index, int n, char *outfile)

我们便可以找到.blq .erp .dcb等文件的读取方式
在这里插入图片描述
以dcb为例,可以看到,代码中先对fopt->dcb是否为空进行判断,如果其为非空,则进行读取,因此我们可以fop为线索,通过vs中的调用层次结果功能进行查找,进而发现调用结构如下在这里插入图片描述pcv如下在这里插入图片描述

在这里插入图片描述
发现源头在main,可以直接通过 filopt_t fopt = { “” };进行设置

typedef struct {        /* file options type */
    char satantp[MAXSTRPATH]; /* satellite antenna parameters file */
    char rcvantp[MAXSTRPATH]; /* receiver antenna parameters file */
    char stapos [MAXSTRPATH]; /* station positions file */
    char geoid  [MAXSTRPATH]; /* external geoid data file */
    char iono   [MAXSTRPATH]; /* ionosphere data file */
    char dcb    [MAXSTRPATH]; /* dcb data file */
    char eop    [MAXSTRPATH]; /* eop data file */
    char blq    [MAXSTRPATH]; /* ocean tide loading blq file */
    char tempdir[MAXSTRPATH]; /* ftp/http temporaly directory */
    char geexe  [MAXSTRPATH]; /* google earth exec file */
    char solstat[MAXSTRPATH]; /* solution statistics file */
    char trace  [MAXSTRPATH]; /* debug trace file */
} filopt_t;

只需要设置在main中设置好文件路径即可
因此,修改后关于ppp的main函数如下

    prcopt_t popt = prcopt_default;
    solopt_t sopt = solopt_default;
    filopt_t fopt = { "" };
    gtime_t ts = { 0 }, te = { 0 };
    double tint = 0.0;
    int n = 8;
    char *infile[] = {
        {"D:\\data\\2019182\\kat11820.19o"},
        {"D:\\data\\2019182\\gbm20600.clk"},
        {"D:\\data\\2019182\\gbm20600.sp3"},
        {"D:\\data\\2019182\\gbm20601.clk"},
        {"D:\\data\\2019182\\gbm20601.sp3"},
        {"D:\\data\\2019182\\gbm20602.clk"},
        {"D:\\data\\2019182\\gbm20602.sp3"},
        {"D:\\data\\2019182\\brdm1820.19p"}
    };
    char *outfile = { "D:\\data\\2019182\\kat1091820_spp.pos" };
    popt.navsys = SYS_GPS;// GPS+GAL //SYS_ALL;
    popt.mode = PMODE_SINGLE;
    popt.sateph = EPHOPT_PREC;
    popt.elmin = 7 * D2R;
    popt.ionoopt = IONOOPT_TEC;
    popt.tropopt = TROPOPT_ZTD;
    
    sopt.posf = SOLF_XYZ;
    sopt.times = TIMES_GPST;
    sopt.timef = 1;
    sopt.timeu = 3;
    
   	strcpy(fopt.dcb, "D:\A正在处理\RTK数据\2019244\P1C11909.DCB");
    strcpy(fopt.eop, "D:\A正在处理\RTK数据\2019244\igs20697.erp");
    strcpy(fopt.blq, "D:\A正在处理\RTK数据\2019244\ocnload.blq");
    strcpy(fopt.satantp, "D:\A正在处理\RTK数据\2019244\igs14_gbm.atx");
    strcpy(fopt.rcvantp, "D:\A正在处理\RTK数据\2019244\igs14_gbm.atx");
    postpos(ts, te, tint, 0.0, &popt, &sopt, &fopt, infile, n, outfile, "", "");

关于调试后的结果对比,下次再写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值