工程测量辅助计算系统的研制与开发毕业设计.doc_第1页
工程测量辅助计算系统的研制与开发毕业设计.doc_第2页
工程测量辅助计算系统的研制与开发毕业设计.doc_第3页
工程测量辅助计算系统的研制与开发毕业设计.doc_第4页
工程测量辅助计算系统的研制与开发毕业设计.doc_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈阳建筑大学毕业设计(论文)工程测量辅助计算系统的研制与开发毕业设计目录摘要iiAbstractiii第一章 绪论11.1 概述11.2 软件的研究意义21.3课题内容2第二章 工程测量中的常用计算42.1坐标正反算42.1.1概述42.1.2计算方法42.2高斯正反算52.2.1高斯投影52.2.2高斯正反算的基本方法62.3换带计算82.3.1换带计算的原因82.3.2换带计算的方法92.4圆曲线的计算102.4.1曲线的基本知识102.4.2圆曲线的计算方法11第三章 系统的开发工具及开发流程123.1 Visual Basic 6.0简介及其语言特点123.2系统的开发流程133.2.1角度与弧度的转化程序流程133.2.2高斯投影坐标正反算程序流程133.3.3坐标正反算程序流程143.3.4圆曲线计算程序流程15第四章 工程测量中辅助计算的系统设计与实现174.1 工程测量辅助计算系统的结构设计174.2 角度与弧度的转化184.2.1程序设计184.2.2功能实现184.3高斯投影坐标正反算194.3.1程序设计194.3.2功能实现294.4坐标正算反算304.4.1程序设计304.4.2功能实现334.5圆曲线计算334.5.1程序设计334.5.2功能实现40第五章 总结与展望415.1 技术与经济分析415.2总结415.3展望42参考文献43致谢44附录一45附录二5871工程测量中辅助计算系统的研制与开发第一章 绪论1.1 概述工程测量学是一门古老而又始终随着时代进步而发展的学科。作为一门以观测为基础的学科,它离不开数据的观测与计算。这些原始数据在早期科技还不十分发达的时代,只能凭借人们的肉眼或者粗糙的观测设备去观测获取,其数据的精度较差且数量上十分有限,而且在地理上的分散性也使得科学家们很难共同享有这些数据。后来随着观测设备和测量技术的发展,工程中观测的数据精度和数量已经有了很大的提高,一些大型重点工程观测的数据可达数十万个,所积累的数据量也正呈现爆炸式的增长。在这种情况下,传统的数据计算方式已很难满足海量数据的分类管理和高精度的要求,如何应对不断增长的海量数据的快速计算也是工程测量学一项亟待解决的问题。精密工程测量基本的特点就是精度要求高,工作难度大。他的工作对象都是高科技工程和尖端科学工程。传统的测量理论和方法,如三角网、导线网、线性网和钢尺量边导线等,已经不能满足精密工程测量的需要,要进行新理论、新方法的研究。例如,全站仪测量系统(TMS)、实时摄影测量系统、精密三维工业测量系统、全球卫星定位系统(GPS)、合成孔径雷达干涉系统(INSAR)、传感器和测量机器人等的进一步的研究与开发,更好地发挥他们在精密工程测量中的应用。更重要的一方面,随着科学技术的进步和精密工程测量的需要,研究开发像纳米技术和一些人类目前还未知的新材料、新技术在测量中的应用,使测量精度可达到纳米或微米,而且测量方法大大改善,这是所有测量人员的愿望和发展方向。在人类的生产生活活动中,工程测量是无处不在、无时不用,只要有建设就必然存在工程测量,因而工程测量的发展和应用前景是广阔的。除了工程测量学自身的发展,计算机领域内不断涌现的新技术也使其有了革命性的飞跃。计算机技术和工程测量学相结合产生了“工程测量辅助计算系统”的理念,其理念一经提出便迅速得到了工程测量学者和计算机专家的关注。工程测量辅助计算系统是利用先进的观测手段将各种与被测目标的高程、角度和距离的相关数据测出,将这些数据首先按要求分类存储,然后将其用预先制定好的计算方案让计算机解算出满足规定精度且合格的成果数据,最后再将这些成果数据归档存储,形成测量报告。若要将成果数据共享,辅助计算系统还可吸收了网络等先进的技术,将集成无数的资源,提供丰富的服务。辅助计算系统是个集观测、计算、存储和数据共享的信息平台,该平台能为工程技术人员和测量学者提供丰富的数据资源。因此还需要在测量系统的环境下有效地观测、计算和管理数据,挖掘海量数据快速计算和计算精准度潜力,从而使智能化测量系统真正发挥其作用。处在计算机和工程测量学的交叉地带的辅助计算系统,其海量的数据的快速计算和计算精准度不但是工程技术人员和测量学者遇到的新问题,同时也是计算机的一个典型应用,是在技术不断发展、数据密集和计算密集的应用越来越多的今天所提出的一个课题。1.2 软件的研究意义工程测量是贯穿工程中的各个阶段的一个基础工作,随着计算机软件技术、微电子以及激光技术等技术的发展与应用,工程测量新技术得以出现了一些新方法,再有随着我国城市建设的逐步扩大,大的建设工程不断增多,对工程测量也提出了新的要求,也推动和加快了工程测量新技术的发展。现如今社会的科技技术的快速发展使得工程测量的计算数据量急剧增加,进而研制开发出一些辅助计算的工具成了非常必要的问题。大量的数据计算仅靠人工处理和计算机的部分计算显然无法令人满意,这就需要运用现有的技术开发出所需要的计算系统。在工程测量中,内业资料计算占有很重要的比重,内业资料计算的准确无误与速度直接决定了测量工作是否能够快速、顺利地完成。而内业资料的计算方法及其所需达到的精度,则又直接取决于外业所用仪器及具体的放样目标和内业计算所用到的办公软件和计算方法。鉴于上述需求,开发一套新系统显得尤为迫切,若能实现直接利用开发语言进行编辑(如Visual Basic 6.0),设计出一个能够准确计算工程测量中所需的数据,又能将现有的数据通过此系统实现实地的放样,将在很大程度上减少人工的计算和操作工作,大大地提高工作效率。1.3课题内容在工程测量中,内业资料计算占有很重要的比重,内业资料计算的准确无误与速度直接决定了测量工作是否能够快速、顺利地完成。而内业资料的计算方法及其所需到的精度,则又直接取决于外业所用仪器及具体的放样目标和内业计算所用到的办公软件和计算方法。根据数据处理所用到的软件和计算方法本文设计了几种计算程序。本文的主要内容是研究有:(1)我国采用的椭球系有北京54坐标系和西安80坐标系,这次编程计算就是采用这两种椭球系,并采用实用公式按6度和3度分带投影,以及临带换带计算。编程环境是在Visual Basic 6.0下,采用VB语言编写。程序主要分为三部分,第一部分是高斯正算,第二部分是高斯反算,第三部分临带计算。(2)坐标正反算,坐标正算根据直线的起点坐标、直线的水平距离以及坐标方位角来计算终点的坐标的过程;坐标反算根据直线的起点和终点的坐标,计算直线的水平距离和坐标方位角的过程。程序分为正算和反算两部分。(3)圆曲线测设分两步进行,先测设曲线上起控制作用的主点(ZY,QZ,YZ);依据主点在测设曲线上每隔一定距离的里程桩,详细地标定曲线位置。通过VB语言写入各个曲线要素,完成对圆曲线的测设。第二章 工程测量中的常用计算2.1坐标正反算2.1.1概述坐标正反算的过程就是根据已知点的坐标、点间距离、点之间的坐标方位角,来进行之间的相互计算。直线的方向是用方位角来表示的,其中以坐标北方向为基准方向,顺时针旋转到直线的水平角度,称为该直线的坐标方位角。图2-1 两点间坐标关系如图2-1所示,已知A点坐标、A、B两点间距离和坐标方位角,计算出B点坐标的过程叫做坐标正算,已知直线AB起点A的坐标为(xA,yA),AB边的边长及坐标方位角分别为SAB和AB,需计算直线终点B的坐标;已知A、B两点的坐标,计算出A、B两点间距离和坐标方位角的过程叫做坐标反算,已知直线AB两端点的坐标分别为(xA,yA)和(xB,yB),则可以计算出直线边长DAB和坐标方位角AB。2.1.2计算方法坐标正算公式: ,。坐标反算公式:,由于反三角函数计算的结果有多值性所以在计算坐标方位角之前,要先计算象限角。计算步骤: ; ; 根据“”中所求的,求坐标方位角,1 坐标方位角为第一象限角,则:= ;2 坐标方位角为第二象限角,则:=180- ;3 坐标方位角为第三象限角,则:=180+ ;若坐标方位角为第四象限角,则:=360- 。 象限角划分: 第一象限角:090 (0/2)第二象限角:90180 (/2)第三象限角:180270 (3/2)第四象限角:270360 (3/22)2.2高斯正反算2.2.1高斯投影高斯投影是由德国数学家、物理学家、天文学家高斯于19 世纪20 年代拟定,后经德国大地测量学家克吕格于1912 年对投影公式加以补充,故称为高斯-克吕格投影,即等角横切椭圆柱投影。假想用一个圆柱横切于地球椭球体的某一经线上,这条与圆柱面相切的经线,称中央经线。以中央经线为投影的对称轴,将东西各3或130的两条子午线所夹经差6或3的带状地区按数学法则、投影法则投影到圆柱面上,再展开成平面,即高斯-克吕格投影,简称高斯投影。为了方便地实际应用高斯-克吕格投影,德国学者巴乌盖尔在1919年建议采用3带投影,并把坐标纵轴西移500km,在纵坐标前冠以带号,这个投影带是从格林尼治开始起算的。高斯-克吕格投影得到世界许多测量家的重视和研究。其中保加利亚的测量学者赫里斯托夫的研究工作最具代表性。他的两部力作1943年旋转托球上的高斯-克吕格坐标及1955年克拉斯托夫斯基椭球上的高斯和地理坐标,在理论及实践上都丰富和发展了高斯-克吕格投影。高斯克吕格投影是设想用一个椭圆柱横套在地球椭球的外面,并与设定的中央经线相切。这个狭长的带状的经纬线网叫做高斯-克吕格投影带。高斯-克吕格投影在长度和面积上变形很小,中央经线无变形,自中央经线向投影带边缘,变形逐渐增加,变形最大之处在投影带内赤道的两端。由于其投影精度高,变形小,而且计算简便(各投影带坐标一致,只要算出一个带的数据,其他各带都能应用),因此在大比例尺地形图中应用,可以满足军事上各种需要,能在图上进行精确的量测计算。高斯投影如图2-2所示:图2-2 高斯投影高斯克吕格投影分带规定:该投影是国家基本比例尺地形图的数学基础,为控制变形,采用分带投影的方法,在比例尺 1:2.5万-1:50万图上采用6分带,对比例尺为 1:1万及大于1:1万的图采用3分带。 6分带法:从格林威治零度经线起,每6分为一个投影带,全球共分为60个投影带,东半球从东经0-6为第一带,中央经线为3,依此类推,投影带号为1-30。其投影代号n和中央经线经度L0的计算公式为:L0=(6n-3);西半球投影带从180回算到0,编号为31-60,投影代号n和中央经线经度L0的计算公式为L0=360-(6n-3)。 3分带法:从东经130起,每3为一带,将全球划分为120个投影带,东经130-430,.17830-西经17830,.130-东经130。东半球有60个投影带,编号1-60,各带中央经线计算公式:L0=3n ,中央经线为3、6.180。西半球有60个投影带,编号1-60,各带中央经线计算公式:L0=360-3n ,中央经线为西经177、.3、0。我国规定将各带纵坐标轴西移500公里,即将所有y值加上500公里,坐标值前再加各带带号,以18带为例:原坐标值为y=243353.5m,西移后为y=743353.5,加带号通用坐标为y=18743353.5 。2.2.2高斯正反算的基本方法高斯正算公式就是由大地坐标(L,B)求解高斯平面坐标(x,y),即(L,B)=(X,Y)的坐标转换。投影必须满足的条件:(1)中央子午线投影后为直线。(2)中央子午线投影后长度不变。(3)投影具有正形性质,即正投影条件。正投影过程,在椭球上有对称于中央子午线的两点P1和P2,它们的大地坐标分别为(L,B)及(l,b),其中l为椭球面上p点的经度与中央子午线的经度L0之差:l=L-L0,P点在中央子午线之东,l为正,在西则为负,则投影后的平面坐标一定为P1(X,Y)和P2(X,-Y)。计算公式: 式中:; ; ; ; ; ; ; ; ;. 高斯反算公式则是由高斯平面坐标(x,y)求解大地坐标(L,B),即(x,y)=(L,B)的坐标变换。投影变换必须满足的条件a. x坐标轴投影成中央子午线,是投影的对称轴。b. x轴上的长度投影保持不变。c.投影具有正形性质,即正形投影条件。根据x计算纵坐标在椭球面上的投影的底点纬度,接着按计算()及经差l,最后得到,。计算公式: .式中:; ; ; .2.3换带计算2.3.1换带计算的原因在测量项目中,有些测区刚好处于投影带边缘,甚至有些工程横跨两个或两个以上投影带,如交通、水利、电力等较长的线路,为了坐标统一的需要,可以进行坐标换带,将相邻带的坐标换成同一系统的数据。坐标换带有直接换带计算法和间接换带计算法两种,间接换带计算法就是根据第一带的平面坐标 x1,y1和中央子午线的经度 L1, 按高斯-克吕格投影坐标反算公式求得大地坐标 B、L, 然后根据 B,L 和第二带的中央子午线经度 L2, 按高斯-克吕格投影坐标正算公式求得在第二带中的平面坐标 x2、y2。 由于在换带计算中,把椭球面上的大地坐标作为过渡坐标,因而称为间接换带法。 这种方法理论上严密,精度高,而且通用性强,虽然计算量较大,但可用电子计算机计算来克服,已成为坐标换带中最基本的方法。通常建立独立坐标系的方法是以一个国家控制点和方位角作为起算数据,观测边投影到平均高程面。此法在理论上不严密,会因为起算点不同而有不同结果,坐标不能统一,无法充分利用国家控制点的精度。所以需要通过严密换算公式,将国家坐标实现高精度的转换,形成独立的坐标系统。在海拔较低的地区(200m 以下),合理地选择处于测区中间位置附近的中央子午线,利用高斯-克吕格投影正反算公式计算,可以有效解决投影变形。 对于海拔较高的地区,可以选择测区的平均高程面作为投影面,解决投影变形的问题。确定国家坐标系的参考椭球的长半径,短半径,扁率,第一偏心率,第二偏心率等要素后,根据三个步骤进行坐标转换计算:确定投影面的大地高计算参考椭球的长半径; 根据高斯-克吕格投影反算经纬度;利用椭球参数,根据高斯-克吕格投影正算转换的平面坐标。在高海拔地区、离中央子午线较远的投影变形区域,高斯-克吕格投影正反算作为通用而严密的间接换带计算方法,可以弥补椭球模型的不足之处,为保证工程质量起到应有的作用。2.3.2换带计算的方法此方法的实质是把椭球面上的大地坐标作为过渡坐标。其解法是把某投影带(比如I带)内有关点的平面坐标(x,y),利用高斯投影反算公式换算成椭球面上的大地坐标(l,B),进而得到L1=Lo+l;然后再由大地坐标(l,B),利用投影正算公式换算成相邻带的(第带)的平面坐标(x,y)。在这一步计算时,要根据第带的中央子午线L2来计算经差l,亦即此时l=L1-L2。由于在换带计算中,这种方法理论上是严密的,精度最高,而且通用性最强,它不仅适用于63带,33带以及63带互相之间的邻带坐标换算,而且也适用于任意带之间的坐标换算。虽然这种方法计算量较大,但可用电子计算机计算来克服,故已成为坐标换带中最基本的方法。换带计算公式:用 a 表示椭球长半轴,b 表示椭球短半轴,为扁率,为第一扁心率,为第二扁心率,为卯酉圈曲率半径,为子午圈曲率半径,B 表示经度,L 表示纬度。高斯-克吕格投影反算公式:式中:; ; ; ; ;.高斯-克吕格投影正算公式: 式中:; 2.4圆曲线的计算2.4.1曲线的基本知识曲线计算, 无论是铁路、公路还是地铁隧道和轻轨,由于受到地形、地物、地质及其他因素的限制,经常要改变线路前进的方向。当线路方向改变时,在转向处需用曲线将两直线连接起来。因此,线路工程总是由直线和曲线所组成。曲线按其线形可分为:圆曲线、缓和曲线、复曲线和竖曲线等。道路中线测量是通过直线和曲线的测设,将道路中线的平面位置具体地敷设到地面上去,并标定出其里程,供设计和施工之用。道路中线测量也叫中桩放样。公路中线应满足的几何条件是:线形连续平滑;线形曲率连续(中线上任一点不出现两个曲率值);线形曲率变化率连续(中线上任一点不出现两个曲率变化值)。考虑上述几何条件,顾及计算与敷设方便,现代公路平面线形要素由直线、圆曲线和缓和曲线构成,称之为平面线形三要素。其中缓和曲线的曲率半径是从逐渐变到圆曲线半径R的变量。在与直线连接处半径为,与圆曲线连接处半径为R,曲线上任一点的曲率半径与该点至起点的曲线长成反比。目前公路线形设计已开始使用非对称线形(成为非对称平曲线)设计,特别是在互通立交匝道和山区高速高速公路线形设计中,这种线形设计使用得较多。非对称线形分为完全非对称线形和非对称非完整线形两种,所谓“完全非对称曲线”的含义就是第一缓和曲线和第二缓和曲线起点处(ZH或HZ)的半径为,圆半径为R,第一缓和曲线长1sl,第二缓和曲线长为2sl,12ssll。所谓“非完整”的含义是第一缓和曲线和第二缓和曲线的半径不是,而是1R、2R。而坐标法成为高速公路放样的主要方法,坐标法放样线路中线的这个操作过程中,最重要的一部就是计算线路放样点的坐标。 圆曲线测设的基本要求 应按曲线上中桩桩距的规定进行加桩,即进行圆曲线的详细测设。中线测量中一般均采用整桩号法。 (1)整桩号法:将曲线上靠近曲线起点的第一个桩凑成为l0倍数的整桩号,然后按桩距l0连续向曲线终点设桩。这样设置的桩均为整桩号。 (2)整桩距法:从曲线起点和终点开始,分别以桩距l0连续向曲线中点设桩,或从曲线的起点,按桩距l0设桩至终点。 (3)对中桩量距精度及桩位限差应符合规定;曲线测量闭合差也应符合规定。2.4.2圆曲线的计算方法圆曲线要素的计算: 式中:R为圆曲线半径,为转向角,T为圆曲线切线长,L为曲线长,E为曲线外矢距,D为切曲差,它们一起称为曲线要素。交点JD的里程是由中线丈量中得到,根据交点的里程和圆曲线测设元素,即可推算圆曲线上各主点的里程并加以校核。;; ; 圆曲线终点里程YZ应为圆曲线起点里程ZY加上圆曲线长L,而不是交点里程加切线长T,即YZ里程JD里程+T。因为在路线转折处道路中线的实际位置应为曲线位置,而非切线位置.第三章 系统的开发工具及开发流程3.1 Visual Basic 6.0简介及其语言特点Visual Basic是美国微软(Microsoft)公司研制的Windows环境下的应用程序开发工具。Visual Basic从1991年的1.0版发展到现在,已升级到9.0版本。Visual Basic 9.0是刚推出的版本,目前应用最为广泛的仍然是1998年推出的Visual Basic 6.0。Visual Basic 6.0是微软公司开发工具系列Visual Studio 6.0中的一员,这个开发工具系列包括Visual C+ 6.0、Visual FoxPro 6.0、Visual J+ 6.0等。同Visual Studio 6.0的其他开发工具相比,用Visual Basic 6.0开发应用程序最迅速、最简单8。Visual 意即可视的、可见的,指的是开发像Windows操作系统的图形用户界面(Graphic User Interface,GUI)的方法,它不需要编写大量代码去描述界面元素的外观和位置,只要把预先建立好的对象拖放到屏幕上相应的位置即可。Basic 实际上是一个短语的缩写,这个短语就是 Beginners all purpose symbolic instruction code ,其中文意思为“初始者通用符号指令代码语言”。Visual Basic 6.0提供了一种创建图形用户界面(GUI)的方法,利用这种方法,用户可不必书写复杂的描述界面元素外观和位置的程序代码,而只需将系统提供的对象放到屏幕上的适当位置,并通过属性窗口进行适当的设置或调整,就可以设计出一个优秀的应用程序界面。此外,用户除了可以使用单独的Visual Basic 6.0程序设计环境进行程序设计外,Visual Basic 6.0 程序设计系统还被包括在Excel Access 等众多Windows功能应用软件中,以供用户进行二次开发。无论用户是一个Windows 编程新手,还是已经具有丰富的Windows程序设计经验的专业程序开发人员,利用Visual Basic 6.0提供的良好开发环境,均可以快速地完成所需设计任务。VB的中心思想就是要便于程序员使用,无论是新手或者专家。VB使用了可以简单建立应用程序的GUI系统,但是又可以开发相当复杂的程序。VB的程序是一种基于窗体的可视化组件安排的联合,并且增加代码来指定组件的属性和方法。因为默认的属性和方法已经有一部分定义在了组件内,所以程序员不用写多少代码就可以完成一个简单的程序。不管是编制一个小的应用程序,还是开发一套大型的专业系统软件,甚至是开发一个跨越Internet 的分布式应用系统软件,Visual Basic 6.0 都为用户提供了合适的工具。利用Visual Basic 6.0的数据访问特性,用户可创建数据库、前端应用程序、用于大多数流行数据库格式的服务器组件等。本文是通过Mircosoft Virtual Basic 6.0编写一系列程序,使其实现同时计算大量测量数据,并且运用于日常工作中。3.2系统的开发流程3.2.1角度与弧度的转化程序流程弧度=角度*/180,角度=弧度*180/。其程序流程图如图3-1所示:启动程序输入任意角度N输入任意弧度LL=N*(Pi/180)N=L*(180/Pi)输出结果输出结果终止程序 Pi=3.1415926图3-1 角度与弧度转化程序流程图3.2.2高斯投影坐标正反算程序流程本设计主要阐述了高斯投影分带以及高斯投影坐标正、反算的推导公式,从而根据公式来编写基于VB语言基础上的换带及坐标转换程序。其程序流程图如图3-2所示:启动程序选择椭球系选择中央子午线经度高斯正算输入B,L值点击“BL-xy”按钮输出x,y值高斯反算输入x,y值点击“xy-BL”按钮输出B,L值点击“临带计算”按钮终止程序图3-4高斯投影坐标正反算程序流程图3.3.3坐标正反算程序流程任意两点在平面直角坐标系中的相对位置,可用两种方法确定:(1)用两点间的坐标增量表示。某点的坐标也可以看作是坐标原点至该点的坐标增量。(2)用两点连线(边)的坐标方位角和水平距离(边长)D表示。莫点的坐标也可以用坐标原点至该点的坐标方位角和水平距离表示。 坐标正反算程序流程图如图3-3所示启动程序输入已知点坐标,两点间距离,方位角输入已知两点坐标方位角是否有误计算坐标增量,得出未知点坐标输出结果坐标是否有误计算坐标增量,得出两点间距离及方位角输出结果终止程序 是 是 否 否图3-3 坐标正反算程序流程图3.3.4圆曲线计算程序流程曲线的测设通常采用偏角法、切线支距法和弦线偏距法等方法。但对于地形条件较差、缓曲角较大、缓和曲线常数(A)较小的情况则是不适合的,而采用极座标法,则能较方便准确地测设缓和曲线。程序流程图如图3-4所示: 开 始录入曲线要素输入起始点桩号判断数据是否合格 否 是计算输出结果生成EXCLE表格 图3.4曲线计算程序流程图第四章 工程测量中辅助计算的系统设计与实现4.1 工程测量辅助计算系统的结构设计工程测量辅助计算系统整体结构框架的设计如图4-1所示:角度与弧度之间的转化高斯投影正算反算坐标正算反算综合曲线计算工程测量辅助计算系统VB程序 图4-1 工程测量辅助计算系统整体结构框架设计图工程测量辅助计算系统主要实现以下四个功能:(1)角度和弧度之间的相互转化,即输入任意角度计算出弧度,或者输入任意弧度计算出角度。 (2)高斯投影的正算和反算,即高斯正算由大地坐标(B,L)算出高斯坐标(x,y),高斯反算由高斯坐标(x,y)算出大地坐标(B,L)。 (3)坐标正算和反算,即由极坐标转化为直角坐标称为“坐标正算”;由直角坐标转化为极坐标称为“坐标反算”。(4)计算曲线元素长度和主桩点平面坐标,在计算加桩点的平面坐标。从线路起点开始,按等间距计算各个加桩点坐标。4.2 角度与弧度的转化 4.2.1程序设计角度与弧度的转化的主要问题在于它们之间相互转化所应用的公式,如角度转化为弧度所用公式是:1弧度=180/度;弧度转化角度所用公式是:1度=/180弧度。具体源代码如表4-1所示:表4-1 角度与弧度转化程序源代码Private Sub Command1_Click()Dim du As Double 定义double类型的变量度 Dim fen As Double 定义double类型的变量分 Dim miao As Double 定义double类型的变量秒 du = txtdu.Textfen = txtfen.Textmiao = txtmiao.Texttxthd.Text = (du + fen / 60 + miao / 3600) * 3.1415926 / 180End SubPrivate Sub Command2_Click()Dim hd As DoubleDim jd As Doublehd = txthd.Textjd = hd * 180 / 3.1415926txtdu.Text = Fix(jd)txtfen.Text = Fix(jd - Fix(jd) * 100)txtmiao.Text = (jd - Fix(jd) - Fix(jd - Fix(jd) * 100) / 100) * 10000End Sub4.2.2功能实现 在Visual Basic6.0中添加命令按钮(CommanButton)、文本框(TextBox)和标签(Label)三个控件,输入角度或弧度便可以计算出相应的结果如图4-2和4-3所示。图4-2 角度转化弧度结果图4-3 弧度转化角度结果 4.3高斯投影坐标正反算4.3.1程序设计本次设计根据高斯的正反算公式写出了基于VB语言的程序设计,其程序设计任务完成了由地理坐标向北京54平面坐标系和西安80平面坐标系转换的功能,以及由北京54坐标系和西安80坐标系向地理坐标系转换的功能,同时也有同一平面坐标系不同投影带之间的换带计算和同一平面坐标系相同投影带临带计算等相互转换的功能。程序源代码如表4-2所示: 表4-2高斯投影坐标正反算临带计算程序源代码Public B, L, L0, X, Y, n, ll As DoublePublic lenL As IntegerPublic Sub Pro54() 54椭球系高斯正算公式 Dim ll#, n#, a0#, a4#, a6#, a3#, a5#, cosB# cosB = Cos(B) ll = L - DoToHu(L0) n = 6399698.902 - (21562.267 - (108.973 - 0.612 * cosB * cosB) * cosB * cosB) * cosB * cosB a0 = 32140.404 - (135.3302 - (0.7092 - 0.004 * cosB * cosB) * cosB * cosB) * cosB * cosB a4 = (0.25 + 0.00252 * cosB * cosB) * cosB * cosB - 0.04166 a6 = (0.166 * cosB * cosB - 0.084) * cosB * cosB a3 = (0.3333333 + 0.001123 * cosB * cosB) * cosB * cosB - 0.1666667 a5 = 0.0083 - (0.1667 - (0.1968 + 0.004 * cosB * cosB) * cosB * cosB) * cosB * cosB X = 6367558.4969 * B - (a0 - (0.5 + (a4 + a6 * ll * ll) * ll * ll) * ll * ll * n) * Sin(B) * cosB Y = (1 + (a3 + a5 * ll * ll) * ll * ll) * ll * n * cosBEnd SubPublic Sub Pro80() 80椭球系高斯正算公式 Dim ll#, n#, a0#, a4#, a6#, a3#, a5#, cosB# cosB = Cos(B) ll = L - DoToHu(L0) n = 6399596.652 - (21565.045 - (108.996 - 0.603 * cosB * cosB) * cosB * cosB) * cosB * cosB a0 = 32144.5189 - (135.3646 - (0.7034 - 0.0041 * cosB * cosB) * cosB * cosB) * cosB * cosB a4 = (0.25 + 0.00253 * cosB * cosB) * cosB * cosB - 0.04167 a6 = (0.167 * cosB * cosB - 0.083) * cosB * cosB a3 = (0.3333333 + 0.001123 * cosB * cosB) * cosB * cosB - 0.1666667 a5 = 0.00878 - (0.1702 - 0.20382 * cosB * cosB) * cosB * cosB X = 6367452.1328 * B - (a0 - (0.5 + (a4 + a6 * ll * ll) * ll * ll) * ll * ll * n) * Sin(B) * cosB Y = (1 + (a3 + a5 * ll * ll) * ll * ll) * ll * n * cosBEnd SubPublic Sub ConPro54() 54椭球系高斯反算公式 Dim Bf#, bet#, Z#, Nf#, b2#, b3#, b4#, b5#, cos2B#, cos2Bf# bet = X / 6367558.4969 cos2B = Cos(bet) * Cos(bet) Bf = bet + (50221746 + (293622 + (2350 + 22 * cos2B) * cos2B) * cos2B) * 0.0000000001 * Sin(bet) * Cos(bet) cos2Bf = Cos(Bf) * Cos(Bf) Nf = 6399698.902 - (21562.267 - (108.973 - 0.612 * cos2Bf) * cos2Bf) * cos2Bf Z = Y / (Nf * Cos(Bf) b2 = (0.5 + 0.003369 * cos2Bf) * Sin(Bf) * Cos(Bf) b3 = 0.333333 - (0.166667 - 0.001123 * cos2Bf) * cos2Bf b4 = 0.25 + (0.16161 + 0.00562 * cos2Bf) * cos2Bf b5 = 0.2 - (0.1667 - 0.0088 * cos2Bf) * cos2Bf B = Bf - (1 - (b4 - 0.12 * Z * Z) * Z * Z) * Z * Z * b2 L = DoToHu(L0) + (1 - (b3 - b5 * Z * Z) * Z * Z) * ZEnd SubPublic Sub ConPro80() 80椭球系高斯反算公式 Dim Bf#, bet#, Z#, Nf#, b2#, b3#, b4#, b5#, cos2B#, cos2Bf# bet = X / 6367558.4969 cos2B = Cos(B) * Cos(B) Bf = bet + (50221746 + (293622 + (2350 + 22 * cos2B) * cos2B) * cos2B) * 0.0000000001 * Sin(bet) * Cos(bet) cos2Bf = Cos(Bf) * Cos(Bf) Nf = 6399698.902 - (21562.267 - (108.973 - 0.612 * cos2Bf) * cos2Bf) * cos2Bf Z = Y / (Nf * Cos(Bf) b2 = (0.5 + 0.00336975 * cos2Bf) * Sin(Bf) * Cos(Bf) b3 = 0.333333 - (0.166667 - 0.001123 * cos2Bf) * cos2Bf b4 = 0.25 + (0.161612 + 0.005617 * cos2Bf) * cos2Bf b5 = 0.2 - (0.16667 - 0.00878 * cos2Bf) * cos2Bf B = Bf - (1 - (b4 - 0.147 * Z * Z) * Z * Z) * Z * Z * b2 L = DoToHu(L0) + (1 - (b3 - b5 * Z * Z) * Z * Z) * ZEnd Sub投影计算Private Sub cmdCalc_Click()B = Val(txtB.Text) L = Val(txtL.Text) X = Val(txtx.Text): Y = Val(Mid(txty.Text, 3) 计算中央子午线经度和带号 If optTran.Value = True Then 正算 If lenL = 6 Then n = Int(L / lenL + 1)L0 = n * lenL - lenL / 2ElseIf lenL = 3 Then n = Int(L - 1.5) / lenL + 1) L0 = n * lenLEnd If ElseIf optCon.Value = True Then 反算 n = Val(Left(txty.Text, 2) If lenL = 6 ThenL0 = n * lenL - lenL / 2ElseIf lenL = 3 Then L0 = n * lenLEnd If End If B = DoToHu(B) L = DoToHu(L) 根据椭球进行投影计算 If optTran.Value = True Then 正算 If Combo1.ListIndex = 0 Then 54 Call Pro54 调用54椭球系高斯正算公式 ElseIf Combo1.ListIndex = 1 Then 80 Call Pro80 调用80椭球系高斯正算公式 End If Y坐标加500公里加带号 Y = Y + n * 1000000 + 500000 txtx.Text = Format(X, 0.0000) txty.Text = Format(Y, 0.0000) ElseIf optCon.Value = True Then 反算 Y坐标还要再减500km Y = Y - 500000 If Combo1.ListIndex = 0 Then 54 Call ConPro54 调用54椭球系高斯反算公式 ElseIf Combo1.ListIndex = 1 Then 80 Call ConPro80 调用80椭球系高斯反算公式 End If txtB.Text = Format(HuToDo(B), 0.00000000) txtL.Text = Format(HuToDo(L), 0.00000000) End IfEnd Sub换带计算Private Sub cmdChange_Click() 6度带和3度的换带选择X = Val(txtx.Text): Y = Val(Mid(txty.Text, 3) Y坐标还要再减500km Y = Y - 500000 计算开始的中央子午线经度和带号 n = Val(Left(txty.Text, 2) If lenL = 6 Then L0 = lenL * n - 3 ElseIf lenL = 3 Then L0 = lenL * n End If 根据椭球进行投影反算 If Combo1.ListIndex = 0 Then 54 Call ConPro54 ElseIf Combo1.ListIndex = 1 Then 80 Call ConPro80 End If 计算目标中央子午线经度和带号 lenL = IIf(lenL = 6, 3, 6) If lenL = 6 Then n = Int(HuToDo(L) / lenL + 1)L0 = n * lenL - lenL / 2ElseIf lenL = 3 Then n = Int(HuToDo(L) - 1.5) / lenL + 1) L0 = n * lenLEnd If 根据椭球进行投影计算 If Combo1.ListIndex = 0 Then 54 Call Pro54 ElseIf Combo1.ListIndex = 1 Then 80 Call Pro80 End If Y坐标加500公里加带号 Y = Y + n * 1000000 + 500000 txtx.Text = Format(X, 0.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论