基于TIN设计的地形图精度检测软件
2021-07-29
来源:世旅网
20l1年6月 第3期 文章编号:1672—8262(2010)03—134—04 城市勘测 Jun.2011 No.3 Urban Geotechnical Investigation&Surveying 中图分类号:P209 文献标识码:B 基于TIN设计的地形图精度检测软件 吴美容 (江苏兰德数码科技有限公司,江苏南京210007) 摘 要:目前国内行业商用软件如CASS、广州开思等在地形图高程精度评定方面相对较弱。以往都是采用手工逐点 量距内插计算检测点位的高程并进行高程中误差统计,若碰到几百个检测点,手5--计算工作量非常大而且容易出错, 因此根据工作需要研制开发基于AutoCAD平台的地形图精度检测软件就变得很有意义,借助程序计算代替传统的手 工计算使得工作效率大为提高。实践证明,软件设计思路明晰,算法可靠。 关键词:地形图;精度;高程;中误差;软件 1 引 言 工程建设前期均须测绘大比例尺原始地形图,以 作为设计人员规划设计之用。目前,{9_10绘单位常采用 全站仪、RTK或近景摄影测量进行外业碎部点数据采 集,然后运用行业成图软件生成地形图。地形图精度 为两大类¨ ;即静态三角网和动态三角网。静态算法 中以三角网生长算法较为典型,动态算法中则以数据 逐点插入算法较为普遍。软件基于文献 介绍的构 网思路采用三角网生长算法中的递归生长算法。该算 法首先生成第一个三角形,然后由第一个三角形向外 扩展直到最后联结全部离散点构成Delaunay三角网。 该算法涉及的相关判别法则限于篇幅,在此不作详细 阐述,直接给出构网结果,如图1所示。 是否达到规范要求,需要进行精度检测。检测分为平 面精度检测和高程精度检测,二者可以分开进行也可 以同时进行。CASS 7.1检查入库菜单里面点位误差 检查和边长误差检查即是针对平面精度检测。实践中 一般采取以下三种方法针对高程精度进行检测:①点 位还原法,即从所有碎部点数据中随机抽取总点数的 10%一20%个数据,全站仪利用点的平面坐标采用极 坐标法于实地放样出该点,然后测量点位二次高程并 且与点位的一次高程进行比较,最后根据所抽取的子 样统计得出的中误差来估计总体的精度;②剖面法,即 检测人员于实地进行断面测量,内业根据断面数据文 图1 Delaunay三角网 件生成断面图并与根据地形图所剖得到的断面图进行 比较;③检查点法,即检测人员在测区内采集任意点位 三维数据,点位要求覆盖整个测区要有一定的密度且 分布均匀,然后展点到所生成的地形图中去,采用内插 2.2展点 该部分将检测数据( .dat格式)展点到图形巾 去。相关代码: Call Get0penFileName(Data,”请输入数据文件”) Open Data For Input As#3 Do 的方法计算点位的图面高程并与点位的抽测高程进行 比较,最后计算中误差。该方法是实践中比较常用的 方法。本文正是基于第3种方法编写地形图精度检测 Input#3,no,BianMa,juzy,juzx,juzh Set blockRefObj=ThisDrawing.ModelSpace.1nsertBloek f in— 软件。 sPoint,”Blpoint”,l#,1#,1#,0) Loop Until EOF(3)Or no=Empty 2编程思路 2.1构TIN 2.3检测 该部分根据上面所生成的三角网及展点进行点位 原始数据为 .dat格式文件。三角网构网算法归 高程中误差统计。 算法的基本流程: 收稿日期:2O1O一10—29 作者简介:吴美容(1982~),女,工程师,主要从事航测遥感内业技术 作。 第3期 吴美容.基于TIN设计的地形图精度检测软件 135 程序首先建立两个选择集合,分别用于存放检测 点及三角形元素,其次建立双循环结构对于检测点集 L =0或L =0或L,=0时点P在△ 边上; 的某一 合中的每一个点元素遍历三角网集合中的每一个三角 形元素,并进行点与三角形位置关系的判断,若位于某 三角形则调用该三角形的顶点数据,采用线性插值的 内插方法进行相应的内插计算,将结果放入指定的数 组,最终程序建立与Excel的通讯将结果输出到Excel 指定区域。 算法的数据结构: Public Type DingDian X As Double Y As Double H As Double End Type Public Type SanJiaoWang A(0 To 2)As Double B(0 To 2)As Double C(0 To 2)As Double End Type Public Type XianDuan dblStart(0 To 3)As Double dblEnd(0 To 3)As Double End Type Public Type side——2——Point ID As Long A()As Long count As Long EndType DianTriangle 类模块 Public yi As Long Public er As Long Public san As Long (1)判断检测点与三角网中三角形的关系 ] Y 0 X 图2点位关系判断 思路:如图2,AV1 的三个顶点的坐标分别为 V ( ,Y ), ( ,Y ), ( ,Y ),任一点P( ,Y)。则 点P和△ 的位置关系如下判定, 、 、 定义 如下: L =[( 一 :)(y-y:)一(Y。一Y:)( — :)] L:=[( 一 3)(y-y3)一(y1-y3)(X--X3)] L,=[( :一 。)(y-y )一(Y2-Y )(X--X )] 判断条件: Ll>O且,J2>0且 >0或L1<0且 2<0且L3<O 时点P在△ 内; 除去以上两种情况时点P在△ 外。 代码如下: Public Function Fn—in(Diano()As Double,SanJiaoXing—abc As SanJiaoWang)As Boolean Dim L1 As Double,12 As Double,L3 As Double Fuin=False _L1=(SanJiaoXing—abc.C(0)一SanJiaoXing—abc.B(0))¥ (Diano(1)-SanJiaoXing—abc.B(1))一(Diano(0)-Sa ̄iaoXing— abc.B(0)) (SanJiaoXing—abc.C(1)-SanJiaoXing—abc.B(1)) 21=(SanJiaoXing—abc.A(0)一SanJiaoXing—abc.C(0)) (Diano(1)-SanJiaoXing_abc.C(1))一(Diano(0)-San.]iaoXing— abc.C(0)) (SanJiaoXing_abc.A(1)-SanJiaoXing—abc.C(1)) I2=(SanJiaoXing—abc.B(0)一SanJiaoXing—abc.A(0)) (Diano(1)-SanJiaoXing—abc.A(1))一(Diano(0)-SanJiaoXing— abc.A(0)) (SanJiaoXing_abc.B(1)-SanJiaoXing—abc.A(1)) IfAbs(u)<0.00001 Or Abs(12)<0.00001 Or Abs(IJ3)< 0.00001 Then IfAbs(L1)<0.00001 Then If(Sgn(12)=Sgn(L3))0r(Abs(Sgn(12) Sgn (I3))<0.0000001)Then Fuin=True Exit Function End If End If If Abs(12)<0.00001 Then Ⅱ(Sgn(LJ3)=Sgn(L1))0r(Abs(Sgn(I3) Sgn(L1))<0.0000001)Then Fuin=True Exit Function End If End If IfAbsfL3)<0.00001 Then If(Sgn(L1)=Sgn(12))0r(Abs(Sgn(L1)¥Sgn (12))<0.0000001)Then Fuin=True —Exit Function End If End If End If If Sgn(L1)=Sgn(12)And Sgn(LI)=Sgn(I2)Then 当在三条线段上的值都有一样的符号时,点落入三角形中 Fu—in=True Else Fu—in=False End If End Function (2)计算检测点在三角形中的高程 思路: 使用空间三角形3个顶点数据确定一个平面,继 而计算出内插点的高程。 136 城市勘测 2011午6 采用平面线性内插公式:ax+by+cz+d=0,其中: a=(yb-ya)x(zc-za)一(yc—ya)×(zb—za) b=(xb—xa)×(zc—za)一(XC—xa)×(zb—za)×(一1) SiGeMaX BiaoGe.Cells(jJj,6):((SiGeMaDehaL— 2/ n)/(n一1)) 0.5 样本标准差计算公式 BiaoGe.Cells(jjj+1,6)=((SiGeMaDehaL) c=(xb—xa)×(yc—ya)一(xo-xa)×(yb-ya) d=(a×xa+b×ya+c×za)×(一1) 真误差计算中误差计算公式¨ It n<>0 Then 代码如下: Public Sub TouYingH(JiaoJiDian As DingDian.SanJX As OuMiGa=((SiGeMaDeltaL—SiGeMaX 2/n)/(n一 1)) 0.5 Variant) MsgBox”需要检查的点数是:”&(IngTotalPointNum Dim A As Double,B As Double,C As Double,D As Double A=[SanJX(4)一SanJX(1)] [SanJX(8)一SanJX(2)]一 【SanJX(7)一SanJX(1)] [SanJX(5)一SanJX(2)] B=-I [SanJX(3)-SanJX(0)] [SanJX(8)一SanJX(2)] ~[SanJX(6)一SanJX(0)] [SanJX(5)一SanJX(2)] C=[SanJX(3)一SanJX(0)] [SanJX(7)一SanJX(1)]一 [SanJX(6)一SanJX(0)] [SanJX(4)一SanJ ̄(1)] D=-1 A SanJX(0)+B SanJX(1)+c¥SanJX(2)] If C=0 Then JiaoJiDian.H=0 Else JiaoJiDian.H=一(D+A JiaoJiDian.X+B JiaoJiDi— an.Y)/C End Sub (3)循环计算并输出 ' ] For i=0 To lngTota1PointNum 该部分设计每一个抽测点遍历三角网集合中的三角形元 素,若位于某三角形则进行相应的内插计算。 Next i Dim AppExcel As Object Dim NewWorkbook As Object Dim BiaoGe As Obieet Dim MatRage As Obiect Dim ReturnRange As Obieet Set AppExcel=CreateObject(”Exce1.Application”) AppExce1.Visible=True Set NewWorkbook=AppExce1.Workbooks.Add Set BiaoGe=NewWorkbook.ActiveSheet BiaoGe.Name=”地形图高程中误差统计表” BiaoGe.Cells(1,1)=”地形图高程中误差统计表 BiaoGe.Cells(2,1)=”点号” BiaoGe.Cells(2,2)=”X坐标” BiaoGe.Ceils(2,3):”Y坐标” BiaoGe.Cells(2,4)=”抽测高程” BiaoGe.Cells(2,5)=”内插高程” BiaoGe.Cells(2,6)=”误差” Dim jJj As Integer:jJ 3 BiaoGe.Cells(JJJ,1)=n BiaoGe.Cells( ,2)=Round(AllPoint(i,0),4) BiaoGe.Cells(jJj,3)=Round(AllPoint(i,1),4) BiaoGe.Cells(俩,4)=Round(AllPoint(i,2),4) BiaoGe.Cells(jJj,5)=Round(JiaoDian.H,4) BiaoGe.Cells(JJJ,6)=Round(dblDivE1,4) 俩=J‘J。j+1 +1)&vbCrLf&一 ”内插出高程的点数是:”&n&vbCrLf&一 ”高程中误差是: ”&Round(OuMiGa,4) Fnd Tf 3 工程实例 以雅砻江某水电站坝区供水泵站原始地形检测为 例。 地形图高程中误差统计表 表1 l 粼 辩褪 ¨§§ i}}} §ill 第3期 吴美容.基于TIN设计的地形图精度检测软件 137 高程误差折线圈 [检查(&j)] C^C一一vbarun”d:/rjb/dgx/wangjg.dvb!dxjc wangjg.GCZanGaoCeng” (2)测绘人员将测绘原理与计算机语言结合起来进 行二次开发能够解决实际中出现的新问题,也提高了工 作的效率。该软件经过多个工程地形图检测实践,证明 其正确、实用,提高了内业成图检测的作业效率。 点号 (3)程序设计每个点需要遍历三角网并进行判 断、内插计算等操作。因此,点数越多,三角网越复杂, 图3高程误差折线图 程序进行内插计算所花费的时间也越长。本程序的数 结论: 据结构优化将是接下来需要研究的课题。 参考文献 (1)第27号点的高程偏差较大,分析可能系野外 测量过程中棱镜高输入错误,棱镜高值输小了,需予以 检查。 [1] 李志林,朱庆.数字高程模型(第二版)[M].武汉:武汉 大学出版社,2003 (2)高程中误差0.6 m满足行业规范中关于山 地、高山地高程中误差不大于1 m的要求;但是根据高 程误差折线图统计有23个点出现负值,占到总点数的 76.7%,分析认为该原始地形有抬高的趋势。对于工 程建设而言,大面积抬高原始地形意味着增加土石方 [2] 刘友光,黄桂兰,黄全义等.工程中数字地面模型的建立 与应用及大比例尺数字测图[M].武汉:武汉测绘科技 大学出版社.1997 [3] 吴力新,史文中.地理信息系统原理与算法[M].北京: 科学出版社,2003 开挖量,无形中增加业主的投资成本。因此,即使高程 中误差满足要求,也必须对抬高原始地形的趋势予以 关注控制。 [4] 龚健雅.地理信息系统基础[M].北京:科学出版社, 2001 [5] 张宏,温永宁,刘爱利等.地理信息系统算法基础[M]. 北京:科学出版社,2006 4 总 结 (1)程序运用VBA语言编写,在Win XP系统At— [6] 姜友谊,黎晓.数字地面模型内插方法的优劣分析[J]. 西安科技学院学报,2001,21(3) [7] 佟士懋,邢芳芳,夏齐霄.AutoCAD ActiveX/VBA二次开 发技术基础及应用实例[M].北京:国防工业出版社, [8] 佟彪.VB语言与测量程序设计[M].北京:中国电力出 版社,2007 uoCAD 2004平台下运行成功。具体运用时可将宏代 码添加到自定义菜单下面运用十分方便,具体代码为: [展点(&z)] C C一一vbarun”d:/rjb/dgx/wangjg.dvb! zdgw.GCZanGaoCeng” [构网(&g)] C C一一vbarun”d:/rjb/dgx/wangjg.dvb! zdgw.ExtendTriangleByFile” [9] 陈佳丽.Visual Basic程序设计基础与实训教程[M].北 京:清华大学出版社,2005 Design Precision Examination Software of Topographic Map Based on TIN Wu MeiRong (Jiangsu Digitaland Technology Co.,Ltd.Nanjing 210007,China) Abstract:Commercial software,such as CASS and Guangzhou KAIS1 which are widely used in domestic S&M indus— try,are relatively weak in terms of Elevation accuracy evaluation.In the past,the elevation is calculated by manual inter— polation then carries out statistics work of the elevation RME.If encountering hundreds of checkpoints or even more,the workload is enormous and manual calculation error is prone.So it is very necessary and meaningful to research and de— velop,based on AutoCAD platform,topographic map accuracy testing software.Instead of using traditional manual ealcu— lation,it makes efficiency of calculation greatly improved.Practice shows that the design ideas is clear,algorithm is relia— ble. Key words:Topographical Map;Precision;Elevation;RMSE;Software