1、用 Visual Basic 实现全站仪数据转换徐卫兵 乔植朋(安徽省长江河道管理局测绘院 安徽芜湖 241002)摘 要 本文论述了数字化测图中全站仪采集数据过程里,因设站或后视错误而造成数据错误,用 Visual Basic 进行内业改正的原理、方法。详细分析了四种全站仪的数据格式及数据转换的过程。关键词 数据格式 全站仪 内业改正1. 概述随着全站仪与计算机在各地勘测设计单位的普及,数字化的测图方式已被广泛采用。数字化的测图方式中,全站 仪配合 GPS RTK 是目前生 产效率最高、 结构最理想和得到最广泛应用的一种野外数据采集(简称“ 采点” )模式,传统的经纬仪视距法采点或测距仪+经
2、纬仪采点的模式基本上退出了历史的舞台。本人单位目前就有全站仪 10 台套,其中徕卡全站仪 4 台(Leica407、Leica705)、蔡司全站仪 2 台(Zeiss 402)、尼康全站仪 2 台(Nikon550)和中翰全站仪 2 台(DTM310)。地形测量时主要采用全站仪点号草图法,即每个全站仪组基本配置为一人观测、一人记录数据点号并勾绘草图、两人司棱 镜。2. 问题的提出全站仪是一种智能型测量仪器,能够自动记录和传输观测数据,并自动计算出测点的三维坐标,但前提条件是设 站和后视都输入了正确的三维坐标。野外数据采集中,由于各种原因都可能造成设站或后视错误及其他错误,由此采集的数据点坐标和
3、高程发生错误。根据我们野外作业的经验,造成设站或后视错误的原因主要有以下几个方面: 控制滞后,本来就用假设坐标先测量。 设站点或后视点调用了错误的站点或输入了错误的坐标,特别在数台全站仪协同作业时,因通讯等原因很容易发生上述错误。 后视了无坐标的后视点(主要发生在后视远距离的国家三角点和自测的独立地物如灯标、烟囱时,目标辨别错误),但校核了正确的已知点。 仪器设置错误,如采用了倒镜测量。而且,按照我们单位 ISO 9001 质量认证体系和规范中关于检查、验收的要求,有必要提交一份类似于传统视距法的测站、后视、采集点的点号、距离、角度、切尺、垂直角等信息的原始数据记录,以摸清每个数据的来龙去脉。
4、当 发生类错误时,用原始数据记录进行内业数据改正;当发生类错误时,用原始数据记录进行内业数据纠正;计算出测点正确的三维坐标,避免外业返工。所以本人用 Visual Basic 6.0,结合本单位四种类型全站仪的数据特点,编写了一个全站仪数据转换程序。3. 内业改正原理与步骤全站仪野外数据采集的原理是通过设站点 A(XA、YA、HA)和后视点 B(XB、YB、HB)坐标方位角 AB 推算出设 站点 A 与各采集点 C(XC、YC、HC)的坐标方位角 AC,再根据设站点 A 与各采集点的斜距 SAC,垂直角 AC,通过坐 标正算公式计算出采集点 C 的三维坐标。XC= XA+DACCosAC YC
5、= YA+DACSinAC HC= HA+AC 式中 DAC为平距, AC为高差。其中DAC = SACCos(pi / 2 -AC) AC = DACTan(pi / 2 -AC) + i-v+ 式中 i 为仪器高,v 为棱镜 高, 为全站仪高差改正,不同全站仪高差改正系数稍有不同。本程序高差改正系数 = (0.44SAC 2) / R(R=6378245 为椭球长半径)。野外数据采集时,发生设站或后视错误,不外乎以下三种情况:a)、设站时将测站 A 错误地设置成 A,造成后 视方位角 AB 增大或减小角度 变为AB,从而造成采集点 C 的坐标方位角 AC 增大或减小角度 变为 AC。如图
6、1(a)所示,采集点 C 的坐标发生了平移和旋 转。b)、设站时将后视点 B 错误 地设置成 B,造成后 视 方位角 AB 增大或减小角度 变为 AB,从而造成采集点 C 的坐标方位角 AC 增大或减小角度 变为 AC。如图1(b)所示,采集点 C 的坐 标只有旋转。b)、设站时将测站 A 和后 视点 B 全部错误地设置成 A、B,造成后视方位角 AB 增大或减小角度 变为 AB,从而造成采集点 C 的坐标方位角 AC 增大或减小角度 变为 AC。如 图 1(c)所示,采集点 C 的坐标发生了平移和旋转。因此,内业改正时的步骤一般为三步:第一步分站,即知道采集点 C 是由哪一站测出的,后视 点
7、是哪个;第二步采集点方位角改正,即由设站时错误的后视方位角 AB(或AB 、AB)和正确的后视方位角 AB计算出旋转角度 =AB-AB,则采集点 C 的改正方位角 AC=AC+;第三步 测点坐标计算,即按坐标正算公式计算出采集点 C 的三维坐标。XYABCA平 行 线 平 行 线 B XYB C A C XYA B C A平 行 线 C平 行 线(a) (b) (c)图 14. 程序实现过程4.1 程序实现的基础由于不同类型全站仪内置测量软件的不同,全站仪所采集的数据格式差异很大。从内业改正的步骤我们可知,程序设计的难点和重点就在于数据分站,进行正确的数据分站后,坐标计算则很容易实现 。1、自
8、定义原始数据格式和转换坐标数据格式为了程序设计的方便,四种全站仪的数据都统一自动分解为一种类似于传统视距法记录的自定义原始数据格式,其格式说明见图 2(a)所示,数据示例如图 2(b)所示,其中以“FIX ”开头的两行为分站信息行,第一行为测站信息行,第二行为后视信息行,向下直至遇到另一分站,两个分站之间的每行数据为采集点 C 的点号、距离、角度等原始测量数据。分站信息行开头的标 志字符“FIX”不可更改,功能标志字符一般为“ FIX”,表示以信息行中输入的坐标来计算设站时的假后视方位角 AB,并于信息行中的假后视方位角 AB 比较,防止有误;当后视了无坐标的后视点,采用校核角上图时,手工将功
9、能标志字符改为“XHJ” ,仪器高改为校核点名,后 视方位角 AB 改为校核点方位角 AX;部分采集点 C 的最后有转点标志字符串“ZD” ,表示 该采集点 C 又作为设站点,程序转换时,可自动跟踪记录转点坐标,自 动计算转点设站采集的数据。原始数据中角度格式为“ 度.分秒”(d.mmss)。a (b)图 2转换坐标数据格式是计算后可以展点成图的三维坐标数据,不同的成图软件所要求的数据格式不近相同,本程序设计的坐标数据格式为:“ 点号,X,Y,H, ”(数据之间逗号分隔)。2、全站仪数据格式分析自定义好了原始数据格式后,让我们从全站仪记录的数据格式分析开始,入手解决如何进行分站,如何转换成自定
10、义的原始数据格式吧。a)、徕卡全站仪徕卡全站仪配置的软件功能强大,内置了两种数据格式(*.gsi 和*.idx),还可以上载自定义数据格式( 上述的原始数据格式和坐标数据格式都可以自定义出来,但原始数据格式缺少分站信息行)。 *.gsi 格式数据过于简单, *.idx 格式数据详尽,数据格式类似数据库,一般分为三段,数据示例如图 3 所示:图 31)头信息段:以“ HEADER”开始,至 “END HEADER”结束,主要记录仪器的一些设置信息,如角度格式(ANGULAR DMS )、长度单位(LINEAR METRE)等,本程序自动记录角度格式和长度单位,进 行角度格式转换(转换为度.分秒)
11、和长度单位换算(转换为米)。2)坐标信息段:以“ DATABASE”开始,至 “END DATABASE”结束, 记录该数据文件下所有的点的三维坐标等信息。每个点 记录的信息如下:POINTS(PointNo, PointID, East, North, Elevation, Code, Date, CLASS) 点序号 点名称 Y X H 点代码 时间 点类其中点类”MEAS” 表示测量点, ”FIX”表示设站用到的测站点或后视点,点名称(PointID)可以重复,但点序号(PointNo)具有唯一性。3)设站、测量数据信息段:以“THEODOLITE ”开始,至“END THEODOLIT
12、E”结束,一般有几个设站段+测量数据段组成。其中设站段以“ SETUP”开始,至 “END SETUP”结束,中间三行分别为设站点序号(STN_NO)、设站点名称(STN_ID)和测站仪器高(STN_HT);接着设站段后的为该站所测的碎步点观测数据,以“ SLOPE”开始,至“END SLOPE”结束,每个点记录的信息如下:SLOPE(TgtNo , TgtID , CfgNo , Hz , Vz , Sdist , RefHt , Date , Ppm , ApplType, Flags) 目标点序号 点名称 点类别 方位角 垂直角 斜距 棱镜高 时间 Ppm 棱镜类型 数据位一般第一个测量
13、数据就是后视点,其斜距(Sdist )为 0。b)、蔡司全站仪蔡司全站仪记录的数据格式为一种定长记录数据,每个数据长度为121个字节,称为蔡司M5格式。一般分为地址 块、信息块和5个数值数据块,每个数据块以类型识别器开始,数据格式说明如下, 数据示例如图4所示:图41 6 M5格式定义块(For M5)8 10 地址类型识别器(Ldr)1216 数据行存储地址1820 块2类型识别器(PI1、 TI)2234 块2的数据值3648 文本信息,如时间、日期、代码等5051 块3的类型识别器(Y-坐标Y、SD-斜距、HD-平距、Th 、Tv、Tl、Tr-前、后、左、右偏制等)5366 块3的数据值
14、6871 块3的单位7374 块4的类型识别器(X-坐标X、Hz-方位角、th- 棱镜高等)7689 块4的数据值9194 块4的单位9799 块5的类型识别器(Z-高程H、V1-垂直角、ih-测站高等)101113 块5的数据值114117 块5的单位120121 回车、换行符一般的以“TI STAT. KNWN. PNT.: m=fixed”表示开始设站,以“ PI1”表示点名称,以“TI INPUT VALUES”表示开始改变棱镜高,其他类型识别器字符意义较为明了(如Y,X,SD等)。c)、中翰全站仪中翰全站仪记录的数据较为简单,每个采集点数据占两行,测站信息两行,后 视信息两行,后视照
15、准信息两行,数据格式说明如下, 数据示例如图5所示:图5设置信息行:第16行,仪器的设置信息,如数据文件名、 单位、温度、气压等。测站信息行:两行,第一行以“STN”开始,后 为测站点名,仪器高;第二行以“XYZ ”开始,后为测站的三维坐标( X,Y,H)。后视信息行:两行,第一行以“BKB”开始,后为后视点名,后视方位角;第二行以“XYZ”开始,后 为后视点的三 维坐标(X,Y,H)。照准信息行:两行,第一行以“BS ”开始,后为照准点名,棱镜高。第二行根据测量模式的不同而不同,角度模式HV时(不需棱镜),后 为照准点的方位角,垂直角;坐标模式XYZ时 (需棱镜),后 为照准点的三维坐标(X
16、, Y,H);距离角度模式HD时(需棱镜),后 为照准点的方位角,平距,高差。测点信息行:设站后视照准后(共6行),接着后面的为该站的采集点数据信息,每个采集点数据占两行。第一行以“SS” 开始,后 为测量点名,棱镜高;第二行根据测量模式的不同而不同,坐标模式XYZ 时,以 “XYZ”开始,后为测点的三维坐标(X,Y ,H);距离角度模式HD时,以“ HD”开始,后 为测点的方位角,平距,高差。从上可以看出,中翰全站仪记录的数据分站较为清晰,但数据简单,坐 标模式时,只记录测点的三维坐标,而无改算所需的角度、距离等原始数据;距离角度模式时, 则正好相反。所以需自定义出由坐 标反算角度、距离的函
17、数hvsdfun和高差、平距反算垂直角的函数HVfun,原程序代码如下。d)、尼康全站仪尼康全站仪内置了两种数据格式(*.Asc和*.raw )。*.Asc格式同转换坐标数据格式一样,*.raw格式称为尼康原始数据,数据格式说明如下, 数据示例如图6所示:图6文本信息行:以标志符“ CO”开始,一般开 头有17行 为仪器的设置信息,如数据文件名、单位等;每次设站前有2行, 设置设站时的日期、 时间 、温度、气 压。设站信息行:设站一次有1行,以标志符“ST”开始,后为测站点名,预留位,后 视点名,预留位, 仪器高,后视方位角,照准后 视方位角。测点信息行:以标志符“ SS”开始,后为测点名,棱 镜高,斜距,方位角,仪器高,垂直角,时间 。标志符“ SS”前有“*” 号,表示 该点作废。坐标信息行:设站后视时用到的控制点的坐标,以标志符“ MP”(输入点)或“UP ”(导入点)开始,后为控制点名,预留位,X, Y,H,。从上可以看出,尼康全站仪记录的*.raw数据已经分站,同自定义的原始数据格式十分接近,所以本程序设计了由尼康原始数据直接转换成坐标数据的过程。4.2 程序的主要功能和部分原代码全站仪数据转换程序分两步进行,其过程及主要功能如下:第一步:全站仪数据筛选过程,即将传输出的全站仪数据(上述4类)进行分站,导出自