【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

相关文章

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读