基于Visual C#的全站仪数据格式转换软件的研制
2015-01-01刘永琦苏明娟
刘永琦 苏明娟
(1.山东正维勘察测绘有限公司,山东 济南250101;2.正元地理信息有限责任公司山东分公司,山东 济南250101)
0 前言
随着计算机科学和光电技术的发展,测绘仪器制造业取得了飞速的发展。全站仪,是一种集光、机、电为一体的高技术测量仪器,是集水平角、垂直角、距离(斜距、平距)、高差测量功能于一体的测绘仪器系统。全站仪具有数据采集存储自动化、测量精度高、功能齐全、操作方便等特点,广泛应用于控制测量、地形测绘、变形监测、施工放样及地籍测量等领域。在开展这些测量工作时需将全站仪存储的测量数据及时下载到计算机,经过数据格式转换获取内业软件可以直接识别的数据文件。ES-600G系列全站仪是拓普康(北京)科技发展有限公司2012年最新出品的新一代普及型全站仪,其国际品质的优良性能确保您在测量工作中轻松自如,保质保量。其USB接口读取数据方便自由,用户可以插入U盘直接下载数据。然而,通过USB下载的数据为SDR33格式。绘图软件(如南方CASS)无法直接使用此格式文件。为了解决这个问题,利用Visual C#编程实现SDR33数据格式到南方CASS数字化成图软件所需数据格式的转换。
1 SDR33数据文件格式分析
全站仪采集到的数据是以文件的形式存储在仪器内存中,这些数据文件可以通过通讯下载至计算机,经分离、组合、转换等处理后便可提供给绘图等应用软件使用,而了解文件的原始数据记录格式是进行这些处理的前提。如图1所示为SDR33格式的数据文件。
图1 SDR33格式数据文件
1.1 表头记录
第1行“00NMSDR33 V04-04.02 07-Dec-13 19:19 113111”是SDR33格式数据文件的表头记录,长度为46个字符。1~2字符“00”为类型码,表示此行记录为“表头记录”。3~4字符“NM”为来源码,表示此行记录为“非测量值”。5~20字符“SDR33 V04-04.02”为版本号,21~24字符为编号,25~40字符“07-Dec-13 19:19”为日期和时间。41~46字符“113111”分别表示角度单位、距离单位、气压单位、温度单位、坐标格式和水平角格式。
1.2 文件记录
第2行“10NM1206 121111”是SDR33格式数据文件的文件记录,长度为26个字符。1~2字符“10”为类型码,表示此行记录为“文件记录”。3~4字符“NM”为来源码,表示此行记录为“非测量值”。5~20字符“1206 ”为文件名。21~26字符“121111”分别表示点名类型、含高程、气象改正、Cffamp;R改正、折射系数和海平面改正。
1.3 比例尺因子记录
第3行“06NM1.00000000 ”是SDR33格式数据文件的比例尺因子记录,长度为20个字符。1~2字符“06”为类型码,表示此行记录为“比例尺因子记录”。3~4字符“NM”为来源码,表示此行记录为“非测量值”。 5~20字符“1.00000000 ”为比例尺因子。
1.4 仪器记录
第4行“01NM:ES-602G V03-23 FH0912ES-602G V03-23 FH091231 0.000 ”是SDR33格式数据文件的仪器记录,长度为99个字符。1~2字符“01”为类型码,表示此行记录为“仪器记录”。3~4字符“NM”为来源码,表示此行记录为“非测量值”。5字符“:”为测距仪类型,6~21字符“ES-602G V03-23 ”为测距仪说明,22~27字符“FH0912”为测距仪编号,28~43字符“ES-602GV03-23”为经纬仪说明,44~49字符“FH0912”为经纬仪编号,50字符“3”为基座类型,51字符“1”为竖角格式,52~67字符为测站偏心值,68~83字符为目标偏心值,84~99字符“0.000 ”为棱镜常数值。
1.5 目标点记录
第6行和第11行是SDR33格式数据文件的目标点记录,长度为20个字符。1~2字符“03”为类型码,表示此行记录为“目标点记录”。3~4字符“NM”为来源码,表示此行记录为“非测量值”。 5~20字符“1.389 ”或“0.000 ”为目标高。
1.6 坐标观测值记录
第5行、第7~10行和第12~13行都是SDR33格式数据文件的坐标观测值记录,长度为84个字符。1~2字符“08”为类型码,表示此行记录为“坐标观测值记录”。3~4字符“KI”或“TP”为来源码,分别表示此行记录为“已知点数据类”或“碎部点数据类”。 5~20共16个字符为目标点名,21~36共16个字符为N坐标值,37~52共16个字符为E坐标值,53~68共16个字符为Z坐标值,69~84共16个字符为说明编码。例如,第8行记录“08TP 349967.479 50005.803 0.369 Z ”表示:点名:3,N坐标值:49967.479,E坐标值:50005.803,Z坐标值:0.369,编码:Z。
2 南方CASS坐标数据文件格式分析
坐标数据文件是CASS最基础的数据文件,扩展名是“DAT”,其格式为:
1点点名,1点编码,1点东坐标Y,1点北坐标X,1点高程
…
N点点名,N点编码,N点东坐标Y,N点北坐标X,N点高程
需要说明的是:文件内每一行代表一个点;每个点东坐标Y、北坐标X、高程的单位均是“米”;编码内不能含有逗号,即使编码为空,其后的逗号也不能省略;所有的逗号不能在全角方式下输入。
3 Visual C#程序设计
3.1 编程环境
C#语言是从C/C++语言发展而来的,它汲取了包括C++、Java Delphi在内的多种语言的精华,是一种完全面向对象的高级程序设计语言。把C#和其他常用语言作比较,它最具显著的特点是:概念精确完整、简明清晰;语言成分合理,功能强大,资源丰富;安全可靠,简单易学。微软公司的Visual Studio.NET是目前使用最广泛、性能最优秀的开发平台之一。C#是全新打造的.NET的核心语言。因此,本文基于Visual Studio.NET开发平台,采用C#语言进行数据格式转换软件的研制。
3.2 编程思路及程序代码
通过对CASS坐标数据文件进行分析,我们知道绘图软件需要的信息包括:点名、编码、东坐标Y、北坐标X和高程,而对于单位、各项改正、目标高、仪器编号等信息是不需要的。通过对SDR33数据文件分析可知,“坐标观测值记录”中包含了绘图软件需要的全部信息。因此,编程的核心问题就是:过滤掉SDR33数据文件中除“坐标观测值记录”以外的所有记录,将“坐标观测值记录”中点名、编码、东坐标Y、北坐标X和高程提取出来,按照南方CASS坐标数据文件格式生成成果文件。
程序同时打开SDR源文件和CASS坐标文件,从SDR源文件中读取一条记录,如果文件已经到达末尾,则弹出消息框“数据导出完毕!”,否则截取此记录的前2位字符进行判断。如果前2位字符为“08”,则表明此记录为“坐标观测值记录”,程序通过Substring函数依次截取点名、北坐标X、东坐标Y、高程H和编码,并按“点名,编码,东坐标Y,北坐标X,高程H”格式写入到CASS坐标文件。程序依此运行,直到SDR源文件到达末尾。
程序主要代码如下:
3.3 软件操作及运行结果
图2为该软件的操作界面。
图2 软件操作界面
单击“打开”按钮,打开需要进行格式转换的SDR33格式的源文件。单击“保存”按钮,指定CASS坐标文件的保存位置和文件名。单击“导出CASS坐标数据”按钮,软件进行数据格式转换,转换完成将弹出“数据导出完毕!”消息框,如图3所示。依次单击“确定”和“关闭”,完成整个转换操作。
图3 “数据导出完毕!”消息框
图4为应用本软件将图1所示“1207.SDR”文件转换为南方CASS坐标数据文件的结果。
图4 软件运行结果
4 结语
外业仪器设备不同,输出的数据格式也不尽相同,内业成图软件不同,输入的数据格式也不尽相同,如何将两种数据格式文件进行转换,是生产单位经常遇到的问题,因此解决这一问题是提高测量工作效率的重要环节。本文提出了一种基于Visual Studio.NET开发平台,采用C#语言编制软件来解决这一问题的方法,该软件界面友好,操作简单,易于修改,在处理类似问题上可以起到一定的参考作用。
[1]郑宇军,王侃.C#语言程序设计基础[M].北京:清华大学出版社,2008:4.
[2]邱锦伦,曹旻,等.Visual C#.NET程序设计教程[M].北京:清华大学出版社,2006.