开篇:润墨网以专业的文秘视角,为您筛选了一篇浅谈Excel VBA在地形图精度统计上的应用范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘要:在地形图的生产过程中质量检查是保证地形图产品质量的重要环节,对数字化地形图的数学精度统计中平面位置精度通常采用野外实测或室内套和采集同名点的方式获取检测点,与地形图上的同名点比较,计算较差,统计平面位置的中误差;高程精度采用野外实测的方式,获取特征点的点位高程,与地形图上的同名点比较或内较,计算较差,统计高程中误差。人工填写数据计算中误差不但工作量大工作量大、繁琐,计算还容易出错;利用程序自动化处理这个过程,能准确快速的计算出中误差,大大减轻了检查员的工作量。
概述
地形图(topographic map)是表示地表上的地物、地貌平面位置及基本的地理要素且高程用等高线表示的一种普通地图。在地形图的生产过程中质量检查是保证地形图产品质量的重要环节,测绘成果质量通过二级检查一级验收方式进行控制,即测绘成果应依次通过测绘单位作业部门的过程检查、测绘单位质量管理部门的最终检查和委托验收。检验内容包括:数学精度、地理精度、数据及结构正确性、整饰质量和和附件质量等。对数字化地形图的数学精度统计中平面位置精度通常采用野外实测或室内套和采集同名点的方式获取检测点,与地形图上的同名点比较,计算较差,统计平面位置的中误差;高程精度采用野外实测的方式,获取特征点的点位高程,与地形图上的同名点比较或内较,计算较差,统计高程中误差。由此可见计算平面与高程中误差成为统计地形图的数学精度中的一项重要的工作。人工填写数据计算中误差不但工作量大工作量大、繁琐,计算还容易出错;利用程序自动化处理这个过程,能准确快速的计算出中误差,大大减轻了检查员的工作量。在众多的开发程序中,Excel VBA因其高效率简单易学功能强大被广泛用于不同的行业中,它提供了强大的二次开发环境VBAIDE,VBA作为一种新一代的标准宏语言,具有跨越多种应用软件并且具有控制应用软件对象的能力,它可以实现的功能包括:(1)使重复性的任务自动化。(2)自定义Excel中工具栏菜单和窗体的界面。(3)简化模板的使用。(4)为Excel环境添加额外的功能。(5)创建报表。(6)对数据执行复杂的操作和分析。使用Excel VBA来解决上面所提到的问题,就非常容易了。
程序设计思路
本程序设计以全数字化地形图为例。在对全数字化地形图进行精度统计的过程中,首先进行检查数据的野外采集,形成文本格式的检查数据文件;其次利用数字化地形图进行原始观测值的内业采集,形成文本格式的观测数据文件,检查文件和观测文件中的数值为一一对应关系;第三进行数据格式转换及文件合并,将检查文件观测文件合并为一定格式的文本文件;第四将合并后的文本文件以一定的表格形式导入Excel中,利用Excel良好的处理数据的功能进行平面及高程中误差的计算。从而完成了数据自动填入表格,并进行中误差计算的自动化过程。设计思路见下图2-1:
2-1地形图精度自动化统计流程图
地形图精度统计自动化实现过程
程序界面设计
程序界面是一切具有实用价值的VBA程序所需要的基本组成部分,是程序与用户沟通的桥梁。由于本程序所要解决的问题较为单纯,所以仅使用了用户窗体进行程序界面设计,窗体中包含四个VBA公共控件,即一个文本标签控件,三个按钮控件,真正实现一键解决中误差计算问题。程序界面见下图:
3-1程序界面
文本文件数据格式转换及合并
本程序进行精度统计计算所使用的文本文件均为CASS数据格式,其它格式文本文件可参照本程序进行修改。
检查文件数据格式:
1, , 102961.869 , 52448.511 , 2448.511
2, , 102966.922 , 52469.571 , 2469.571
3, , 102971.228 , 52480.457 , 2480.457
4, , 102974.581 , 52494.419 , 2494.419
5, , 103074.957 , 53091.875 , 2491.875
……
观测文件数据格式:
1, , 102961.893 , 52448.484 , 2448.484
2, , 102966.923 , 52469.529 , 2469.529
3, , 102971.236 , 52480.438 , 2480.438
4, , 102974.571 , 52494.389 , 2494.389
5, , 103074.939 , 53091.886 , 2491.886
……
点号,,Y坐标,X坐标,H高程
检查文件与观测文件具有相同的数据格式,且为一一对应的同名地物点,这在全数字化地形图上很容易实现。
在此段程序中包含了数据格式转换及文件合并两个过程。主要过程程序如下所示:
Open "D:\点位精度统计\检核.txt" For Input As #1
Open "D:\点位精度统计\原始.txt" For Input As #2
Open "D:\点位精度统计\合并.txt" For Output As #3
n = 1
Do While Not EOF(1)’数据格式转换及文件合并
Input #1, p1, s1, y1, x1, h1
Input #2, p2, s2, y2, x2, h2
Write #3, n, x1, x2, , y1, y2
n = n + 1
Loop
a = n - 1
Close #1 Close #2 Close #3
合并后文件数据格式:
1,52448.511,52448.484,,102961.869,102961.893
2,52469.571,52469.529,,102966.922,102966.923
3,52480.457,52480.438,,102971.228,102971.236
4,52494.419,52494.389,,102974.581,102974.571
5,53091.875,53091.886,,103074.957,103074.939
点号,X检查,X观测,,Y检查,Y观测
文本文件导入Excel
合并后的数据文件仍为文本格式文件,下一步即把文本格式的文件导入Excel中,生成具有一定格式的Excel文件,即zb.xls文件。主要程序为:
Dim wb As Workbook
Dim ws As Worksheet
MsgBox "生成坐标中误差计算表"
Set wb = Workbooks.Add
Set ws = wb.Sheets(1)
ws.Name = "坐标中误差计算表"
ws.Cells(1, 4) = "点位中误差计算表"
ws.Cells(2, 1) = "序号"
ws.Cells(2, 2) = "检核X"
ws.Cells(2, 3) = "观测值X"
ws.Cells(2, 4) = "X差值"
ws.Cells(2, 5) = "检核Y"
ws.Cells(2, 6) = "观测值Y"
ws.Cells(2, 7) = "Y差值"
ws.Cells(2, 8) = "备注"
Range("A3").Select
With ActiveSheet.QueryTables.Add(Connection:="TEXT;D:\点位精度统计\合并.txt", _
Destination:=Range("A3"))
.Name = "合并"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 936
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
程序运行结果见3-2图:
3-2文本文件导入Excel
计算中误差
合并后的数据文件导入Excel中即可对数据进行分析和操作,进行坐标中误差的计算。
本例采用观测量真值未知时,用改正数来确定中误差的计算公式(白塞尔公式)。
M=±
M―为观测值的中误差
V―最或是值与观测值之差,一般为算数平均值与观测值之差。
Vi=L-Li
计算程序代码为:
XX = 0YY = 0
For b = 1 To n
x1 = Cells(b + 2, 2).value
x2 = Cells(b + 2, 3).value
y1 = Cells(b + 2, 5).value
y2 = Cells(b + 2, 6).value
C1 = x1 - x2
C2 = y1 - y2
Cells(b + 2, 4) = C1
Cells(b + 2, 7) = C2
XX = C1 * C1 + XX
YY = C2 * C2 + YY
Next b
Cells(a + 3, 4) = XX
Cells(a + 3, 7) = YY
vv = (XX + YY) / (a - 1)
m = Sqr(vv)
Cells(a + 4, 4) = m
Cells(a + 4, 2) = " 中误差"
Cells(a + 4, 3) = " M=±"
ActiveWorkbook.SaveAs "d:/点位精度统计/zb.xls"
ActiveWorkbook.Close "d:/点位精度统计/zb.xls"
MsgBox "坐标中误差计算完毕。d:/点位精度统计/zb.xls表"
计算结果显示如3-3图:
3-3坐标中误差计算表
至此我们便完成数据填写和坐标中误差的计算工作。同里可编写高程中误差的计算表格。高程中误差的计算结果3-4所示:
3-4高程中误差计算表
结语
计算程序经多个项目实验并与传统计算方法进行对比具有计算速度快精确度高等明显的优势。利用Excle VBA 程序进行地形图的精度统计极大的减轻了检查员的工作量,提高了地形图质量检查的效率。Excle的功能是强大的,只要我们学习并掌握了Excle VBA中的基础知识,在工作的某些方面会取得事半功倍的效果。
参考文献
钟声,李远祥等.Excel VBA入门与提高.电脑报电子音像出版社,2009.
测绘成果质量检验教程.2009
王串,阮兴平,于平剑等.Otiice2000 VBA一册通IM1.北京:人民邮电出版社,2000
注:文章内所有公式及图表请用PDF形式查看。