VB编程在平断面图数据处理中的应用
2017-04-21乐志豪
乐志豪
摘 要:隨着电力勘测的发展,平断面图数据的处理成图工作越来越重要。为了进一步提高对不同方式获得的平断面数据进行高效处理,该文探讨利用VB编程工具开发程序,以便为平断面图数据的程序化处理提供一种高效、快捷、简便的方法。
关键词:VB 电力勘测 平断面图
中图分类号:TP391.72 文献标识码:A 文章编号:1672-3791(2016)12(a)-0032-02
Abstract: With the development of Electric Power Survey, The processing of mapping the cross-setion diagram become increasingly important. In order to further enhance the efficiency for dealing with cross-setion diagram data obtained from different ways, this article discusses the technology and the method basing on VB programming tool. At last, It supply an efficient,fast and simple method for cross-setion diagram data procedural processing.
Key Words: VB; Electric Power Survey; The cross-setion diagram
随着测绘技术的发展,传统的测图方法正逐步被不断涌现的新设备、新技术、新方法取代。GPS-RTK与全站仪联合进行架空线路平断面图的测量,是一种行之有效的经典方法。GPS-RTK与全站仪可以优势互补。RTK可以不受通视条件限制,在遇到建筑物或树木时,全站仪就可以运用自如。这样就可以提高测量速度与工作效率。不同仪器设备间采集的数据格式不尽相同,所以就必须要对不同仪器采集的数据进行分类、编辑、制图。该文将探讨对平断面数据的处理工作,以便高效、精确地处理每天野外测量的数据,减少对数据的人工干预。
1 平断面数据的格式要求
电力勘测平断面数据的采集过程中,GPS-RTK的应用已经相当广泛,采集的数据格式都是以坐标的形式存储,而平断面图的绘制中,关注绘图的每个数据的累距、偏距、高程,所以就涉及到对数据格式的转换。该文将采用VB编程的方式,结合该电力线路作业模式,把采集的坐标数据转换成运用比较广泛的SLCAD平断面处理系统中绘图的数据格式。
把GPS和全站仪测量的断面数据存储为表1所示格式,其中点名、北坐标、东坐标、高程、编码用逗号格式区分,并存储为文本文件或CSV格式文件。
2 对数据的分类处理
文件格式定义好后,用VB程序对文件进行读取处理。对数据进行分类,首先就要以不同数据定义不同数组以存放读取的数据。在读入数据时采用前测型循环语句,逐行读入并以逗号分隔符提取数据存入不同数组,以便后期对数据进行处理。核心处理语句如下:ReadLine、InStr、Do... Loop循环。如图1所示为数据读入界面。
3 对数组数据的处理
数据读入数组之后就可以对数据进行处理:包括计算桩位之间的距离、转角桩位之间的转角计算、判断断面点是否在所定义的耐张段区间等。
(1)桩位间的距离计算。距塔位中心桩平距:
(1)
距塔位中心桩高差:
(2)
如式(1)、式(2):为两点直接距离和高差的计算公式。
(2)转角计算。通过计算相转角间的坐标方位角,然后用相邻转角之间的坐标方位角差,便可计算出转角的度数。坐标方位角反算核心语句:
Public Function azimuth(ByVal x1 As Double, ByVal y1 As Double, ByVal x2 As Double, ByVal y2 As Double) As Double
Dim dx, dy As Double
dx = x2 - x1: dy = y2 - y1
azimuth = Atn(dy / dx)
If dx < 0 Then
azimuth = azimuth + pi
Else
If dy < 0 Then azimuth = azimuth + 2 * pi
End If
End Function
(3)断面点的区间判断。通过半线理论判断一个点是否在某一区域之类。通用过程语句如下:
Public Function pointinpl(ByVal x As Double, ByVal y As Double, ByVal ppx0 As Double, ByVal ppx1 As Double, ByVal ppx2 As Double, _
ByVal ppx3 As Double, ByVal ppy0 As Double, ByVal ppy1 As Double, ByVal ppy2 As Double, ByVal ppy3 As Double) As Double
Dim dad(3) As Double
Dim xiaoa(3) As Double
Dim xiaob(3) As Double
Dim xiaoc(3) As Double
Dim i As Integer
xiaoa(0) = (ppy1 - ppy0) / (((ppx1 - ppx0) ^ 2 + (ppy1 - ppy0) ^ 2) ^ (1 / 2))
xiaob(0) = (ppx0 - ppx1) / (((ppx1 - ppx0) ^ 2 + (ppy1 - ppy0) ^ 2) ^ (1 / 2))
xiaoc(0) = -(xiaoa(0) * ppx0 + xiaob(0) * ppy0)
xiaoa(1) = (ppy2 - ppy1) / (((ppx2 - ppx1) ^ 2 + (ppy2 - ppy1) ^ 2) ^ (1 / 2))
xiaob(1) = (ppx1 - ppx2) / (((ppx2 - ppx1) ^ 2 + (ppy2 - ppy1) ^ 2) ^ (1 / 2))
xiaoc(1) = -(xiaoa(1) * ppx1 + xiaob(1) * ppy1)
xiaoa(2) = (ppy3 - ppy2) / (((ppx3 - ppx2) ^ 2 + (ppy3 - ppy2) ^ 2) ^ (1 / 2))
xiaob(2) = (ppx2 - ppx3) / (((ppx3 - ppx2) ^ 2 + (ppy3 - ppy2) ^ 2) ^ (1 / 2))
xiaoc(2) = -(xiaoa(2) * ppx2 + xiaob(2) * ppy2)
xiaoa(3) = (ppy0 - ppy3) / (((ppx0 - ppx3) ^ 2 + (ppy0 - ppy3) ^ 2) ^ (1 / 2))
xiaob(3) = (ppx3 - ppx0) / (((ppx0 - ppx3) ^ 2 + (ppy0 - ppy3) ^ 2) ^ (1 / 2))
xiaoc(3) = -(xiaoa(3) * ppx3 + xiaob(3) * ppy3)
For i = 0 To 3
dad(i) = xiaoa(i) * x + xiaob(i) * y + xiaoc(i)
Next i
If dad(0) <= 0 And dad(1) <= 0 And dad(2) <= 0 And dad(3) <= 0 Then
pointinpl = True: Exit Function
Else
pointinpl = False
End If
End Function
4 數据的整理输出
数据处理好后就要按一定的数据格式输出到一定的格式文件。SLCAD平断面处理系统要求平断面点以点名、累距、高程以及一些特殊的编码形式输入。输出数据的界面如图2所示。
5 结语
该文通过对电力勘测过程中平断面数据的VB程序化处理,使得测量数据可以不通过人工干预。数据通过计算机快速转换,把测量数据高效,准确地处理成成图数据,从而开发出一种实地勘测过程中数据的快速处理成图方式。
参考文献
[1] 郑阿奇,曹戈.Visual Basic实用教程[M].电子工业出版社,2001.
[2] 龚健雅,杜道生,李清泉.当代地理信息技术[M].科学出版社, 2004.
[3] 吕忠钢.RTK技术在送变电线路测量中的应用[J].测绘与空间地理信息,2004,27(5):69-71.
[4] 郭中社,夏江,赵根庄,等.GPS RTK数据处理技术在线路测量中的应用[J].地理空间信息,2009,7(3):91-93.