VB.NET编程解决因时间过期TGO 基线不解算的研究

2012-11-05 05:08张福利丁亚南
山西建筑 2012年14期
关键词:数据文件字符串控件

张福利 李 奇 丁亚南

(河南省中纬测绘规划信息工程有限公司,河南焦作 454000)

0 引言

Trimble GPS&TGO(简称TGO)是当前测绘行业广泛使用的GPS静态数据处理软件之一,可识别多种仪器导出的多个版本的RINEX文件,是多品牌GPS接收机联合观测,联合平差的首选软件之一,由于软件设定了基线解算的GPS周不能超过1 652,所以UTC时间2011年9月10日以后的数据TGO不再解算基线。基于此状况,本文先对RINEX文件的组织结构进行分析,然后介绍VB.NET程序的设计思路和代码的组织编写,帮助测量工作者方便快捷的解决这一问题。

1 RINEX文件的组织结构

RINEX 是“The Receiver Independent Exchange Format”(接收机通用数据交换格式)的缩写,它已经成为GPS测量和精密导航应用等的标准交换和存储格式文件。当前的RINEX格式文件主要由4种文本文件所组成,分别为O:观测数据文件;N:导航数据文件;M:气象数据文件;G:GLONASS导航数据文件。一般我们使用的主要是O文件、N文件和G文件(本文对G文件不做论述),由于不同接收机配备的软件有其独自的RINEX格式转换模块,本文以中海达仪器的O文件及N文件为例,重点对文件中与时间记录相关的信息进行论述。

1.1 O文件

RINEX观测数据文件由文件头和数据区两部分组成,文件头的第1行用来标识文件的类型和文件版本,文件头的结尾以“END OF HEADER”字符串为标识,在文件的中部以带“MARKER NAME”的字符行标识GPS点号,以“TIME OF FIRST OBS”字符行标识GPS记录的起始时间,以“TIME OF LAST OBS”字符行标识GPS记录的结束时间。

不同的GPS软件导出的O文件头行数并不固定,但使用项目的RINEX星历数据,生成GPS观测时间区间的星历数据所需的起止时间是不可缺少的,如图1,图2所示。

图1 RINEX观测值文件文件头

1.2 N 文件

RINEX导航文件也是由文件头和数据区两部分组成,通过文件头的第1行来识别文件的类型和文件的版本,文件头的结尾以“END OF HEADER”为标识。在数据区每段数据的第1行前19个字符“03 10 9 2 6 0 0.0”记录了卫星的编号和记录日期,第6行的第3列则记录了GPS周数,如图3所示。

图2 RINEX观测值文件数据区

图3RINEX导航文件

2 VB.NET程序的设计思路

RINEX格式是纯ASCII码的文本文件非常便于用程序代码操作,VB.NET集成了丰富的内部函数,如:DATEADD,DATEDIFF可以方便的对时间进行换算,STRCOMP函数可以对两个字符串进行比较,REPLACE函数可对一个字符串内的某个字符串进行替换。对RINEX文件的修改主要就是时间字符串的替换,由于GPS周的起点为UTC时间的1980年1月6日,我们就可将2个文件的每个观测值时标更换为GPS周1 653之前的某n周,保持相同的星期几;将2个文件的每个观测值的UTC时间更换为某n周之前的UTC时间,保持相同的时刻,如2012年1月1日,是1 669周第1天(星期日),可将其更换为20周前的时间,即2011年8月14日,GPS周1 649周第1天(星期日)的数据,对于O文件的修改如下:

1)将文件头中记录观测数据的起止时间:

3 程序的开发与代码编写

3.1 程序的界面设计

程序的界面设计如图4所示,界面上的命令按钮读者可只添加“打开RINEX文件”“保存文件夹”和“转换”3个按钮;添加的文本框控件用于输入需提前的GPS周数量,添加的列表框控件用于显示打开的文件列表及文件转换后的结果。

图4 程序设计界面

3.2 代码的编写

1)“打开RINEX文件”的代码主要是对OpenFileDialog控件进行浏览选择文件的操作,当设置OpenFileDialog.Multiselect=True时允许同时选中多个文件,当设置文件类型过滤器OpenFile-Dialog.Filter=“标准 RINEX 文件|* .OBS;* .??N;* .??O|所有文件(*.*)|*.*”时,可以浏览带通配符的多种扩展名称的文件。

2)“选择保存文件夹”是引用FolderBrowserDialog控件在程序运行时通过FolderBrowserDialog.SelectedPath方法获取一个保存路径,这些是VB的基础操作,在此不再赘述。

3)UTC时间与GPS周的相互运算。

要将UTC时间转换为GPS周,首先要计算出GPS的UTC时间与GPS周起算的UTC时间的天数差;第二,以天数差为除数,每个GPS周7天为被除数,所求的整数即为GPS周数,余数为GPS周当中的第几天(星期日为第1天)。在VBNET中DateDiff函数可以直接求得两个时间的时间差,用MOD函数可求得两个整数相除的余数。

代码编写如下:

5)程序的运行。

记录静态GPS网的RINEX文件比较多,程序代码编写时尽量设计为循环模式。文中的示例程序在打开文件时将选择的多个RINEX文件的名称和路径添加到列表框控件中,代码执行时循环读取列表中的每个文件,通过读文件头判断文件的格式,依据文件格式提取存储GPS记录的UTC时间和GPS周的字符串格式,进而用计算出的新时间字符替换旧时间字符,程序采用了顺序文件的读写方法,运行速度理想,如图5,图6所示。

图5 程序运行界面

图6TGO基线解算固定界面

4 结语

限于篇幅,未能列出完整的程序代码,但对于长期从事测绘工程又有计算机基础的人员,相信会有所获,自行编写出各种各样的RINEX文件修改器应用到实际工作中,提高生产效率,节约资源投入。

[1]GB/T 18314-2009,全球定位系统(GPS)测量规范[S].

[2]曹祖圣.Visual Basic 2005完全开发指南[M].北京:科学出版社,2007.

[3]徐绍铨.GPS测量原理及应用[M].武汉:武汉大学出版社,2003.

[4]张 曜.Visual Basic函数实用手册[M].北京:冶金工业出版社,2002.

猜你喜欢
数据文件字符串控件
基于文本挖掘的语词典研究
关于.net控件数组的探讨
数据文件恢复专题问答
数据文件安全管控技术的研究与实现
SQL数据文件恢复工具
ASP.NET服务器端验证控件的使用
一种新的基于对称性的字符串相似性处理算法
依据字符串匹配的中文分词模型研究
一种针对Java中字符串的内存管理方案
基于嵌入式MINIGUI控件子类化技术的深入研究与应用