张显云,姚黔贵,张鹏飞,黄安信,张 俊
(1. 贵州大学 矿业学院,贵州 贵阳550025; 2. 贵州省非金属矿产资源综合利用重点实验室,贵州 贵阳 550003; 3. 贵州电力建设第二工程公司,贵州 贵阳 550002)
如何对GNSS原始观测值质量作出快速、准确的评价,继而剔除观测质量较差的数据,为基线向量的解算提供较为“干净”的数据源,成为高精度GNSS定位首先需解决的问题。TEQC可用于检核双频接收机的动态和静态数据质量,利用伪距观测值和载波相位观测值的线形组合来进行GNSS数据的误差估计,在快速评定GNSS数据质量方面有着非常大的优势:一方面速度快,没有繁琐的操作步骤,只用几条简单的命令即可;另一方面能对GNSS观测数据进行多角度全方位的质量分析,分别从卫星高度角、方位角、多路径效应、电离层延迟误差、电离层延迟变化率、信噪比等方面反映GNSS观测数据的质量,并可借助第三方软件(如QcView软件)对检核结果进行可视化表达[1-4]。然而,TEQC不具备可视性,交互性差,且可视化分析需借助第三方软件,这些均给实际操作带来不便。此外,TEQC不能禁用单颗卫星部分历元质量不高的观测值,只能禁用全部观测值,这对卫星数较少的情况极为不利。笔者以Visual C#为开发平台,采用Chart控件,开发可视化GNSS数据质量分析与预处理软件,实现对TEQC核心功能的可视化封装,并扩展禁用单颗卫星部分历元观测数据的功能。
TEQC能实现GNSS原始数据的格式转换、数据的质量检查与编辑等,鉴于大多数商用随机软件已具备格式转换的动能,本文主要以TEQC的数据编辑和质量检查功能为封装对象,开发基于TEQC的GNSS数据质量分析及预处理软件Chart-QC,其功能模块主要包括:GNSS原始数据质量检查、数据质量检查结果的可视化表达和GNSS数据编辑。限于篇幅,本文仅以多路径误差为例,来阐述软件的实现过程。
TEQC质量检查根据是否使用导航文件,分为qc2lite和qc2full两种检核方式。在缺省状态下,qc2lite方式会生成质量检核摘要文件、电离层延迟误差、电离层延迟变化率、L1和L2载波上P码伪距的多路径效应(包括接收机噪声)、L1和L2载波的信噪比。如使用了导航电文,则采用qc2full方式进行质量检查,它除生成qc2lite方式下的所有文件外,还将产生卫星和接收机天线的位置信息,以及方位角和高度角两个数据文件。
TEQC实质上是一个可执行文件(exe文件),通过设置不同的参数,在DOS环境下可完成TEQC的数据质量检查、数据编辑、单点定位等功能。Chart-QC软件则采用进程Process类调用TEQC命令,对TEQC功能进行封装,后台完成GNSS数据的检查,从而避免了中间诸多的步骤与设置。质量检查部分代码如下[5]
private void QCheck(string filename)
{
Process myprocess=new Process():∥定义进程Process类对象
string path=Application.Startup Path;
path=path.Remove(path.LastIndexOf("\"));
path=path.Remove(path.LastIndexOf("\"));
path=path+"\"+"teqe.exe";∥TEQC路径及TEQC命令
myprocess.StartInfo.filename=path;∥可执行程序文件名
myprocess.StartInfo.Argument="+qc"+""+filenme;∥TEQC参数设置
myprocess.StartInfo.CreateNoWindow=true;∥不显示DOS窗口
myprocess.StartInfo.UseShellExecute=false;∥不使用系统外壳程序启动
try
{
myprocess.Start();∥启动进程
myprocess.WaitForExit();∥等待检查执行结果
}
catch(Exception ex)
{
MessageBox.Show("执行失败,"+"失败的原因:"+ex.ToString());
}
finally
{
myprocess.Close();∥关闭进程
myprocess.Dispose;∥释放系统资源
}
}
代码中质量检查参数是按qc2lite方式进行设置的,经验证知:只要导航文件与观测值文件位于同一目录下,质量检查同样按qc2full方式进行。
Chart-QC软件界面如图1所示。
图1 Chart-QC软件界面
数据检核的目的是为了评价观测值文件的质量,以便对其进行编辑,删除质量不高的部分观测值。为了便捷、直观地分析观测值的质量,需将各种检核结果文件绘制成图像。Chart-QC软件采用微软Chart控件来实现对分析结果的可视化表达。下面以多路径效应检核文件为例,阐述Chart控件图像绘制的实现过程。
(1) 多路径效应文件结构解析
在绘制图像前,首先需对文件结构进行了解,以便对文件进行读取。多路径效应文件结构如图2所示。
图2 多路径效应文件结构图
多路径效应文件与其他检核结果文件结构相同,文件头部分含义一样。图2中,“SVS”表示卫星及编号;“T_SAMP”表示采样间隔,以秒为单位,本例中为5 s;“START_TIME_MJD”表示观测值文件中第一个观测记录的时刻,为修正的儒略日期;卫星标识“9 01 07 08 11 17 19 20 28 32”中,第一个数字“9”表示观测并记录了9颗卫星,其余数字表示记录的卫星编号,一般只有在观测卫星或总的观测卫星数发生变化时,文件中才会重新标识此信息;卫星标识下一行为多路径效应,一颗卫星一个历元对应一个值。
(2)多路径效应的可视化表达
为直观表达观测值质量,需对卫星各历元的多路径效应、信噪比、卫星高度角和方位角、电离层误差进行读取,并计算对应的历元时刻。鉴于每个观测值文件中记录每颗卫星的检测结果均包括以上元素,历元时刻可根据卫星是否记录进行推算。因此,可定义一个卫星类(Satellite类),并采用索引的方式,获取类中相关字段的值。Satellite类结构如下[6]
class Satellite
{
public float Mp1;∥P1 多路径效应
public float Mp2;∥P2 多路径效应
.........................................................
public static Int32[] SatNo:∥观测卫星编号
∥构造函数
public Satellite(float a,float b,float c,float d,float e,float f,float g,float h,float t)
{
Mp1=a;
Mp2=b;
.........................................................
}
∥类索引
public float this [int index]
{
get
{
switch(index)
{
case 0:return Mp1;
case 1:return Mp2;
.....................................................
default:
throw new IndexOutOfRangeException("下标越界!");
}
}
set
{
switch(index)
{
cass 0:Mp1=value;break;
cass 1:Mp2=value;break;
......................................................
default
throw new IndexOutOfRangeException("下标越界!");
}
}
}
}
为方便获取各卫星的相关信息,并顾及每颗卫星可能包含若干历元的信息、且历元间可能不连续,主程序采用List类定义了32个satellite数组
List
∥实例化32个Satellite类对象
for(int i=0;i<32;i++)
{
satellite[i]=new List
}
satellite 数组中每个元素均为List类的实例,每个数组又以Satellite类实例对象为元素,从而可采用List类中的Add方法,以卫星编号为索引,实现对记录卫星检核结果文件中各个历元相关信息的读取,并采用类索引获取所需信息,关键代码如下
Satellite G=new Satellite(b,c,0,0,0,0,0,0,time);∥创建对象G
satellite[(Satellite.SatNo[k]-1)].Add(G);∥将对象G添加到第SatNo[k]个List数组中
在读取完一个文件后,便可利用类索引获得所需元素,并利用chart控件绘制图形,代码如下
for(int i=0;i { series1.Points.AddXY (satellite [j] [i] [8], satellite [j] [i] [0]); series2.Points.AddXY (satellite [j] [i] [8], satellite [j] [i] [1]); } 代码中,j为卫星编号;satellite [j].Count为该卫星的历元数;satellite [j] [i] [0]为卫星j第i个历元的L1多路径效应;satellite [j] [i] [1]为卫星j第i个历元的L2多路径效应;satellite [j] [i] [8]为卫星j第i个历元对应的历元时刻。 对检核结果文件可视化表达后,便可直观地对观测值文件进行质量分析,从而对质量较差的数据进行编辑。数据的编辑包括RINEX文件的切割与合并、卫星的选择和禁用、高度角的设置等,同样可通过调用TEQC命令来实现。如要禁用某颗GPS卫星全部观测值,可设置TEQC参数为 teqc - G# 输入文件> 输出文件 其中,参数“G”表示GPS卫星;“#”表示卫星编号。 然而,TEQC对卫星的禁用是禁用该卫星的全部观测数据,这对观测条件不好、卫星较少时的情况非常不利。Chart-QC软件在分析RINEX文件结构的基础上,结合可视化图形,实现了对单颗卫星部分观测值进行禁用的功能,在改善原始观测值质量的同时,提高了观测数据的利用率。基本思路为: 1) 判断多路径误差大小。 2) 获取异常多路径误差对应的历元。 3) 删除RINEX文件中对应历元的卫星标识及观测值。 4) 保存RINEX文件。 数据编辑完成后,还需将编辑后的数据进行存盘。Chart-QC提供3种保存方式,即替换存盘、更改路径存盘、改名存盘。 采用某GPS控制网29个观测值文件对Chart-QC软件的功效进行测试,主要是对电离层跳变严重、多路径效应较大、卫星失锁频繁的观测值进行编辑。可以禁用单颗卫星观测值,也可禁用观测文件某连续时间段内的所有卫星观测值,或者禁用单颗卫星部分历元观测值,需具体情况具体分析。 将原始观测值数据与经Chart-QC软件编辑后的观测值数据间的多路径效应、观测值总数与发生周跳观测值个数之比进行对比分析,部分结果见表1。 表1 GNSS数据编辑前后质量比对 对结果进行分析可知,预处理后数据的观测质量相对于原始数据质量有了大幅度的提高。首先,从有效率指标来看,数据文件中有效率有的减小了,有的增大了,但整体上有效率普遍保持不变;其次,从多路径误差来看,mp1值普遍减小,其中减小值最小为5.3%、最大为33.3%;mp2值同样普遍减小,减小值最小为17.7%、最大为46.9%;最后,从观测值总数与发生周跳观测值个数之比(o/slps)来看,o/slps值普遍增大,且增幅很大。显然,Chart-QC软件实现了GPS观测数据预处理的目的。 为进一步评价Chart-QC软件在GNSS数据质量分析与编辑方面的功效,在保持相同的高度角、采样间隔、电离层模型等基线处理参数设置的情况下,采用GPS数据处理软件对所有基线按两种方案进行一次性处理。 方案1:对原始GPS观测值文件进行基线解算。 方案2:对经Chart-QC软件编辑后的观测值文件进行基线解算。 基线质量的绝对质量指标是判定基线质量合格与否的重要参数,包括独立环闭合差和复测基线长度较差[7-10]。此处主要以这两个指标来评价Chart-QC的功效。根据文献[6],独立环闭合差限差为 复测基线长度较差限差为 式(1)、式(2)中,σ为基线测量精度;其余符号含义可参见文献[6]。σ可按下式进行计算 由于编辑前后的文件均由相同的GPS接收机进行施测,且同名基线弦长一致,故基线测量精度σ相同,继而复测基线长度较差之限差也相同;此外,同名独立环基线边数相同,且为相同的基线,故独立环闭合差限差也相同。因此,将编辑前后文件进行基线处理所得独立环闭合差、复测基线长度较差之绝对值进行比较,其中的较小者,更容易满足限差要求,数据质量自然较高。于是,为宏观评价上述指标值的大小,将方案2结果之绝对值减方案1结果之绝对值,结果如图3和图4所示。 图3 异步环及分量闭合差绝对值之差 图4 复测基线长度较差之差 由图3、图4可以看出,独立环分量闭合差及环闭合差、复测基线长度较差之绝对值之差大都小于0,也即方案2结果之绝对值大都小于方案1结果之绝对值,说明经由Chart-QC软件编辑后的数据整体质量有所改善,从而说明了基于TEQC的Chart-QC软件能对GNSS观测数据的质量进行检查、并能根据可视化分析结果优化观测值质量。差值等于0是因某些原始观测数据质量本身较高,没有对其进行编辑处理所致。 在分析TEQC软件优缺点的基础上,结合Visual C#面向对象程序设计的方法,对TEQC进行了基于Windows界面的可视化封装,采用Chart控件实现了质量检核结果的可视化表达,实现了GNSS观测数据预处理过程的简洁化。程序运行及处理结果表明:Chart-QC操作简单、界面友好;质量检核结果可视化图形美观、易于分析;能在检查与分析观测值质量的基础上,对观测数据进行编辑,继而改善基线质量,为网平差提供质量较好的观测值,从而有利于提高定位精度,从而也验证了TEQC软件自身在数据分析与编辑方面的功效。 参考文献: [1] 赵红强,郭际明,李宗华,等.绘图工具QCVIEW在GPS数据预处理中的应用[J].测绘通报,2008(11):44-46. [2] UNAVCO Facility. TEQC-Tutorial [EB/OL].2007-06-20[2013-01-05]. http:∥facility. unavco.org/software/teqc/tutorial.html. [3] 廖文兵,余红举,王斌,等.TEQC软件的应用与数据分析[J].地理空间信息,2012,10(4):76-78. [4] 王建军,吴北平,冯健.TEQC和QCVIEW32在GPS观测数据预处理中的应用[J].工程地球物理学报,2010,7(5):634-638. [5] 杨宏伟,李晶.C#程序员开发手册[M].北京:科学出版社,2006:612-619. [6] 梁斌玉.叩响C#之门[M].北京:电子工业出版社,2009:137-162. [7] 张勤,李家权.GPS 测量原理及应用[M].北京:科学出版社,2005:171-172. [8] 李征航,黄劲松.GPS测量与数据处理[M].2版. 武汉:武汉大学出版社,2010:282-286. [9] 中华人民共和国国家质量监督检验检疫总局.GB/T 18314—2009全球定位系统(GPS)测量规范[S].北京:中国标准出版社,2009. [10] 魏二虎,王中平,龚真春,等.TEQC软件用于GPS控制网数据质量检测的研究[J].测绘通报,2008(9):6-9.3. GNSS观测数据的编辑
4. 数据的保存
三、软件性能整体测试
四、结束语