批量GNSS数据质量检查程序设计
2014-08-21曹解放韩雪峰刘雪瑞张伟民
曹解放,韩雪峰,刘雪瑞,张伟民
(61365部队,天津 300140)
0 引 言
GNSS野外测量人员在采集完数据以后,必须对所采集的数据进行质量检查,以检核数据是否合格,作为迁站或者加测的依据[1]。在实际的野外作业中,通常采用TEQC软件对观测数据进行质量检查,该软件是一款功能强大且简单易用的GNSS数据预处理公开免费软件,它的应用非常广泛,主要功能有格式转换、编辑和质量检核等。它对数据质量的检核可以反映GNSS数据的电离层延迟、多路径影响、接收机周跳、卫星信号信噪比等信息[2]。
然而,在Windows操作系统下使用TEQC软件,只能通过DOS窗口发送命令,人机交互性差。给部分计算机知识匮乏的野外作业人员带来极大不便,增加了作业的难度。而且在DOS窗口下无法完成多级目录下原始数据的检索和自动批量处理,检查结果显示不够直观,无法完成大量数据的质量检查结果统计[3]。
为此,本文根据多年的野外GNSS数据采集作业经验和实际作业需求,开发了具有可视化界面、可批量快速质量检查、结果Excel报表输出功能的数据质量检查程序。
1 程序功能
程序主要分为数据检索、质量检查和结果输出三个功能。
1.1 数据检索
数据检索功能主要是完成对在指定目录(包含子目录)下特定格式数据文件的搜索,并记录他们的路径,以便下一步的数据质量检查。
在C#语言中,通过System IO命名空间下的FileSystemInfo类保存文件的基本信息(文件名、大小、路径等),利用循环、递归调用、判断等方法,可以检索到指定目录下符合用户要求的所有文件[4-5]。基于以上原理,本程序设计了“数据类型选择”和“所在目录选择”两组控件,以便用户查找数据。部分代码如下:
private void SearchFiles(string filePath, ref List
{
DirectoryInfo dirif=new DirectoryInfo(filePath);
FileSystemInfo[]fsi=dirif.GetFileSystemInfos();
//获取文件夹下的文件
foreach (FileSystemInfo i in fsi)
{
if (i is DirectoryInfo)//如果i是文件夹
{
SearchFiles(i.FullName, ref filesNames);
//递归调用
}
else
if(Path.GetExtension(i.FullName)==".tps")
filesNames.Add(i.FullName);
}
}
以上代码中,利用一次递归调用实现了对主目录下所有子目录的搜索,利用Path.GetExtension()函数获取文件的后缀名,记录后缀名为“.tps”的文件,返回到字符串集合filesNames中。通过上述方法可以搜索目录下指定文件类型的所有文件。
本程序在数据类型选择时可选择标准格式O文件,也可以选择接收机自定义格式tps文件。前者可直接进行数据质量检查,后者需先进行格式转换再进行下一步,格式转换通过TEQC软件或者TOPCON公司自带的tps2rin.exe工具完成。
1.2 质量检查
在完成对数据的检索以后,可以通过TEQC软件进行质量检查。TEQC进行数据质量检查的命令格式为
teqc+qc Ofile
在C#程序中,可以开辟独立线程调用DOS控制台,并向DOS控制台输入自定义的命令,以此完成对指定数据文件的数据质量检查。部分代码为
teqcProcess.StartInfo.FileName="cmd.exe";
//打开DOS控制平台
teqcProcess.StartInfo.UseShellExecute=false;
teqcProcess.StartInfo.CreateNoWindow=true;
//是否显示DOS窗口,true代表隐藏;
teqcProcess.StartInfo.RedirectStandardInput=true;
teqcProcess.StartInfo.RedirectStandardOutput=true;
teqcProcess.StartInfo.RedirectStandardError=false;
teqcProcess.Start();
teqcProcess.StandardInput.WriteLine(dosRoot);
teqcProcess.StandardInput.WriteLine("cd "+"""+teqcPath+""");
teqcProcess.StandardInput.WriteLine(teqcComLine);
teqcProcess.StandardInput.WriteLine("exit");
以上代码中,dosRoot表示数据文件所在的盘符(C、D、E、F);teqcPath表示数据文件的路径;teqcComLine为数据检查的命令:teqc+qc Ofile.
1.3 结果输出
在完成数据质量检查以后,通过搜索检查结果中每行信息的关键字,如“Receiver type”、“Time of start of window”、“MARKER NUMBER”等,读取指定的关键字并利用添加的Microsoft.Office.Interop.Excel引用,将检查结果按行输出到Excel文件中。
2 程序应用
根据设计的功能,本程序可用于大批量GNSS观测数据的质量检查工作中,并在本单位的2014年GPS测前仪器检验工作中得到了实际应用。
打开程序后,如图1所示,首先选择数据类型为*.??o;再选择数据所在目录,本程序自动搜索该目录(包括子目录)下所有O文件,显示在listview控件中,并计算文件数量显示在状态栏左下方;再点击“质量检查”按钮,程序对所有选中的数据文件进行质量检查,片刻之后即可检查完毕;最后点击“保存到Excel”按钮,所有检查结果自动保存到Excel报表中,结果输出报表情况如图2、图3所示
图1 程序运行界面
图2 检查结果输出一
图3 检查结果输出二
3 结束语
通过C#编程,集成TEQC软件,本程序实现了GNSS数据的快速、大批量质量检查功能,并将检查结果保存在Excel报表中,对重点检查的项目,例如时段长度、采样率、中断次数、有效率、MP1、MP2等逐项进行判断,如不符合一定的标准,则突出相应单元格的颜色,使用户能够对所有数据的检查情况一目了然,极大提高数据成果质量检查的效率和准确度。
[1]中国地壳运动观测技术规程[S]. 北京: 中国环境科学出版社, 2004.
[2]TEQC——The Tooklitfor GPS/GLONASS/Galileo/SBAS Data [EB/OL]. http://facility. unavco. org/software/teqc/teqc. html.
[3]李 冲,何鑫星. TEQC在GPS数据质量检查中的常见问题及解决方案[J]. 全球定位系统,2010,35(5):48-50.
[4]王小科.C#开发实战宝典[M]. 北京:清华大学出版社,2010.
[5]黄胜忠.C# 4.0从入门到精通[M]. 北京:机械工业出版社,2011.