基于VB电子水准仪观测数据处理
基于VB6.0的水准网数据处理程序的实现
例, 其抗 差解 为
一
式中 , s i g ma O为给定 的先 验单 位权 中误 差 。
2 . 3 求 解 未 知 点 的 近 似 高 程
当参 数两 次 估值 之 差 的绝对 值 中 的最大 值 小 于 迭代精 度 时 , 迭代 停 止 , 单位 权 中误差 为
V — A 一 Z 。
身 特点选 择 合适 的平 差 基 准 模 型 来 处 理 数 据 ; 不 能进行 抗差 处理 , 消 除观 测粗 差 的影响 等 。
VB 6 . 0是 一 种 可 视 化 、 面 向 对 象 的 开 发 语 言L 3 ] , 文 章基 于 VB 6 . 0的语 言环境 , 进行 了矿 区水
善 了矿 区水 准 网数 据 处理 流程 , 减少 了作业 人 员 的 工 作量 , 提 高 了工 作效 率 。
由最小 二乘 原理 可知 :
七一 Q, A Pl , ( 4 )
式 中, Q 。一 ( A P A+P S P ) 一
= ( 』 、 , + P S S ) 一. ( 5 )
L j d ( p 1 ) 一p 2
S( p1)一 S( p2) + S1 2
程序采 用 等价权 法进 行抗 差模 型设 计 , 即观测 高差 权 阵 P变 为等 价权 阵 P:
P — P W , ( 8)
将上 述 编码编 写成 过程 F S P ( ) , 在 进行 闭合 差
( 2 )
单 位权 中误 差为 :
±
且量 大 , 大多 数矿 区 当前使 用 的水 准 网数据 处理 程 序 或软 件都 不 同程 度 的存 在 不 足 , 如: 程序不能 自 动进 行 闭合 条件 的搜索 和 闭合差 的计 算 , 单 纯依 靠 人 工计算 , 费时 费力 ; 一 般 的平 差 程 序是 以 固定 基
基于VB2008的电子水准测量数据处理程序的设计与实现
T eE e t n cL v l t r c s i gSDe i na dI lme t t h lcr i e e aP o e sn ’ o Da sg n mp e n h wi
Viu l sc2 0 s a Ba i 0 8
P UC a -u Y h ox UDa: n iu j
其本 身不 带 后处 理软 件 。 本文 针对 徕 卡 D A 3数 字水 准仪 和天 宝 D N 0 N0 ii3
徕 卡 D A 3数 字 水准 仪 是 徕 卡 公司 推 出 的第 N0
数字 水准 仪 ,基 于 V sa a i 言设 计 并实现 了 iu lB sc语 电子 水准 测 量 数据 处 理程 序 ,包 括 数据 传 输 、数 据 处 理 、折 线 图绘 制 、等 级 校验 等 功 能 , 同时 可 以输 出外业 观 测 手 簿 ,并 按 照 现行 测 量规 范进 行 数据 的 近 似平 差 计 算 , 且具 有 数据 修 改 、整 理数 据 成果 、 绘制 三轴 折 线 图等功 能 。
二 代 数字 水 准 仪 ,是第 一 部 使用 大 屏 幕进 行 显 示 的 数 字 水准 仪 ,能 提 示下 一 步 动 作 ,具 有 数据 安全 双 重 保 护 功 能 ,除 了可 以把 测 量 数据 自动 存储 在 仪 器 内存 中 ,还 能 在 测量 完 成 之 后将 数 据 输 出存 储 到 仪 器的 P c卡上 , 导 出的数据 格 式均 是徕 卡标 准 的 G I S 格 式 。同时 它操 作也 非 常方便 ,汲 取 了 T S 0 站 P 70全 仪 的设 计思 路 ,采 用 字母 数字 式 混合键 盘 操作 方 式 , 从 而提 高 用 户 的作 业 效 率 。通 过 实 践 可 以证 明 ,与 传 统 水 准 仪 相 比,采 用 徕 卡数 字 水 准 仪 可 以节 省将 近 5 % 的工 作 时 间,其 测量 既轻 松 又准 确 。 O
利用VB编程控制Excel处理测量数据
文章编号:1672-8262(2007)04-96-04 中图分类号:P209 文献标识码:B 利用VB 编程控制Excel 处理测量数据阳德胜33 收稿日期:2006—10—08作者简介:阳德胜(1971—),男,测绘工程师,从事道路勘测工作。
(广东省公路勘察规划设计院,广东广州 510507)摘 要:介绍了利用VB 610编程控制电子表格Excel 处理测量数据的编程方法与技巧,从而实现测量数据处理可视化和制表自动化,提高了测量数据处理的效率和准确性。
关键词:VB;Excel;编程;测量数据1 引 言VB 是人们常用的一种高级程序设计语言,利用VB 开发的程序可作为OLE (Object linking and e mbed 2ding )容器。
Excel 作为一种非常普及的办公自动化软件,可以用作OLE 服务器,向外部输出某些属性、方法和事件。
通过OLE 自动化,VB 程序可以调用Excel 的功能,因此,可以利用VB 编程控制Excel 处理测量数据。
本文以公路测量数据处理为例介绍这方面的一些编程方法和技巧。
2 VB 与Excel 链接VB 与Excel 的链接步骤和常用命令如下:(1)打开VB6.0,进入VB 程序设计界面,从下拉菜单“工程”中选择“引用”,进一步选择“M icr os oft Ex 2cel 910Object L ibrary ”,再选择“确定”,表示在工程中要引用Excel 类型库。
(2)在通用对象的声明过程中定义Excel 对象:D i m excel1A s Excel .App licati on D i m excel1Book A s Excel .Work Book D i m excel1Sheet A s Excel .Worksheet(3)创建Excel 对象SET excel1=Create Object (“Excel .App licati on ”)(4)建立一个新Excel 工作簿文件Set excel1Book =excel1.Workbooks ().Add……excel1Book .SaveA s [路径]\“文件名”(5)打开一个旧Excel 工作簿文件Set excel1Book =excel1.Workbooks .Open ([路径]\“文件名”)(6)设置Excel 对象可见(或不可见)excel1.V isible =True (False )(7)增加Excel 工作表,并命名Sheets .AddSet excel1Sheet =excel1Book .Worksheets ("sheet n")Sheets ("Sheet n").SelectSheets ("Sheet n").Na me ="工作表名"(n 表示第n 个工作表)(8)设置Excel 工作表Set excel1Sheet =excel1Book .Worksheets ("工作表名")(9)给工作表单元格(r ow,col )赋值excel1Sheet .Cells (r ow,col )=值或算式(10)读工作表单元格(r ow,col )的值Sheets ("工作表名").Select X =excel1Sheet .Cells (r ow,col )(11)保存Excel 工作簿Active Workbook .Save(12)退出Excelexcel1.Quit(13)交还控制权给Excelset excel1=nothing3 利用VB 程序控制Excel 制表打开Excel,选择“工具\宏(M )\录制新宏(R )”,按常规方法制表,再选择“停止录制”,然后对所录制的内容进行分析,就可以获得绘制各种Excel 表格的方法和命令,将录制的内容复制插入VB 程序中,在执行程序的过程中,将自动生成所设计的Excel 表格。
应用VBA实现电子水准仪数据的自动处理
N= IS r S R , n t (T 1
S R = T m( T ) T1 ri S R1
N = I S r(T 1 n t SR .
)
ห้องสมุดไป่ตู้
() 序 界面 3程
SR T 1=T i ( i h (T 1 e S R )一N ) r m R g t S R ,L n(T 1 ) N = I S r(T 1 nt SR, ) J =V l L f (T 1 a (e t S R ,N — 1 ) ) SR T 1=T i ( i h (T 1 L n(T 1 一N ) r mR g tS R, e S R) ) N= I S r S R . n t (T 1 ) K= V l L f (T 1 a (e t S R ,N 一 1 ) ) S R =T i ( i h ( T 1 L n S R ) N ) T1 rm R gt S R, e (T 1 ) L= V l L f (T 1 a (e t S R ,N 一 1 ) )
N = I S r(T 1 nt SR, )
G= V l L f (T 1 1 ) a (e t S R ,N )
L n I p t #1 S R1 ie nu . T
S Rl = T i S R1 T r m(T )
我 院用于 水准测 量 的 电子 水准 仪 为 T po 0 C其 原始 数据 格式 如下 o cn 1 1 , () 序流 程 图 2程
1引言 随着测 绘技 术进 步 , 电子 水准 仪逐 步 替代 光学 水准 仪成 为 水准测 量 的主 流, 电子 水准 仪即减轻 了水准 测量 的外业 工作量 又在 一定程度 上提 高 了测 量精 度, 特别 是高等 的水 准测 量和 沉降观 测 中更显 其优 越性 , 该仪 器传 出 的原始 但 数据 较为 复杂 , 需要 人 工输 入 、整 理 、平差 计算 才 能 得到 最 终成 果, 样 即 这
电子水准仪自动记录数据生成观测手薄操作说明
电子水准仪自动记录数据生成观测手薄操作说明
1、首先打开文件夹里的DDM6.0.EXE文件运行程序。
2、运行程序后点击工程菜单选择新建工程或直接点击按钮新
建工程,弹出新建工程对话框,在工程位置点击浏览出现选择工程目录对话框,选择你想要存储的位置点击确定,在工程名称里输入你要新建的工程名称点击新建,此时会出现一个运行提示框显示“找不到路径”点击确定关闭新建工程对话框,如果没有选择路径,直接输入名称点击确定,新建的工程项目文件夹将会默认新建在程序文件夹根目录下。
3、选择工程菜单里的打开工程或点击按钮弹出打开工程对话
框,在对话框里会看到我们新建的工程,点击打开工程。
4、选择数据准备菜单里的导入原始观测数据选项或直接点击
按钮弹出导入原始观测数据对话框,选择导入水准数据选项,找到我们需要转换为手薄的原始数据,点击打开然后回到原始观测数据对话框点击确定。
5、选择预处理菜单里的观测手薄选项或点击按钮弹出一个名
称为GMASVBA.XLS的Excel表格。
6、选择Excel表格里的水准观测手薄选项,弹出水准观测手薄对
话框,在此对话框选择好相应的设置,如观测仪器、气温、观测记录等……特别注意在等级选项里只能选择二等,点击生成观测手薄按钮,选择要生成手薄的文件后自动回到水准观测手
薄对话框,然后点击浏览手薄选项,在Excel表格中会出现以转换的观测数据。
7、软件生成的手薄文件会自动存储到我们刚开始新建工程的文件
夹中,然后修改手薄文件名。
8、当新建工程显示太多时我们可以选择工程菜单里面的删除工程
选项或按钮来删除工程,在弹出的对话框中有两个选项,删除按钮是直接删除工程文件夹包括数据,而从工程列表中清除按钮只是清除列表中的工程名称而不删除数据。
基于VB的测量数据有效数字取位程序开发
基于VB的测量数据有效数字取位程序开发作者:唐博来源:《价值工程》2013年第24期摘要:测量数据的有效数字取位时存在舍入问题,合理的舍入法则会减小误差,同时本文根据测量数据量大的特点开发了批量处理的程序。
Abstract: Effective digital position of measurement data has rounding problems. Reasonable rounding rules will reduce the error. This paper develops batch processing program of measurement data according to the characteristics of the large amount of measured data.关键词: VB开发;有效数字取位;测量数据Key words: VB development;effective digital position;measurement data中图分类号:TP311.1 文献标识码:A 文章编号:1006-4311(2013)24-0174-020 引言实际测量工作中经常遇到测量与计算结果数据有效数字的取位问题,取位时会引入误差,若舍入得当则此误差就会变小。
同时由于测量数据量的较大,若单数据进行手工取位则是一项较为繁琐且易出错的过程,因此本文针对此问题进行了程序的开发可以对测量数据进行批量的处理。
1 数据舍入法则1.1 “四舍五入”法则“四舍五入”法则规定,有效数字右一位为4或者小于4时则舍去,有效数字右一位为5或者大于5时则进1。
如数字3.145,若要求保留两位有效数字,由于有效数字右一位为4则取位后为3.1;若要求保留三位有效数字,由于有效数字右一位为5,则取位后为3.15。
但是由于测量数据的特殊性,在其取位时一般不采用此法则而是采用“四舍六入尾留双”法则。
使用VB实现电子水准仪数据的自动化提取
使用VB实现电子水准仪数据的自动化提取赵利江包头铁道职业技术学院 014040摘要:本文通过对徕卡和天宝电子水准仪数据格式的研究,实现了使用VB对电子水准仪记录数据的分线路提取,同时本程序所采用的方法对其他一些电子水准仪的数据提取具有一定的参考价值。
关键词:电子水准仪 VB 分线路数据提取1 程序的开发背景近年来随着技术的不断进步,电子仪器也在飞速发展,其快速、精确的测量的优势越来越受到放大测量人员的亲睐,电子水准仪就是在这一背景下诞生的新一代测量仪器,其在工程界的使用越来越广,尤其是在高精度的高程测量领域应用十分广泛,其中以徕卡和天宝的电子水准仪为主,现如今的一些电子水准处理软件也多以处理这两种水准观测数据为主,一些单位和个人也在进行此类软件的开发和应用,但研究的软件或程序格式转化单一,不能满足不同测量领域的人们的需求,本文针对这一现状,提出了分线路提取关键数据的解决办法。
2 程序开发的关键问题及解决方法2.1 天宝系列电子水准仪(DINI系列)2.1.1 水准数据分线路处理数据处理的一个难点就在于一个水准观测文件中存在多条水准路线,对于天宝系列的数字水准仪来说,其文件内部有关于线路起点“Start-Line”和线路终点“End-Line”的提示信息,但一个主要问题是在“End-Line”之后,可能有“Cont-Line”出现,如果这样那么这条水准路线并未真正结束,天宝电子水准仪的一个记录原则是一个Start-Line和Cont-Line必各对应一个End-Line,这种情况下,如果我们以“Start-Line”和“Cont-Line”标记线路起点,以“End-Line”标记线路终点,那么如果存在“Cont-Line”的情况程序会将一条水准路线分割成两条,这样就导致了数据处理的错误。
原始数据如下For M5|Adr 46|KD1 N4 L1|Sh -1.90278 m |dzFor M5|Adr 47|KD2 N4 6 L1|Db 73.660 m |Df For M5|Adr 48|TO End-Line L1| |For M5|Adr 49|KD1 3 09:06:223 |R 1.34466 m |HD For M5|Adr 50|TO Cont-Line L1| |For M5|Adr 51|KD1 N4 09:08:243 L1|Rb 1.34468 m |HD For M5|Adr 52|KD1 4 09:08:483 L1|Rf 1.37887 m |HD For M5|Adr 53|KD1 4 09:08:583 L1|Rf 1.37889 m |HD 首先,我们编程时会将关键的数据记录项(前后视距、中丝读数)记录到不同的数组里,这样就可以自由的使用数组来实现水准路线的计算。
vb水准
导线测量平差水准测量平差VB程序导线测量, 水准测量, 程序符合导线平差程序如下:Const pi As Double = 3.14159265358979 Private Sub Command1_Click() Form8.Hide mj = Val(Text1.Text) If list1.Text = "等精度" Then ma = Val(Text2.Text) mb = Val(Text3.Text) End If If Opt1.Value Then ij = 1 ElseIf Opt2.V alue Then ij = Val(Text4.Text) End If CommonDialog1.ShowOpen On Error GoTo errorhandler Open CommonDialog1.FileName For Input As #1 If Form8.Caption = "闭合导线" Then Input #1, bi1, bi2 End If Dim a1() Do n1 = n1 + 1 ReDim Preserve a1(1 To n1) Input #1, a1(n1) Loop Until Left(a1(n1), 1) = "*" n1 = (n1 - 1) / 3 ReDim Preserve a1(1 To 3 * n1) Dim c() Do t = t + 1 ReDim Preserve c(1 To t) Input #1, c(t) Loop Until Left(c(t), 1) = "*" t = t - 1 ReDim Preserve c(1 To t) Dim b1() If list1.Text = "等精度" Then '等精度时,取角度和距离观测值Do n2 = n2 + 1 ReDim Preserve b1(1 To n2) Input #1, b1(n2) Loop Until Left(b1(n2), 1) = "*" n2 = (n2 - 1) / 4 ReDim Preserve b1(1 To 4 * n2) Dim d1() Do While Not EOF(1) n3 = n3 + 1 ReDim Preserve d1(1 To n3) Input #1, d1(n3) Loop n3 = n3 / 3 ElseIf list1.Text = "不等精度" Then '不等精度时,取角度和距离观测值以及中误差Dim b5() Do n2 = n2 + 1 ReDim Preserve b1(1 To 4 * n2), b5(1 To n2) Input #1, b1(4 * n2 - 3), b1(4 * n2 - 2), b1(4 * n2 - 1), b1(4 * n2), b5(n2) Loop Until Left(b1(4 * n2 - 3), 1) = "*" Dim d4() ReDim d1(1 To 3), d4(1 To 1) d1(1) = b1(4 * n2 - 2): d1(2) = b1(4 * n2 - 1) d1(3) = b1(4 * n2): d4(1) = b5(n2) n2 = n2 - 1 ReDim Preserve b1(1 To 4 * n2), b5(1 To n2) n3 = n3 + 1 Do While Not EOF(1) n3 = n3 + 1 ReDim Preserve d1(1 To 3 * n3), d4(1 To n3) Input #1, d1(3 * n3 - 2), d1(3 * n3 - 1), d1(3 * n3), d4(n3) Loop End If Close #1 n6 = 0 Dim ax1() If Form8.Caption = "附有条件的导线网" Then '如是附有条件的导线,取条件CommonDialog1.ShowOpen Open CommonDialog1.FileName For Input As #2 Do While Not EOF(2) n6 = n6 + 1 ReDim Preserve ax1(1 To n6) Input #2, ax1(n6) Loop n6 = n6 / 4 Close #2 End If For i = 1 To n2 If b1(4 * i - 3) Like b1(4 * i - 2) Or b1(4 * i - 3) Like b1(4 * i - 1) Or b1(4 * i - 2) Like b1(4 * i - 1) Then MsgBox "角度观测中,第" & i & "行存在重复点名!", , "错误" Exit Sub End If Next For i = 1 To n3 If d1(3 * i - 2) Like d1(3 * i - 1) Then MsgBox "边长观测中,第" & i & "行存在重复点名!", , "错误" Exit Sub End If Next Dim b11(), d11() ReDim b11(1 To 4 * n2), d11(1 To 3 * n3) For i = 1 To n2 For i1 = 1 To t If b1(4 * i - 3) Like c(i1) Then b11(4 * i - 3) = i1 + n1 GoTo 1 End If Next For i1 = 1 To n1 If b1(4 * i - 3) Like a1(3 * i1 - 2) Then b11(4 * i - 3) = i1 GoTo 1 End If Next int8 = MsgBox("角度观测中,第" & i & "行存在错误测站点" & b1(4 * i - 3) & "!", , "错误!") If int8 = vbOK Then Exit Sub 1: For i1 = 1 To t If b1(4 * i - 2) Like c(i1) Then b11(4 * i - 2) = i1 + n1 GoTo 2 End If Next For i1 = 1 To n1 If b1(4 * i - 2) Like a1(3 * i1 - 2) Then b11(4 * i - 2) = i1 GoTo 2 End If Next int8 = MsgBox("角度观测中,第" & i & "行存在错误后视点" & b1(4 * i - 2) & "!", , "错误!") If int8 = vbOK Then Exit Sub 2: For i1 = 1 To t If b1(4 * i - 1) Like c(i1) Then b11(4 * i - 1) = i1 + n1 GoTo 3 End If Next For i1 = 1 To n1 If b1(4 * i - 1) Like a1(3 * i1 - 2) Then b11(4 * i - 1) = i1 GoTo 3 End If Next int8 = MsgBox("角度观测中,第" & i & "行存在错误前视点" & b1(4 * i - 1) & "!", , "错误!") If int8 = vbOK Then Exit Sub 3: b11(4 * i) = b1(4 * i) Next For i = 1 To n3 For i1 = 1 To t If d1(3 * i - 2) Like c(i1) Then d11(3 * i - 2) = i1 + n1 GoTo 4 End If Next For i1 = 1 To n1 If d1(3 * i - 2) Like a1(3 * i1 - 2) Then d11(3 * i - 2) = i1 GoTo 4 End If Next int8 = MsgBox("边长观测中,第" & i & "行存在错误点" & d1(3 * i - 2) & "!", , "错误!") If int8 = vbOK Then Exit Sub 4: For i1 = 1 To t If d1(3 * i - 1) Like c(i1) Then d11(3 * i - 1) = i1 + n1 GoTo 5 End If Next For i1 = 1 To n1 If d1(3 * i - 1) Like a1(3 * i1 - 2) Then d11(3 * i - 1) = i1 GoTo 5 End If Next int8 = MsgBox("边长观测中,第" & i & "行存在错误点" & d1(3 * i - 1) & "!", , "错误!") If int8 = vbOK Then Exit Sub 5: d11(3 *i) = d1(3 * i) Next Dim x0() If Form8.Caption = "附合导线" Then ReDim x0(1 To 2 * t + 2) x0() = 附合导线(a1(), b11(), d11(), t) fx = x0(2 * t + 1) '坐标闭合差fy = x0(2 * t + 2) fs = Sqr(fx * fx + fy * fy) fx = Format(fx * 100, "0.0") fy = Format(fy * 100, "0.0") s = 0 For i = 1 To n3 '全长相对闭合差s = s + d1(3 * i) Next fs = Int(s / fs) For i = 1 To n2 '方位闭合差If b11(4 * i - 3) <= n1 And b11(4 * i - 2) <= n1 Then i1 = b11(4 * i - 3): i2 = b11(4 * i - 2) x1 = a1(3 * i1 - 1): y1 = a1(3 * i1) x2 = a1(3 * i2 - 1): y2 = a1(3 * i2) aq = xlu(x2, y2, x1, y1) ElseIf b11(4 * i - 3) <= n1 And b11(4 * i - 1) <= n1 Then i1 = b11(4 * i - 3): i2 = b11(4 * i - 1) x1 = a1(3 * i1 - 1): y1 = a1(3 * i1) x2 = a1(3 * i2 - 1): y2 = a1(3 * i2) az = xlu(x1, y1, x2, y2) End If bb = bb + hu(b1(4 * i)) Next bb = (aq + bb - n2 * pi - az) * 206264.806247096 bb = Format(bb, "0.00") bb1 = mj * Sqr(n2) bb1 = Format(bb1, "0.00") ReDim Preserve x0(1 To 2 * t) ElseIf Form8.Caption = "闭合导线" Then ReDim x0(1 To 2 * t + 2) x0() = 附合导线(a1(), b11(), d11(), t) fx = x0(2 * t + 1) '坐标闭合差fy = x0(2 * t + 2) fs = Sqr(fx * fx + fy * fy) fx = Format(fx * 100, "0.0") fy = Format(fy * 100, "0.0") s = 0 For i = 1 To n3 s = s + d1(3 * i) Next fs = Int(s / fs) For i = 1 To n2 bb = bb + hu(b1(4 * i)) Next If bi1 = 0 Then '方位闭合差If bi2 = 0 Then bb = (bb - (n2 - 2) * pi) * 206264.806247096 ElseIf bi2 = 1 Then bb = (bb - (n2 + 2) * pi) * 206264.806247096 End If ElseIf bi1 = 1 Then For i = 1 To n2 If b11(4 * i - 3) <= n1 And b11(4 * i - 2) <= n1 Then i1 = b11(4 * i - 3): i2 = b11(4 * i - 2) x1 = a1(3 * i1 - 1): y1 = a1(3 * i1) x2 = a1(3 * i2 - 1): y2 = a1(3 * i2) aq = xlu(x2, y2, x1, y1) End If Exit For Next If bi2 = 0 Then bb = (bb - aq - (n2 - 3) * pi) * 206264.806247096 ElseIf bi2 = 1 Then bb = (bb - aq - (n2 + 1) * pi) * 206264.806247096 End If End If bb1 = mj * Sqr(n2) bb1 = Format(bb1, "0.00") ReDim Preserve x0(1 To 2 * t) ElseIf Form8.Caption = "导线网平差" Then ReDim ax1(0) ReDim x0(1 To 2 * t) x0() = 导线网(a1(), b11(), d11(), ax1(), t) Else ReDim x0(1 To 2 * t) x0() = 导线网(a1(), b11(), d11(), ax1(), t) End If mj1 = mj For ii = 1 To ij Dim b2(), l2(), p() ReDim Preserve b2(1 To n2, 1 To 2 * t), l2(1 To n2), p(1 To n2 + n3) l2() = 角常系数1(a1(), b11(), x0()) b2() = 方系数2(a1(), b11(), x0()) Dim b3(), l3() ReDim b3(1 To n3, 1 To 2 * t), l3(1 To n3) b3() = 边系数2(a1(), d11(), x0()) l3() = 边常数项1(a1(), d11(), x0()) Dim b(), l() ReDim Preserve b(1 To n2 + n3, 2 * t), l(1 To n2 + n3) For j = 1 To 2 * t For i = 1 To n2 If b2(i, j) = "" Then b2(i, j) = 0 End If b(i, j) = 10 ^ 4 * b2(i, j) / 206264.806247096 If list1.Text = "等精度" Then p(i) = 1 ElseIf list1.Text = "不等精度" Then p(i) = mj1 * mj1 / (b5(i) * b5(i)) End If l(i) = 10 ^ 4 * l2(i) / 206264.806247096 Next For i = 1 To n3 If b3(i, j) = "" Then b3(i, j) = 0 End If b(i + n2, j) = b3(i, j) If list1.Text = "等精度" Then p(i + n2) = 2350.4 * mj1 * mj1 / ((ma + mb * d1(3 * i) / 1000) * (ma + mb * d1(3 * i) / 1000)) ElseIf list1.Text = "不等精度" Then p(i + n2) = 2350.4 * mj1 * mj1 / (d4(i) * d4(i)) End If l(i + n2) = l3(i) Next Next If Form8.Caption = "附有条件的导线网" Then '如是附有条件的导线,计算系数Dim ax(), lx() ReDim ax(1 To 2 * t, 1 To n6), lx(1 To n6) For i = 1 To n6 For i1 = 1 To n1 If ax1(4 * i - 3) Like a1(3 * i1 - 2) Then x1 = a1(3 * i1 - 1): y1 = a1(3 * i1) GoTo 111 End If Next i1 = i1 - 1 For i2 = 1 To t If ax1(4 * i - 3) Like c(i2) Then x1 = x0(2 * i2 - 1): y1 = x0(2 * i2) GoTo 111 End If Next 111: For i3 = 1 To n1 If ax1(4 * i - 2) Like a1(3 * i3 - 2) Then x1 = a1(3 * i3 - 1): y1 = a1(3 * i3) GoTo 112 End If Next i3 = i3 - 1 For i4 = 1 To t If ax1(4 * i - 2) Like c(i4) Then x2 = x0(2 * i4 - 1): y2 = x0(2 * i4) GoTo 112 End If Next 112: ss1 = Sqr((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)) x3 = x2 - x1: y3 = y2 - y1 If ax1(4 * i) = 0 Then '如是方位角时,计算系数lx(i) = 10000 * (xlu(x1, y1, x2, y2) - hu(ax1(4 * i - 1))) If ax1(4 * i - 3) <> a1(3 * i1 - 2) Then ax(2 * i2 - 1, i) = 10000 * y3 / (ss1 * ss1) ax(2 * i2, i) = -10000 * x3 / (ss1 * ss1) End If If ax1(4 * i - 2) <> a1(3 * i3 - 2) Then ax(2 * i4 - 1, i) = -10000 * y3 / (ss1 * ss1) ax(2 * i4, i) = 10000 * x3 / (ss1 * ss1) End If ElseIf ax1(4 * i) = 1 Then '如是距离,计算系数lx(i) = ss1 - ax1(4 * i - 1) If ax1(4 * i- 3) <> a1(3 * i1 - 2) Then ax(2 * i2 - 1, i) = -x3 / ss1: ax(2 * i2, i) = -y3 / ss1 End If If ax1(4 * i -2) <> a1(3 * i3 - 2) Then ax(2 * i4 - 1, i) = x3 / ss1: ax(2 * i4, i) = y3 / ss1 End If End If Next Fori = 1 To 2 * t For j = 1 To n6 If ax(i, j) = "" Then ax(i, j) = 0 End If Next Next End If Dim u(), nni(), xx(), nni1() ReDim u(1 To 2 * t), nni(1 To t * (2 * t + 1)) nni() = 法系数(b(), p()) u() = 常数项(b(), p(), l()) If Form8.Caption = "附有条件的导线网" Then ReDim nni1(1 To (2 * t + n6) * (2 * t + n6 + 1) / 2) nni1() = 附有条件的法方程(nni(), ax()) ReDim Preserve u(1 To 2 * t + n6) For i = 1 To n6 u(2 * t + i) = lx(i) Next nni1() = ni(nni1(), 2 * t + n6) xx() = bx(nni1(), u()) ReDim Preserve xx(1 To 2 * t) nni() = 条件从有到无(nni1(), t, n6) Else nni() = ni(nni(), 2 * t) xx() = bx(nni(), u()) End IfFor i = 1 To 2 * tx0(i) = x0(i) + xx(i)NextDim v(), fz()ReDim v(1 To n2 + n3), fz(1 To 2 * t)v() = 改正数(b(), xx(), l())Dim v1(), v2()ReDim v1(1 To n2), v2(1 To n3)For i = 1 To n2v1(i) = v(i) * 206264.806247096 / 10000m1 = m1 + v1(i) * v1(i)Nextm1 = Sqr(m1 / (n2 - 1)): m1 = Format(m1, "0.00")For i = 1 To n3v2(i) = v(i + n2)Nextmm0 = 单位权中误差(v(), p())mm0 = Sqr(mm0 / (n2 + n3 - 2 * t + n6))m0 = mm0 * 206264.806247096 / 10000If Optd2.Value Thenmj1 = m0End IfNextDim vas1 As String * 5, vas2 As String * 5, vas3 As String * 5, vas4 As String * 20Dim vas5 As String * 10, vas6 As String * 20txt = txt & Chr(13) & Chr(10)txt = txt & "导线平差成果表" & Chr(13) & Chr(10)txt = txt & Chr(13) & Chr(10)txt = txt & "角度观测成果表" & Chr(13) & Chr(10)txt = txt & Chr(13) & Chr(10)txt = txt & "-------------------------------------------------------------------" & Chr(13) & Chr(10)txt = txt & "测站" & Space(1) & "后视" & Space(1) & "前视" & Space(1) & "方向观测值(°′″)" & Space(1) & "改正数(″)" & Space(1) & "方向平差值(°′″)" & Space(1) & Chr(13) & Chr(10)Dim f(), f1(), f2()ReDim f(1 To n2)f() = 角度平差值(v1(), b1())For i = 1 To n2ReDim f1(1 To 3), f2(1 To 3)f1() = 度分离(b1(4 * i))v1(i) = Format(v1(i), "0.00")f2() = 度分离(f(i))LSet vas1 = b1(4 * i - 3)LSet vas2 = b1(4 * i - 2)LSet vas3 = b1(4 * i - 1)LSet vas4 = f1(1) & Space(1) & f1(2) & Space(1) & f1(3)LSet vas5 = v1(i)LSet vas6 = f2(1) & Space(1) & f2(2) & Space(1) & f2(3)txt = txt & vas1 & vas2 & vas3 & vas4 & vas5 & vas6 & Chr(13) & Chr(10)Nexttxt = txt & "---------------------------------------------------------------------" & Chr(13) & Chr(10)txt = txt & Chr(13) & Chr(10)txt = txt & "边长观测成果表" & Chr(13) & Chr(10)txt = txt & Chr(13) & Chr(10)txt = txt & "---------------------------------------------------------------------" & Chr(13) & Chr(10) Dim bz()ReDim bz(1 To n3 + 3)bz() = 边长相对中误差(mm0, nni(), b3(), d1())Dim bc()ReDim bc(1 To n3)bc = 边长平差值(v2(), d1())txt = txt & "起点" & Space(1) & "终点" & Space(1) & "观测边长(m)" & Space(1) & "改正数(mm)" & "边长平差值(m)" & Space(1) & "边长观测值的相对中误差" & Chr(13) & Chr(10) Dim vas7 As String * 12, vas8 As String * 12For i = 1 To n3v2(i) = v2(i) * 1000: v2(i) = Format(v2(i), "0.0")LSet vas1 = d1(3 * i - 2)LSet vas2 = d1(3 * i - 1)LSet vas7 = d1(3 * i)LSet vas5 = v2(i)LSet vas8 = bc(i)LSet vas6 = "1:" & Space(1) & bz(i)txt = txt & vas1 & vas2 & vas7 & vas5 & vas8 & vas6 & Chr(13) & Chr(10)Nexttxt = txt & "--------------------------------------------------------------------" & Chr(13) & Chr(10)txt = txt & Chr(13) & Chr(10)txt = txt & "点位误差及误差椭圆" & Chr(13) & Chr(10)txt = txt & Chr(13) & Chr(10)txt = txt & "---------------------------------------------------------------------------------" & Chr(13) & Chr(10)txt = txt & "点号" & Space(1) & "误差X(mm)" & Space(1) & "误差Y(mm)" & Space(1) & "点位误差(mm)" & Space(1) & "椭圆长轴E(mm)" & Space(1) & "椭圆短轴(mm)" & Space(1) & "方位角(°′″)" & Chr(13) & Chr(10)Dim dw(), e()ReDim dw(1 To 3 * t), e(1 To 3 * t)dw() = 点位误差(mm0, t, nni())e() = 点位误差椭圆(mm0, t, nni())Dim vas9 As String * 10, vas10 As String * 10, vas11 As String * 12, vas12 As String * 12For i = 1 To tf1() = 度分离(e(3 * i))LSet vas1 = c(i)LSet vas9 = dw(3 * i - 2)LSet vas10 = dw(3 * i - 1)LSet vas7 = dw(3 * i)LSet vas8 = e(3 * i - 2)LSet vas11 = e(3 * i - 1)LSet vas12 = f1(1) & Space(1) & f1(2) & Space(1) & f1(3)txt = txt & vas1 & vas9 & vas10 & vas7 & vas8 & vas11 & vas12 & Chr(13) & Chr(10)Nexttxt = txt & "---------------------------------------------------------------------------------" & Chr(13) & Chr(10)txt = txt & Chr(13) & Chr(10)txt = txt & "坐标成果表" & Chr(13) & Chr(10)txt = txt & Chr(13) & Chr(10)txt = txt & "----------------------------------------------" & Chr(13) & Chr(10)txt = txt & "点号" & Space(2) & "坐标X(m)" & Space(12) & "坐标Y(m)" & Space(11) & Chr(13) & Chr(10)For i = 1 To n1LSet vas1 = a1(3 * i - 2)LSet vas4 = a1(3 * i - 1)LSet vas6 = a1(3 * i)txt = txt & vas1 & vas4 & vas6 & Chr(13) & Chr(10)NextFor i = 1 To tx0(2 * i - 1) = Format(x0(2 * i - 1), "0.0000"): x0(2 * i) = Format(x0(2 * i), "0.0000")LSet vas1 = c(i)LSet vas4 = x0(2 * i - 1)LSet vas6 = x0(2 * i)txt = txt & vas1 & vas4 & vas6 & Chr(13) & Chr(10)Nextm0 = Format(m0, "0.0")txt = txt & "---------------------------------------------" & Chr(13) & Chr(10)txt = txt & Chr(13) & Chr(10)txt = txt & "整网精度评定" & Chr(13) & Chr(10)txt = txt & Chr(13) & Chr(10)Dim vass As String * 20, vas17 As String * 20txt = txt & "----------------------------------------------" & Chr(13) & Chr(10) LSet vass = "导线全长:"LSet vas17 = bz(n3 + 3) & "Km"txt = txt & vass & vas17 & Chr(13) & Chr(10)LSet vass = "验前测角中误差:"LSet vas17 = mj & "″"txt = txt & vass & vas17 & Chr(13) & Chr(10)LSet vass = "验后测角中误差:"LSet vas17 = m1 & "″"txt = txt & vass & vas17 & Chr(13) & Chr(10)If Form8.Caption = "附合导线" ThenLSet vass = "实测角度闭合差:"LSet vas17 = bb & "″"txt = txt & vass & vas17 & Chr(13) & Chr(10)LSet vass = "允许角度闭合差:"LSet vas17 = bb1 & "″"txt = txt & vass & vas17 & Chr(13) & Chr(10)LSet vass = "坐标闭合差(cm):"LSet vas17 = "fx=" & fx & Space(1) & "fy=" & fytxt = txt & vass & vas17 & Chr(13) & Chr(10)LSet vass = "坐标增量相对差:"LSet vas17 = "1:" & fstxt = txt & vass & vas17 & Chr(13) & Chr(10)ElseIf Form8.Caption = "闭合导线" Thenbb = Format(bb, "0.0")LSet vass = "角度闭合差:"LSet vas17 = bb & "″"txt = txt & vass & vas17 & Chr(13) & Chr(10)LSet vass = "允许角度闭合差:"LSet vas17 = bb1 & "″"txt = txt & vass & vas17 & Chr(13) & Chr(10)LSet vass = "坐标闭合差(cm):"LSet vas17 = "fx=" & fx & Space(1) & "fy=" & fytxt = txt & vass & vas17 & Chr(13) & Chr(10)LSet vass = "坐标增量相对差:"LSet vas17 = "1:" & fstxt = txt & vass & vas17 & Chr(13) & Chr(10)End IfLSet vass = "单位权中误差:"LSet vas17 = m0 & "″"txt = txt & vass & vas17 & Chr(13) & Chr(10)LSet vass = "最弱边相对中误差" & "(" & d1(3 * bz(n3 + 1) - 2) & "-" & d1(3 * bz(n3 + 1) - 1) & ")" & ":"LSet vas17 = "1:" & bz(n3 + 2)txt = txt & vass & vas17 & Chr(13) & Chr(10)Form1.Text1.Alignment = 2Form1.Text1.Text = txterrorhandler:If Err.Number = 75 ThenExit SubEnd If100: End SubPrivate Sub list1_Click()If list1.Text = "不等精度" Then '等精度和不等精度的互换Label1.Caption = "单位权中误差(″)"Text2.BackColor = &H80000004Text2.Locked = TrueText3.BackColor = &H80000004Text3.Locked = TrueElseIf list1.Text = "等精度" ThenLabel1.Caption = "测角中误差(″)"Text2.BackColor = &H80000005Text2.Locked = FalseText3.BackColor = &H80000005Text3.Locked = FalseEnd IfEnd SubPrivate Sub Opt1_Click()If Opt1.Value ThenFrame3.Enabled = FalseLabel5.Enabled = FalseText4.BackColor = &H80000004Text4.Text = 1Text4.Locked = TrueOptd1.Enabled = FalseOptd2.Enabled = FalseEnd IfEnd SubPrivate Sub Opt2_Click()If Opt2.Value ThenFrame3.Enabled = TrueLabel5.Enabled = TrueText4.BackColor = &H80000005 Text4.Locked = FalseOptd1.Enabled = TrueOptd1.Value = TrueOptd2.Enabled = TrueEnd IfEnd SubPrivate Function 查错(a1(), n1, n2)End Function[em1][em1][em1]。
应用VB语言实现数字水准仪观测数据向Excel表的转换
应用VB语言实现数字水准仪观测数据向Excel表的转换摘要:本文以天宝DiNI03数字水准仪为例讲述了利用数字水准仪内存功能存储野外采集的数据资料,下载至计算机后,经Visual Basic程序转换成Microsoft Excel表格文件的过程。
关键词:工程测量数字水准仪Excel数据格式转换1.概述传统水准测量的作业方式需要人肉眼读数、手工记录,工作较繁琐,已无法满足行业对测量成果的程序化、标准化、信息化、快速化的需求。
为了应对这种需求,提高现行水准作业的工作效率和成果精度,数字水准仪应运而生。
它代替精密光学水准仪进行作业,即节省了人力,也大大提高了作业效率。
数字水准仪是在自动安平水准仪的基础上发展起来的,采用条纹编码标尺和数字影像处理原理,用CCD图像传感器替代观测员的肉眼,将望远镜像面上的标尺成像转换成数字信息,再利用数字图像处理技术识别标尺条码进而获得标尺读数和视距。
它的出现是水准测量技术一次大的突破。
目前市场占主导地位的数字水准仪有天宝的DiNi系列、徕卡的DNA系列、索佳的SDL系列、拓普康的DL系列。
观测存储的数据输出后,大都不是可以直接用于计算的数据格式,而是夹杂着许多冗余信息的文本文件。
针对这一情况,应用VB语言编制转换程序,很容易实现数字水准仪观测数据的提取,并将其转换成能易被阅读,便于使用的Excel表格数据。
Excel 是Microsoft Office办公组件之一,为用户提供表格应用,有各种公式和函数,能处理数据和文本的公式、逻辑公式、数组公式、图标及数据透视表、宏及VBA 的自定义函数。
这些工具使表格计算工作变得更加简单、方便、明了。
2.基本构思由于在数字水准仪的外业记录数据格式中往往会伴随许多无用的信息,那么怎样跳过无用的信息,将有用的信息读出并写入Excel相应表格中?这就是本文所要解决的问题—通过查找文件中的关键字如:观测模式、需复测数据、后视、前视、结束符和文件结束符等来提取有用数据,将有用的信息逐一提取并按目标文件的要求格式写入Excel表格,再运用适当的循环语句来实现文件的正确读写。
用VBA自动计算水准测量的原始数据
用VBA自动计算水准测量的原始数据2007-02-09 17:51:30| 分类:默认分类| 标签:水准仪原是数据处理计算 exce vba |字号大中小订阅Option ExplicitPrivate Sub gaocheng() '数据处理代码Dim i, K, PointerDim I_first As Integer, I_end As IntegerI_first = Sheet1.Range("H" & 4).ValueI_end = Sheet1.Range("H" & 5).Value'开始行要为转点下一行,且转点前一行高程数据已经计算好.If Sheet1.Range("D" & 1).Value = "1" ThenPointer = MsgBox("数据已经存在,确定覆盖吗?", vbYesNo + vbInformation, "继续?")If Pointer = vbNo ThenExit SubEnd IfEnd IfK = Sheet1.Range("B" &I_first - 1).Value + Sheet1.Range("C" &I_first - 1).ValueFor i = I_first To I_endIf Trim(Sheet1.Range("A" & i).Value) = "ZD" ThenK = Sheet1.Range("B" & i).Value + Sheet1.Range("C" & i - 1).Value ElseSheet1.Range("C" & i).Value = K - Sheet1.Range("B" & i).ValueEnd IfNext iMsgBox "I LOVE 'VBA'" &vbCrLf& "CopyRight by ZZL" &vbCrLf& "liulangr110@", vbInformation, "高程计算完毕"Sheet1.Range("D" & 1).Value = "1"End SubPrivate Sub Clear() '清除代码Dim iFor i = Sheet1.Range("H" & 4).Value To Sheet1.Range("H" & 5).ValueSheet1.Range("C" & i).Value = EmptyNext iSheet1.Range("D" & 1).Value = EmptyEnd SubSub Macro1() '删除导线点行Dim iFor i = 1 To 445If Left(Trim(Sheet2.Range("A" & i).Value), 1) = "D" ThenRows(i & ":" & i).SelectSelection.Delete SHIFT:=xlUpEnd IfNext iMsgBox "OK"End SubSub Macro2() '删除转点行Dim iFor i = 1 To 445If Sheet2.Range("A" & i).Value = "ZD" Or Trim(Sheet2.Range("A" & i).Value) = "" Then Rows(i & ":" & i).SelectSelection.Delete SHIFT:=xlUpEnd IfNext iEnd Sub。
基于VB的电子水准数据转换
( )简 单 面 、 杂 面 、 空 面与 镂 空相 邻 。在 a 复 漏
相 邻 的情 况 下 , 只需 要 判 断镂 空 面 的 sl oi d面 与 其 它面 的相 互关 系 , oe面不进 行判 断 。 hl
维普资讯
・
2 ・ 2
浙 江 测绘 2 0 0 7年 第 3期
基于 V B的 电子水 准 数 据 转 换
陈 炎钊 , 连 连 王 莉 娜 毛 ,
( . 浙江省 第一测 绘 院, 州 3 0 1 ; 2 1 杭 1 0 2 .杭 州新成 测绘有 限公 司 , 州 3 0 1 ) 杭 1 0 2
送 , 第一 步可省 略 。接 收后 的数 据 保存 为常 用 的 此
文本 ( tt格式 , 后续工作 提供 了便利 。 .x) 为
( )原 始数据 文件 的打开 2 由于从 仪器下 载 的 电子水 准数 据是 文 中格 式 , 即一个顺 序 文件 , 因此 , 用下述 方法 打开 : 可 Op n C: 桌 面\ e“ \ AB线”F rip t #1 o u n As
的数 据格 式 不 尽 相 同 , 须 经 过 摘 录 、 辑 、 算 , 必 编 概
方 能用 于平差计 算 , D a 3与 D n1 如 n0 ii2就 是两种 不
同型号 的数 据格 式 。为此 , 者 编制 了一款 数 据 自 笔
动摘 录转换 软件 , 流程 图如 图 1 :
水准观测数据采集
值 以文本形 式 ( tt保存 到硬 盘 中 。 .x)
路 面 a t n ssr g i
End t p y e
( )保 存 时用动 画界 面指示 进度 。 9
定 义动 态结构 数组变 量 :
基于VB与Matlab的测量数据处理技术研究
基于VB与Matlab的测量数据处理技术研究赵健赘【期刊名称】《测绘与空间地理信息》【年(卷),期】2012(035)010【摘要】Based on the research of VB and Matlab integration methods using DDE, MatrixVB, ActiveX and Matlab COM technology, this paper puts forward the methods to process measurement data and designs multi - linear regression analysis and elevation data pro- cessing system based on the technologies, and realizes the parameter calculation, variance analysis, significance test, and the predic- tion of regression analysis, the closed loop inspection, evaluation accuracy, and the result conversion functions of elevation data pro- cessing system. The research indicates that the methods are highly effective, with short developing cycle, and can solve various kinds of problems in the process of the independent development. Moreover, the results of the methods are reliable, and have highly practi- cal applicability. The methods can provide technical supports for scientific research, teaching, and application, so the methods de- serve to be spread and practiced.%在研究利用DDE、MatrixVB插件、ActiveX和Matlab COM 技术实现VB与Matlab集成的基础上,提出利用集成技术进行测量数据处理的方法;设计了基于该技术的多元线性回归分析和高程数据处理系统,实现了回归分析的参数计算、方差分析、显著性检验和回归预测,及高程数据处理的闭合环检验、精度评定、平差结果转换等功能;研究表明该方法可提高效率、缩短研发周期、解决独立开发过程中存在的各种问题,且结果可靠,具有较强的实用性,能为科研、教学和生产应用提供技术支持,值得推广应用。
基于 VB 的水准网经典平差系统的开发与应用
基于 VB 的水准网经典平差系统的开发与应用张广宇;欧阳兆灼;那福超;杨帆【摘要】根据水准网数据特征,按已知数据、观测数据以及水准网边和点的相对位置关系设计了数据组织结构。
基于间接平差模型,在VB环境下设计开发了水准网平差系统。
选取了一组水准网数据,计算了水准网的高程平差值、高程中误差、高差平差值和高差中误差,并与已有计算结果作了对比,验证了程序编制的正确性和系统运行的可靠性。
%On the basis of the data structuredesigned ,according to the known data ,observation data and the relation of points and lines by the characteristics of the leveling net .Using VB to code ,designes and developes an adjustment system of levelling net ,based on indirect adjustment model .Choosing a set of levelling net data to calculate adjusted value and mean square error of elevation and elevation difference ,and makes a comparison with existing results ,and verification the validity of the programming and the reliability of the system .【期刊名称】《中国矿业》【年(卷),期】2014(000)0z2【总页数】4页(P354-357)【关键词】水准网;间接平差;中误差;VB;高差【作者】张广宇;欧阳兆灼;那福超;杨帆【作者单位】中国地质大学北京地球科学与资源学院,北京100083; 中国地质调查局沈阳地质调查中心,辽宁沈阳110034;中国地质调查局沈阳地质调查中心,辽宁沈阳110034;中国地质调查局沈阳地质调查中心,辽宁沈阳110034;中国地质调查局沈阳地质调查中心,辽宁沈阳110034【正文语种】中文【中图分类】P207水准测量是建立高程控制的一种常规方法,也是高精度沉降监测的主要手段之一。
基于VB2008的电子水准测量数据处理程序的设计与实现
基于VB2008的电子水准测量数据处理程序的设计与实现蒲朝旭;余代俊【期刊名称】《测绘》【年(卷),期】2011(000)004【摘要】本文主要介绍利用Microsoft Visual Basic 2008编写电子水准测量数据处理程序的方法,并通过对编写的电子水准测量数据处理程序的实际应用,证明该应用程序可以有效解决电子水准测量的数据传输、数据编辑、数据处理、数据整理、折线图绘制、测量等级检验等实际问题,且具有用户自定义和批处理功能,能有效地减少内业数据处理的工作量。
%This essay introduces the method of the electronic level data processing program with Visual basic 2008.It proves that this application can not only solve practical problems effectively,such as data transfer,data editing,data processing,data classify,line drawing,measuring levels testing,but also provides user-defined and batch processing,so it can reduce the interior work.【总页数】4页(P171-174)【作者】蒲朝旭;余代俊【作者单位】成都理工大学地球科学学院测绘工程系,四川成都610059;成都理工大学地球科学学院测绘工程系,四川成都610059【正文语种】中文【中图分类】P224【相关文献】1.基于Android平台的四等水准测量电子手簿的设计与实现 [J], 王凯;张卫民;赵立谦;隋宛辰;梁勇2.基于PDA的水准测量电子记簿软件设计与实现 [J], 姜庆峰;程喆;卢群3.水准测量电子手簿设计与实现 [J], 臧立娟;李俊;张元元4.基于Python的电子水准数据处理程序的设计与实现 [J], 白雪;彭晨5.DINI电子水准记录数据处理程序设计与实现 [J], 方秀友因版权原因,仅展示原文概要,查看原文内容请购买。
基于EXCELVBA电子水准仪记录数据标准化处理
基于EXCEL VBA电子水准仪记录数据标准化处理王小刚,高德恒(中水珠江规划勘测设计有限公司,广东广州510610)摘要:根据水准测量规范中水准测量的相关要求,基于EXCEL VBA制定电子水准仪数据处理程序设计思想,并对程序具有测段提取、错误剔除、粗差探测、测站温度改正、尺长改正、标准化成果表生成及观测指标统计等功能进行了详细介绍。
关键词:电子水准仪;数据处理;EXCEL VBA0引言电子水准仪是以自动安平水准仪为基础,在望远镜光路中增加了分光镜和探测器(CCD),并采用条码标尺和图像处理电子系统而构成的光机电测一体化的高科技产品。
它与传统仪器相比有以下特点:a)读数客观,不存在误读误记问题。
b)精度高、视线高和视距读数都是采用大量条码分划图像处理后的结果,削弱了标尺分划误差的影响。
多数仪器都有进行多次读数取平均的功能,可以削弱外界条件影响。
c)速度快,由于省去了读数、报数、听记等时间以及人为出错的重测次数,测量时间与传统仪器相比可节省1/2左右。
d)效率高,只需调焦和按键就可以自动记录、计算和检核数据,减轻了劳动强度,后处理可实现内外业一体化。
基于上述特点,电子水准仪受广大测量工作者青睐,成为今后水准测量的主流发展方向。
但是,由于目前电子水准仪都是进口产品,其操作程序及成果输出格式与我国现行水准测量规范要求不一致。
针对这一问题,作者通过分析DINI12电子水准仪记录的数据,采用EXCEL VBA技术开发了记录数据标准化处理程序。
1电子水准仪记录格式分析DINI12电子水准仪是美国天宝公司的高科技产品,目前国内应用比较广泛。
这款水准仪的记录是由仪器生产商固化在仪器内部的程序完成的。
路线测量开始需设置好必要的参数、观测限差和观测模式,即可进行水准观测,并以明码文件形式自动记录所有观测数据。
记录数据下载到计算机后,其内容和格式是固定的,图1为DINI12电子水准仪的原始记录数据。
从图1可以看到DINI12记录的数据包含很多信息,很不直观。
利用VB编程实现电子水准测量手簿的自动检查
利用VB编程实现电子水准测量手簿的自动检查作者:王凯来源:《科技创新导报》2017年第30期摘要:随着现代测绘科技、仪器的发展进步,测绘技术装备发生了革命性变化。
电子水准仪逐渐取代了传统光学水准仪,在水准测量作业中发挥着越来越重要的作用。
外业利用电子水准仪进行水准测量结束后,通过内业处理将数据转换为ExcelL格式的电子水准测量记录手簿,但是由于数据量较大,因此手工检查比较费时,且容易出现漏检的情况。
本文论述了利用VB编程,实现对电子水准测量记录手簿中单元格的数据进行检查,自动标记出超限的数据,实现水准手簿内业检查的自动化,提高内业工作效率。
关键词:VB Excel 电子水准测量手簿自动检查中图分类号:P22 文献标识码:A 文章编号:1674-098X(2017)10(c)-0140-031 引言水准测量是利用水准仪提供的水平视线测定两点间的高差,进而求得测点高程的方法,它是高程测量中最基本、精度最高的一种方法,在国家高程控制测量、工程勘察和施工放样中得到广泛应用。
电子水准仪在现今的水准测量中发挥着重要作用,与传统光学水准仪相比有以下特点。
(1)读数客观:不存在误记问题,没有人为读数误差。
(2)精度高:视线高和视距读数都是采用大量条码分划图像经处理后取平均得出来的,因此削弱了标尺分划误差的影响。
多数仪器都有进行多次读数取平均的功能,可以削弱外界条件影响,不熟练的作业人员也能进行高精度测量。
(3)速度快:由于省去了报数、听记、现场计算的时间以及人为出错的重测数量,测量时间与传统仪器相比可以节省1/3左右。
(4)效率高:只需调焦和按键就可以自动读数,减轻了劳动强度。
电子水准仪外业测量结束后,内业数据处理软件可以将外业测量数据处理成规范的电子水准测量记录手簿。
图1为一段标准的电子水准手簿记录格式,计算机中电子文档保存为Excel 软件的XLS或XLSX格式。
实际测量工作中,由于路线较长,观测天数多,测站较多,某些测站难免会产生一些超限的读数,如视线长度、视距差、视距累积差超限等。
VB开发水准测量平差软件的方法
VB开发水准测量平差软件的方法摘要:本文介绍了应用Visual Basic6.0开发的水准测量平差软件的方法。
通过软件自动生成EXCEL格式的水准测量平差计算表格进行数据处理,快速、准确计算出待求点的高程。
关键词:VB;数据处理;水准测量水准测量平差计算就是对合格的高差予以调整。
将闭合差以相反的符号按与各段水准路线长度(或按测站数)成正比的办法调整到各段高差上,求出改正后的高差再推算高程。
手工计算速度慢、工作效率低,同时易出现计算错误,而Visual Basic6.0是一种简单易学的可视化语言,用其进行编程计算就显得方便灵活。
本文结合作者工作的实践,详细地介绍了用VB开发水准测量平差软件的方法及应用。
1.VB语言的特点(1).面向对象和可视化的程序设计。
(2).事件驱动的运行机制。
(3).结构化的程序设计语言。
(4).多种数据库访问能力。
(5).提供了功能完备的应用程序集成开发环境。
(6).方便使用的联机帮助功能。
2.水准测量平差计算的方法(1).计算高差闭合差fh。
fh=Σh测 -(H终-H始)fh允=±20(按四等水准测量限差)fh≤fh允(合格)fh允—允许闭合差;Σh测—实测的各段高差和;H始—起点高程;H终—终点高程;(2).计算高差改正数Vi。
Σn —总测站数或路线总长度(km);ni —分段测站数或分段路线长度(km);(3).计算改正后高差h改i。
h改i=h测¬ + Vi(4).计算待求点高程Hi。
Hi=Hi-1+ h改i3.软件的开发原理首先在VB中设计了一个固定的界面(图3.1),添加相应功能键及数据输入文本框,通过输入相应的数据,利用VB编程实现自动生成电子表格;通过VB操作电子表格里数据进行平差计算。
根据不同的平差方法,本软件设置按距离进行平差和按测站数进行平差两种计算方法。
图3.1水准测量平差软件界面3.1参数输入方式数据输入设计成两种方式;一种是先建立文本格式(txt)的参数文件,通过编写程序代码实现直接读取数据。
VB在测量数据处理中的应用
VB在测量数据处理中的应用摘要本文主要探讨利用VB编制程序处理数据,方便数据交换和生成一些数据成果关键词VB程序设计文件类型数据格式一、引言随着计算机程序设计语言的不断发展,面向对象编程是当今程序设计的一个趋势,VB语言是一种简单易学的面向对象编程语言,本人运用它编制一些程序, 通过改变文件类型或数据格式等方式,对测量中些数据进行处理,达到转换成我们需要数据的目的,方便我们的测量工作。
我单位现在拥有Leica GPS530卫星定位系统,全站仪以及清华山维绘图及线路软件等,在工程测量中,通常需要将不同设备和软件中的数据进行相互转换,成为我们所需要的文件类型或数据格式,同时为了工作方便,还要对不同数据进行编辑修改。
如将GPS-RTK动态测量的点转入电子平板或线路软件,利用全站仪内存记录的测量点传入绘图软件等,以及在线路测量工作中将线路软件中输出的中线成果编制成中线成果表,在CAD中如何实现高程系统加减常数等问题,都可以通过VB编制一些小程序,实现数据处理的目的。
现就以下几例结合我单位的设备及工程实例,运用编制的程序处理数据,谈谈在实际中工作的体会。
二、全站仪外业数据存入内存,内业数据处理1、现势性在野外测量工作中,通常是全站仪测量数据,同时传输到绘图软件中,这样可现场成图,但是需要笔记本等设备。
有时,外业作业条件恶劣,或是笔记本等设备不能工作时,可将外业测量数据传输到仪器内存。
这样,可尽可能的缩短外业的作业时间,也可克服设备不足的弱点。
现在各种不同的绘图软件也应用于工作中,文件中,有记录操作步骤的文件,因此,有必要将全站仪内存中的数据格式转换成绘图软件中的文件的数据格式,实现数据交换,然后利用绘图软件编辑处理,完成图形。
现以全站仪TC307和清华山维EPSW98绘图软件为例说明。
2、数据处理过程将全站仪中数据传输到清华山维的软件中1)在全站仪中建工作,设置工作项目,将测量数据传输到内存中2)利用与仪器配套的数据传输软件,将数据*.gsi格式文件下载到计算机中,传输过程中注意数据格式,通常传输测量点的水平角、垂直角(天顶距)、斜距、仪器高等3)将数据传输到绘图软件中(1)文件类型转换全站仪TC307的数据格式数GSI 8位格式,文件类型为*.gsi类型,我单位采用的是清华山维EPSW98软件,记录操作步骤的数据格式文件类型为*.fld类型。
VB
0引 言
经纬仪 是用于测量水平角和竖直角 的计量 器具,它广 泛应用于大地 测量、 工程测 量和矿 山测量 ; 水准仪是 以仪器 的水平视 准线作为基准线 , 进 行 高差测量 的计量器具 , 它广泛应用于大地水准测量 、 地 形变测 量 、 各种工 程 水准测量与大 型精密机械安装等 。 但 是经纬仪 和水准仪检定工作十分繁 琐, 其 鉴定工 作具有 以下特 点: 检定项 目多 , 且步步联 系紧密 、 相互制约 , 致 使调整 困难 ; 数据量大, 计算失误 多 逻辑关系复杂 , 判断难度大 VB含有丰富的 图形控件和大量的数据处理函数公式和清晰 的逻 辑分 析能力, 可以直接对 数据输入进 行计算分析 、 判断 。本文 引入用 V B进行编
3 . 2软件 的数 据 处 理 界 面
式中,厶、R为各状态正 、 倒镜 读数平均值;互 、△ Z 为第 f 状态 的
天 项距 、天顶距变化量 ;, 、△ , 为第 i 状态 的竖盘 指示差 、竖盘指示差 变 化量 6 ) 一 测 回 水 平 方 向 标 准 偏 差 超 刚
( 马 鞍 山钢 铁 股 份 有 限 公 司 马鞍 山 2 4 3 0 0 0 )
种謦濑
V B在 经纬仪 、 水准仪 检定数据 高速 处理系统 的应用
摘 要: 为 了更快更好的解决经纬仪 和水准 仪检 定数据处理复杂 的难题 , 设计 了基于 V B之上的数据处 理软件 , 为其鉴定工作提供数据处 理和逻辑判 断工作 , 经过 不断改进和验 证, 符合检定工作需要 , 大大提高 了工作效率。 关键词: 经纬仪检定; ’ 水准仪检定; 数据处理; VB计算软件
=
式 中: m 为测回数, n为受检 目标数 以上公式 即为经纬仪 检定主要 数据处理 公式 同时也是 本文 引入 V B 编程 函数 公式 。 2水准仪检定方法 根据 J J G4 2 5 - 2 0 0 3 《 水准仪检定规程》, 要判断一台水准仪是否合格, 首 次检定项 目数为 1 5项, 后续检定为 8项 ; 我们 以后续检 定为例 来剖析检定 项 目中计算公式及其主要相互之间的逻辑关系: 1 ) 交叉 误差 数据 处理公式为
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于VB的高精度电子水准仪观测数据处理俞礼彬摘要:高精度电子水准仪观测数据处理软件可以处理拓普康DL101C,天宝DINI12,徕卡DNA03原始观测文件数据,将原始观测文件读取进入处理软件,经过复杂的运算处理后,提取出有效数据,完成水准观测数据预处理的工作,接着进行数据检验,用户更可以根据工程需要设置测站限差,然后生成5种手簿格式或根据用户需要的格式,生成水准概算表,进行网平差。
软件注重软件实际应用,提供良好的可视化界面,增加用户使用的灵活性,提高软件应用的大众化,以便于实现电子水准仪内外业一体化。
关键词:电子水准仪,原始观测数据,数据检验,水准数据处理Abstract: High precision electronic level observation data processing software can handle the Topcon DL101C, in the DINI12, Leica DNA03original observation data, the original observation file read into the after treatment software, through a complicated arithmetic processing, extracting the effective data, standard data pre-processing work, followed by a gross error detection. According to need ,user can set the station tolerance, then the data processing software generates5 kinds of hand book format or format for meeting the user’s need, and then it generates level estimate table, finally the data processing software achieve the level of adjustment calculation. Leveling data processing software pays attention to the software application, provides good visualization interface, increases user flexibility, improves software application popularization. So the software can realize the electronic level inside and outside the industry integration.Key words: electronic level, leveling, post processing1 软件的需求分析电子水准仪是一种新型的测绘仪器,在精密测量中得到应用,并将成为未来的水准仪的发展趋势。
电子水准仪自动记录数据,速度快,精度高,读数客观,实现了水准测量的数字化,自动化。
但是电子水准仪的品牌不同,其下载下来的原始观测文件格式各不相同,且原始观测文件格式比较复杂,不符合国内规范要求,对水准测量处理造成了一定的困难。
所以当前对电子水准仪处理研究普遍功能不完善,形式单一,处理过程过于简单,适用性不强,多数只能适用于一种情况,因而不能真正实现电子水准仪内外业一体化,不利于电子水准仪的普及和推广。
本文针对天宝,徕卡,拓普康三种电子水准仪,基于VB编写软件处理其原始观测数据,生成五种格式的成果文件,大幅度提高了精度,提供了高精度处理各种电子水准仪数据的范例,有利于解决当前各种电子水准仪处理软件不统一的情况,解决水准测量数据处理落后的低效率的人工模式,实现水准测量的数据处理的数字化,快速化,规范化。
2 软件设计与实现2.1 设计软件框架软件按照水准测量数据处理的过程,软件总体由七大模块构成:参数设置模块,数据读取模块,数据检验模块,成果显示与导出模块,平差模块。
先进行软件参数设置,设置导出格式,数据处理精度,然后导入原始观测数据(有.txt,.dat,.dll 格式的文件),进行数据处理与检验,最后生成水准手簿显示并导出成果(有.xls 表格,.txt文本文件),进行水准网平差。
软件设计完整框架如图1所示。
2.2 软件界面设计在软件设计过程中,首先利用Visual Basic 6.0的有关控件构建软件的界面,导入,设置,检验,导出等窗口和命令按钮,并根据日常处理水准数据的人工模式编写代码,经过不断调试和改进,力求提高精度,操作灵活性,软件的完整性。
软件界面如图1所示。
在读取数据之前需要设置各种参数,如测量仪器,测量等级与文件导出格式,设计界面如图3所示。
为了提高精度和方便用户自行设置精度,软件加入了水准测量限差设置界面,如设置视线长度限差,视线高度限差,前后视距差限差......2.3 算法思想与程序设计在整个程序设计中,关键有两个问题:一是如何读取电子水准仪原始观测文件中的有效数据,剔除重测数据及附加的信息;二是如何对各种电子水准仪数据进行高效处理,如拓普康和徕卡的数据不会发生叠加或者混合。
通过对徕卡,拓普康,天宝电子水准仪数据格式的研究,找到文件数据格式的规律,如天宝DINI12文件中“Start-Line”表示开始测量,“aBFFB”表示该测段等级是二等,即先后前前后,再前后后前的模式向前推进,若是“BFFB”则表示该测段等级是三等,若是“BBFF”则表示该测段等级是四等。
通过While循环读取测站和测段信息,将有效的水准数据提取出来,形成一个“预处理”的txt文件,作为一个数据导入的接口,然后进行后台数据处理,按照国家水准测量规范,设置各个数据的格式,如后距,前距,中丝读数等,计算出视距差,视距差累计,两次中丝读数之差,测站高差以及测段前距,后距,视距差……,并设置数据格式,赋给各个变量和数组,以便于后续程序设计时数据的调用;在设计数据检核模块时,要对一、二、三、四等检验,根据国家水准测量规范,用条件语句检验各个变量是否符合规范,如果数据超限或出错,在该数据的变量上做上标记符,以便于后续识别;在设计成果显示模块时,设计窗体界面手簿网格,采用MSFlexGrid控件,设计分两部分,设计水准手簿头部分,这部分需要软件自动输入测量阶段的信息,另外设计数据部分,包括各个测站和测段数据;再设计成果输出部分,输出文件有五种形式,分别是3种Excel表格和2种txt文本,这里主要是对输出格式进行设置,采用VBA设计时调用各个变量和数组中的数据,逐次打印,最后输出水准概算表。
在基本程序设计完成之后,需要不断加以调试和优化,在多次运行程序没有数据错误和软件错误后,要提高程序运行的速度,简化代码,提高程序的使用灵活性。
2.5 软件的核心代码Public Sub DNA03Input() '徕卡DNA03原始观测文件输入Dim line As String, timestr As String, CPoint(1000) As String, t As IntegerDim m As Integer, X As Integer, c As Integer, i As Integer, x1 As Integer, x2 As Integer, x3 As Integer, x4 As Integer, Ctime(1000) As StringDim k1 As Integer, k2 As Integer, k3 As Integer, k4 As Integer, k5 As Integer, k6 As Integer, K As Integer’设置后距1,后距2,前距1,前距2,后尺中丝读数1,后尺中丝读数2,前尺中丝读数1,前尺中丝读数2Dim BD1(1000) As Double, BD2(1000) As Double, FD1(1000) As Double,FD2(1000) As Double, BC1(1000) As Double, BC2(1000) As Double, FC1(1000) As Double, FC2(1000) As DoubleDim bpoint(1000) As String, fpoint1(1000) As StringX = 1c = 1x1 = 0x2 = 0x3 = 0x4 = 0t = 0’导入徕卡DNA03文件Open monDialog1.FileName For Input As #1’打开预处理文件Open App.Path& "\预处理.txt" For Output As #3Do While Not EOF(1)Line Input #1, line ’一行一行读取文件中的数据i = 0m = 0For j = 1 To 6m = InStr(m + 1, line, "=")If m <> 0 Then i = i + 1Next jIf i = 6 Then’读取水准观测开始与结束时间FirTime(c) = Right(line, 10)FirTime(c) = Mid(FirTime(c), 3, 2) & Mid(FirTime(c), 6, 2) & Mid(FirTime(c), 9, 2) LasTime(c) = FirTime(c)End Ifm = 0K = 0’循环记录需要提取数据的准确位置For j = 1 To 6m = InStr(m + 1, line, ",")If m <> 0 Then K = K + 1If K = 1 Then k1 = mIf K = 2 Then k2 = mIf K = 3 Then k3 = mIf K = 4 Then k4 = mIf K = 5 Then k5 = mIf K = 6 Then k6 = mNext j’开始循环读取各测段中指定位置的有效测站数据,如前距,后距,中丝读数If K = 6 Thent = t + 1CPoint(t) = Left(line, k1 - 1)If Mid(line, k2 - 2, 2) = "B1" Thenx1 = x1 + 1bpoint(x1) = Mid(line, 3, 8)BC1(x1) = Val(Mid(line, k2 + 1, 10))BD1(x1) = Val(Mid(line, k3 + 1, 10))Ctime(x1) = Mid(line, k5 + 1, 8)End IfIf Mid(line, k2 - 2, 2) = "F1" Thenx2 = x2 + 1fpoint1(x2) = Mid(line, 3, 8)FC1(x2) = Val(Mid(line, k2 + 1, 10))FD1(x2) = Val(Mid(line, k3 + 1, 10))End IfIf Mid(line, k2 - 2, 2) = "F2" Thenx3 = x3 + 1FC2(x3) = Val(Mid(line, k2 + 1, 10))FD2(x3) = Val(Mid(line, k3 + 1, 10))End IfIf Mid(line, k2 - 2, 2) = "B2" Thenx4 = x4 + 1BC2(x4) = Val(Mid(line, k2 + 1, 10))BD2(x4) = Val(Mid(line, k3 + 1, 10))End IfEnd IfIf line = "水准线路总结" ThenPrint #3, cFor j = 1 To x1Print #3, j; ","; BD1(j); ","; BD2(j); ","; FD1(j); ","; FD2(j); ","; BC1(j); ","; BC2(j); ","; FC1(j); ","; FC2(j)Next jFirTime(c) = FirTime(c) &Left(Ctime(1), 2) & Mid(Ctime(1), 4, 2)LasTime(c) = LasTime(c) &Left(Ctime(x1), 2) & Mid(Ctime(x1), 4, 2)FPoint(c) = bpoint(1)LPoint(c) = fpoint1(x1)CeZhan(c) = x1c = c + 1x1 = 0x2 = 0x3 = 0x4 = 0t = 0End IfLoopClose #1Close #3End Sub2.4 软件的实现(1)进入软件后,单击“参数设置”按钮,显示是“设置”对话框,对仪器,水准等级,成果导出模式设置,设置完成后,单击“保存”,再单击“返回”,回到主软件;在设置“测量等级”时,可以单击“高级”,软件显示“测量限差设置”对话框,这里可以手动输入限差,单击“保存”,再单击“返回”,回到“设置”对话框;(2)在主界面上,单击“文件读取”,选择你所需要读取的水准观测原文件,单击确定;读取完成后,返回到主软件,主界面显示原文件内容;(3)在主界面上,单击“数据检验”,返回“数据检验完毕”对话框,单击“确定”;(4)在主界面上,单击“成果显示”,主界面显示水准观测手簿,其中绿色背景的数据表示该数据超限;(5)在主界面上,单击“导出成果”,主软件显示“Excel1模式:文件输出完毕!”对话框,单击“确定”,显示Excel1模式的水准观测手簿;如果想要以Excel2模式显示,可以重新单击“参数设置”,重新选择“Excel2模式”,再单击“导出成果”,则成果以Excel2模式显示,类似地,其他模式也可以这样操作;(6)在主软件界面上单击工具栏上的“概算表”,软件就会输出水准概算表,显示水准概算表输出完毕对话框。