VC++在GPS观测数据质量测试中的应用

(整期优先)网络出版时间:2022-08-23
/ 3

VC++在GPS观测数据质量测试中的应用

史雷磊

上海元易勘测设计有限公司 上海 200135

摘要:GPS的数据质量测试是影响GPS测量精度的主要因素之一,观测数据质量的准确性不仅可以保证GPS观测数据的可靠性,又能及时、有效的测试观测数据的质量,提高GPS精度,提高效率。本文基于数据质量控制过程的基本理论和公式,探索VC++的具体应用过程,分析算法的各个方面,对具体过程的质量和算法进行检验,研究检测质量的指标。

关键词:VC++  GPS 数据质量测试

VC++(visialC++)是微软公司开发的一个IDE,用于开发和调试C++代码的工具,是面向对象的可视化集成编程系统。作为一个可视化的软件开发工具,支持面向对象的设计方法,可以使用强大的微软基础类,开发软件稳定、便携、强大,是一个强大的工业自动化产品,VC++很容易应用于GPS技术。然而,卫星和接收机在时钟误差、大气传播延迟、多普勒效应等因素会导致GPS观测数据的误差,从而降低测量精度,需要对测量数据进行及时有效的质量控制,以保证数据的可靠性。

为了确保观测数据的质量,GPS观测数据检测质量通常通过软件检测,主要观测各种GPS数据和GPS相关产品(如IGS精确星表)进行格式转换、编辑、质量检查,利用VC++软件开发,应用于检测部分,大大提高了数据质量。

1. GPS卫星信号结构

每颗GPS卫星发射一个独特的导航信号,以电磁频谱的两个L波段频率为中心:1575.42MHz的L1和1227.60MHz的L2。卫星信号主要包括:两个波段的载波、测距码通过载波进行调制、导航消息。

1.1  L波段载波

载波提供了将测距码和导航信息传输到地球(从而传输给用户)的方法。测距码的主要功能是允许确定信号的传输时间(从卫星到接收机)。过境时间乘以电磁辐射速度(299792458米/秒)得到接收机-卫星的范围。导航信息根据两个载波频率进行调制,并包含卫星星历、卫星时钟参数和其他相关信息,如一般系统状态信息和电离层延迟模型,这是执行实时导航所必需的。

所有的信号分量都来自于一个高度稳定的原子钟的输出。在GPS系统中,每颗卫星都配备了两个铯和两个铷原子钟。时钟产生频率为f0=10.23MHz的纯正弦波,在一天的时间内稳定为1013的1部分,被称为基频。将基频乘以整数因子,分别得到两个微波L波段载波L1和L2。两波的频率如下:

等效波长:

等效波长:

这些是右手的圆偏振无线电频率波,能够在大气中远程传播,但它们不包含任何信息。所有卫星广播相同的频率(由于多普勒频移,接收到的频率略有不同)必须以某种方式进行修改或调制。在全球定位系统中,有两种不同的码用于调制L波段的载波,即测距码和导航信息。L1载波被设计为用两种代码调制,一种用于民用,另一种留给军用,而L2载波只用军事代码调制。

1.2  PRN测距代码

使用了两种测距代码:

C/A代码:“清除/访问”或“粗的/获取”代码(有时也被称为“S代码”)。

P代码:“私有”或“精确”代码,在反欺骗(AS)下被“Y”代码取代。

C/A和P(或Y)代码可以被认为是测量棒——它们提供了一个GPS接收器可以测量到卫星的单向距离的方法。这两种码都具有随机噪声的特征,但实际上是由数学算法生成的二进制码,因此被称为“伪随机噪声”(或PRN)码。

1.3 导航消息

为了使GPS获得实时位置,在两个L波段频率上传送导航信息,包含以下信息:预测卫星星历、预测的卫星时钟校正模型系数、GPS系统状态信息、GPS系统的电离层模型。

  1. GPS数据质量测试

GPS数据预处理对原始数据进行编辑、处理和整理,对各种具体信息文件进行进一步的调整计算准备。其中,格式转换可以是许多不同GPS接收器观测(二进制)文件转到RINEX文件,也可将RINEX文件转换不同的格式,编辑RINEX文件可以用来阻止部分前缀,数据也可以是任何切割和合并文件,删除观测类型,卫星系统和具体选择禁用卫星,质量检查数据可以反映GPS电离层延迟、多径效应、接收器周期滑移、卫星信号噪声等信息,并实现视觉效果。

目前,GPS数据质量测试常用TEQC软件包,TEQC是一款简单而强大的GPS数据预处理软件,主要包含数据格式转换、数据编辑和数据质量测试三种功能。

TEQCQC(质量控制数据)部分是检测GPS/GLONSS接收机静态和动态数据质量,基本原理是伪距和相关线性组合计算L1、L2,多路径效应、电离层影响、电离层延迟和接收机时钟漂移变化和周期滑移等,并归档两种形式的图形输出。MP1、MP2、O/slips的几个关键指标输出在结果文件S文件中。O/slips观测和循环滑移比直接反映数据周期滑移情况、MP1、MP2、L1、L2分别表示多路径效应对伪距和相位影响的综合指标。标准差RMS结果表示公式为:

其中P1、P2表示伪距观测值;φ1和φ2为相位观测值,L1和L2载波相位;

=/为载波频率;

通常,QC结果文件为输出观测周期,MP1、MP2均方(RMS)值,带有O/slips,这三个值都能更好地反映环境,观察观测数据的质量。

多路径检核原理:该模块是GPS/GLONASS的伪距和相位观测,是L1、L2多路径模式、电离层对L载体相位的影响、电离层延迟、L1、L2信噪声比、接收机时钟漂移和周期滑移等变化的线性组合。电离层延迟、多路径效应、接收机噪声影响数据质量的主要因素,最复杂的多路径效应:

其中:

其中P1、P2为双频伪距观测值;

L1、L2是一种双频载波相位观测值;

M1、M2是一个双频伪距多路径;

m1、m2为双波段多载流波相位观测多路径效应;

n1,n2是整数的模糊度;

f1,f2为频率;

λ1,λ2是波长。

整周的观测数据如果没有跳转,那么b1,b2是常数,m1,m2比m1,m2小得多。因此,Mp1,Mp2主要是伪范围多路径效应,可以用来衡量多路径效应的程度。

3.VC++编程应用程序和示例

3.1VC++程序应用

在Windows环境和可视化界面中,VC++汇编器只能显示质量检查数据文件绘制的各种质量图形,以及生成报告等统计数据。VC++平台软件开发根据数据质量的结果进一步处理,消除了低质量的数据,提高数据的可用性。

选择TEQC探讨软件工程,检查主模块中图形和表格的质量,通过相应的输出分析,为用户提供必要的信息并采取适当的预置;预处理模块涉及Rinex文件、编辑和数据过滤,通过消除不良记录以提高数据质量,格式转换模型将不同于原始生产数据或家庭接收器在各种Rinex文件之间切换。设计流程(图1)所示:

d1

图1  TEQC系统框架设计

系统数据流(图2)所示,初始输入数据文件和相应的双频观测导航文件,检查TEQC生成的数据检查文件质量,然后检查文件的统计和分析质量,结合用户选择各种输出需求的报告和图形。

d2

图2 TEQC数据流程图

实施代码:

Using shelIAPI function:

/ / Uses ShellAPl;

Hn, iSl'ANCE ShellExecute (

HWND hwnd, / / ​​window operation to fight sentence

LPCTSTR lpOperation, / / ​​Run

LPCTSTR IpFile, / / ​​file and path

LPCTSTR lpParameters, / / ​​parameter (general procedure No)

LPCTSTR IpDirectory, / / ​​default search path

INT. nShowCmd / / When the program is running the display

Call TEQC quality inspection command:

shellexecute (hwnd, "open", "D: \ teqc.exe", "+ qc",null, O);

关键代码:

Try

myProcess. StandardInput. WriteLine (strDosCmd)

Enter the command input pipe

Export Do

loop While File. Exists (strPath-Out) = False;

Cycle is completed to determine whether a file has been generated

myProcess. StandardInput. WriteLine ("exit") enter the command out of retirement

mvProcess. Close ()

Catch ex As Exception

If ex. Number = 57 Then GoTo Export error code is 57, that is, access error occurred while waiting to return to the input port

End Try

3.2 关键代码及接口设计

面向对象编程软件Visual C++完成接口设计,在MFC App向导任务完成下进行。

1)软件体系结构:流程主要由生成Rinex文件、数据读取、质量检查和质量评估结果显示四个部分组成。

2)菜单设计:基于软件体系结构分析的程序菜单项

3)步骤:首先将数据格式到Rinex;然后读取数据,进行编辑、数据编辑、质量检查;在质量检查完成时,可以报告分析菜单的数据质量。其中,数据质量检查是主要模块。该公式用于得到最终的界面设计过程。

C:\Users\Administrator\Desktop\图片1.png图片1

图4 设计界面

图5 数据质量测试

double f1  =    1575420000;    

double f2  =    1227600000;

CClientDC dc(this);

CPen pen1(PS_DASH,1,RGB(0,0,255));

dc.SelectObject(pen1);

CPen pen(PS_SOLID,1,RGB(0,0,255));

dc.SelectObject(&pen);

dc.MoveTo(165,330);

CFile rFile(m_strInputPathName,CFile::modeRead);

rFile.Seek(59,CFile::current);

char ch[20];

double Delta_N;

int epoch = 0;

double dAlfa = (f1*f1)/(f2*f2);

double MP1[500],MP2[500];

char L1[14],L2[15],P1[14],P2[14];

L1[13] = 0;P1[13] = 0;L2[14] = 0;P2[13] = 0;

while (rFile.GetPosition()+5 < rFile.GetLength())

{

epoch++;

rFile.Seek(5,CFile::current);

rFile.Read(P1,13);

rFile.Seek(2,CFile::current);

rFile.Read(P2,13);

rFile.Seek(2,CFile::current);

rFile.Read(L1,13);

rFile.Seek(2,CFile::current);

rFile.Read(L2,14);

MP1[epoch] = atof(P1)-(1+2/(dAlfa-1))*atof(L1)+(2/(dAlfa-1))*atof(L2);

MP2[epoch] = atof(P2)-(1+2*dAlfa/(dAlfa-1))*atof(L1)+(2*dAlfa/(dAlfa-1)-1)*atof(L2);

rFile.Seek(2,CFile::current);

}

dc.MoveTo(165,330);

double sum1 = 0,sum2 = 0;

for (int i=0;i<300;i++)

{

sum1 += MP1[i];

sum2 += MP2[i];

}

double average1,average2;

average1 = sum1/300;

average2 = sum2/300;

for (int i=0;i<300;i++)

{

dc.LineTo(165+3*i,330-60*(MP1[i]-average1));

dc.LineTo(165+3*i,330-60*(MP2[i]-average2));

}

rFile.Close();

上述步骤中,多周期滑移检测是一个复杂的过程,所以这里指的是一个循环滑移检测功能,因为它已经发生了测试循环滑移,这里不重复。以下是图表耗尽后的结果。

图7 检测结果

  1. 总结

VC++接口的软件可视化,预处理功能使用TEQC完全能够实现GPS观测数据的质量测试,良好的周期滑移检测和修复功能可以弥补长时间观察情况下观测数据的基线解决质量差的结果。尽管VC++平台软件开发良好,如TEQC。却仍然存在一些问题:首先,算法有局限性,其次,数据不能深层处理。虽然添加了用于数据转换、编辑和测试的VC++,但是仍难实现这一点。

本文研究的目的是深入探索VC++在GPS数据质量测试的具体应用过程,分析算法的各个方面,从相关公式和设计流程到VC++平台的实现,再进行实验数据检测,进而优化软件设计。

参考文献

【1】李征航,黄劲松. GPS 测量与数据处理[M]. 武汉: 武汉大学出版社, 2005

【2】吴北平.GPS网络RTK定位原理与数学模型研究[D].2003

【3】范士杰,郭际明,彭秀英.TEQC在GPS数据预处理中的应用与分析[J].测绘信息与工程.2004,(2).33-35