【MG-APP】处理BDS第3代数据

2024-03-25 11:30
文章标签 数据 app 处理 mg bds

本文主要是介绍【MG-APP】处理BDS第3代数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考链接:

MG-APP开源软件https://github.com/XiaoGongWei/MG_APP

1、https://github.com/XiaoGongWei/MG_APP/issues/17
2、 不迷途导航程序员
3、北斗卫星导航系统
4、http://mgex.igs.org/IGS_MGEX_Status_BDS.php
5、北斗PCO&PCV

1、首先需要下载最新的atx文件igs14.atx(ftp://ftp.igs.org/pub/station/general/igs14.atx),与BDS-III数据O文件放在同一个文件夹。
2、看了一下采集的数据,2I6I频点数据较多,BDS-III竟然没有7I,数据如下:
观测类型:C1X C2I C5X C6I C7I C7Z

BDS
3、将MG-APP代码处理BDS优先级2->7->6更改成2->6->7,更改后的代码如下:
BDS_type
4、注意你的sp3clk文件也要有BDS-III的产品才可以定位,要不然BDS-III卫星没有轨道和钟差还会剔除了。
然后调试QPPPModel::Run函数的循环,看看能不能定位。下面是使用BDS-II和BDS-III的联合定位结果有问题可以在这里提交

ULAB测站单BDS数据处理结果

使用MG-APP软件使用消电离层组合处理了单BDS数据(BDS2+BDS3,ULAB00MNG_R_20200620000_01D_30S_MO.20o)结果直接用图像展示:
GBM0MGX产品下载:ftp://ftp.gfz-potsdam.de/GNSS/products/mgex/2095

在这里插入图片描述仿动态结果:
在这里插入图片描述

静态结果:
在这里插入图片描述消电离层组合载波和伪距残差:
在这里插入图片描述

每个历元用到的卫星(有些卫星剔除了,观测值不是同时有B2I和B6I,质量原因等)、伪距和载波残差,如下图:
在这里插入图片描述

MG-APP将BDS3当做新系统来处理思路

MG-APP代码中增加新系统,需要修改的函数:
说明:代码滤波前把BDS3标识符改成D,滤波后把D还原成C:
因此,QPPPModel中滤波要考虑一下。

步骤1、
bool QPPPModel::setSatlitSys里面:
m_KalmanClass.setSatlitSys(SystemStr + “D”);
m_SRIFAlgorithm.setSatlitSys(SystemStr + “D”);

步骤2、
void QPPPModel::Run

// store spp position
spp_vct[0] = spp_pos[0]; spp_vct[1] = spp_pos[1]; spp_vct[2] = spp_pos[2];
if (!m_Solver_Method.compare(“SRIF”, Qt::CaseInsensitive))
is_filter_good = m_SRIFAlgorithm.SRIFforStatic(prevEpochSatlitData,epochResultSatlitData,spp_pos,X,P);
else
is_filter_good = m_KalmanClass.KalmanforStatic(prevEpochSatlitData,epochResultSatlitData,spp_pos,X,P);
代码滤波前把BDS3标识符改成D,滤波后把D还原成C:
步骤3、

void QPPPModel::saveResult2Class
要判断是否有BDS3,如果有那么
//Stores the receiver skew of the first system, and the relative offset of its other systems GCRE
for(int i = 0;i < m_sys_str.length();i++)
{
switch (m_sys_str.at(i).toLatin1()) {
case ‘G’:
epochRecClock.clockData[0] = X(4+i);
break;
case ‘C’:
epochRecClock.clockData[1] = X(4+i);
break;
case ‘R’:
epochRecClock.clockData[2] = X(4+i);
break;
case ‘E’:
epochRecClock.clockData[3] = X(4+i);
break;
default:
break;
}
}

保存钟差要考虑
步骤4、
最后写钟差文件bool QWrite2File::writeClockZTDW2Txt要考虑

这篇关于【MG-APP】处理BDS第3代数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

SpringBoot操作spark处理hdfs文件的操作方法

《SpringBoot操作spark处理hdfs文件的操作方法》本文介绍了如何使用SpringBoot操作Spark处理HDFS文件,包括导入依赖、配置Spark信息、编写Controller和Ser... 目录SpringBoot操作spark处理hdfs文件1、导入依赖2、配置spark信息3、cont

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

Mybatis拦截器如何实现数据权限过滤

《Mybatis拦截器如何实现数据权限过滤》本文介绍了MyBatis拦截器的使用,通过实现Interceptor接口对SQL进行处理,实现数据权限过滤功能,通过在本地线程变量中存储数据权限相关信息,并... 目录背景基础知识MyBATis 拦截器介绍代码实战总结背景现在的项目负责人去年年底离职,导致前期规