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

2023-10-04 16:50

本文主要是介绍使用编译版rtklib过程中如何进行main的调试(spp ppp),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

// An highlighted blockprcopt_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;#endifpostpos(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, "", "");

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

这篇关于使用编译版rtklib过程中如何进行main的调试(spp ppp)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/2349

相关文章

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】