首页 测绘工程毕业论文精编版

测绘工程毕业论文精编版

举报
开通vip

测绘工程毕业论文精编版……………………………………………………………精品资料推荐……………………&helli...

测绘工程毕业论文精编版
……………………………………………………………精品资料推荐…………………………………………………大学本科学生毕业设计(论文)测量平差程序设计摘要测量平差是测绘类专业的一门重要的专业基础课程,是用于观测数据处理的一门应用数学。但是因为其计算量比较大,这变使大家在学习和使用的时候感觉十分头疼。虽然有很多简化了的平差算法,比如高斯约化法,但是这些算法一方面会影响计算精度,另一方面也不能有效的减少计算量。平差计算是利用最小二乘原理消除观测值与起算数据之间的矛盾,求出各待定元素的平差值并评定精度。而在经典测量平差中,主要研究四种平差模型方程(条件平差、间接平差、附有未知参数的条件平差和附有限制条件的间接平差)的列立和求解,其牵涉到大量的矩阵运算,传统的人工计算工作量很大。随着计算机的出现,矩阵运算就变得轻松,而且计算机的运行速度快,精度高,特别是对于具有大量矩阵运算,计算机轻松解决。前提是要编好相应的程序代码。本文运用visualbasic语言编制了一个平差软件,主要对水准网和附合导线进行了平差的编制和软件程序界面的设计,实现的功能主要有对水准网数据和附合导线数据的平差计算,当然为了平差后能使用数据,本软件还设计了数据输出的功能,使界面更友好,方便用户使用。关键词:水准网间接平差,visualbasic,附合导线条件平差,visualbasic界面设计(GUI)ABSTRACTThemeasurementadjustmentisaprofessionalbasiccourseofGeomaticsengineer,ItisusedtoprocesstheobservationdataofAppliedMathematics,whichischaracterizedbythelargeamountofcalculation,theprocessoflearningandtheusingbecomeverycomplex.AlthoughmanyadjustmentalgorithmmethodsaresimplifiedsuchasGaussreductionmethod,butontheonehandthesealgorithmsaffecttheaccuracyofcalculation,ontheotherhandtheycannoteffectivelyreducetheamountofcalculation.Adjustmentcalculationistheprincipleofleastsquarestoeliminatethecontradictionbetweentheobservedvaluesandtheinitialdata,calculatingtheadjustedvaluesofallpendingelementsandassessingaccuracy.Classicalsurveyingadjustmentmainlycontainsfouradjustmentmodelequations(conditionsadjustment,indirectadjustment,accompaniedbytheunknownparametersconditionadjustmentandaccompaniedbyrestrictionsinindirectadjustment)ofcolumnandsolving,itinvolveslargenumberofmatrixoperations,thecalculationworkloadoftraditionalmanualmeasurementdataprocessingmethodrequiresthepreparationofaspecifictreatmentprogrammatrixoperations,sotheproceduresarecomplicatedanddifficult.Theemergenceofthecomputermakesmatrixoperationsbecomeeasy,andthecomputerisrunningfastandathighprecision,tothelargenumberofmatrixoperations,underthepremiseofthecompiledcode,thecomputercaneasilysolvemanyproblems.Inthispaper,anadjustmentsoftwareisusedbyvisualbasiclanguageofthelevelingnetworkandconnectingtraverseadjustmentofthepreparationandprograminterfacedesigntoachievethemainfunctionofthelevelingnetworkdataandwiredataadjustmentcalculation.Thesoftwarealsodesignthefunctionofthedataoutput,itisfriendlyandconvenientforuserstooperate.Keywords:parameteradjustmentoflevelingnetwork,Visualbasic,Visualbasicinterfacedesign(GUI)目录中文摘要ⅠABSTRACTⅡ1引言11.1现状分析11.2目的及意义11.3研究内容22VisualBasic编程语言概述32.1VisualBasic简介32.1.1VisualBasic的发展32.1.2VB的功能特点32.2VisualBasic简介42.2.1操作界面简介42.2.2几个常用控件介绍72.2.3VB编程语言 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 写和变量声明72.2.4矩阵在VB中的表述72.2.5VB中矩阵运算82.2.6程序控制语句112.2.7控件数组123平差计算基本理论133.1条件平差133.1.1条件平差原理133.1.2条件平差程序设计流程图153.2间接平差163.2.1间接平差原理163.2.2间接平差程序设计流程图183.2附合导线平差计算193.3.1附合导线平差原理293.2.2附合导线平差程序设计流程图214平差软件界面设计234.1平差软件整体展示234.1.1登录界面234.1.2平差软件主界面234.1.3水准网间接平差界面244.1.4附合导线平差界面254.2平差软件界面设计254.2.1Visualbasic(GUI)简介254.2.2界面设计264.3平差软件界面设计264.3.1水准网间接平差界面设计264.3.2附合导线平差界面设计285平差软件程序设计305.1水准网间接平差305.1.1数据输入305.1.2软件的使用315.1.3程序代码325.2附合导线平差345.2.1数据输入345.2.2软件的使用355.2.3程序代码366算例演算446.1水准网间接平差446.2附合导线条件平差457结论48参考文献491引言1.1现状分析VisualBasic是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。从任何 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 来说,VB都是世界上使用人数最多的语言——不仅是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。水准网是建立高程控制的一种常规方法。为了提高水准测量的效率,使得水准测量的内外业一体化,提高数据处理速度、精度和可靠性,外业观测上需采用更加科学、快速的作业模式,内业数据处理上需采用简便、可靠的数据处理软件。随着测绘仪器和计算机软件业的发展,目前市场上已出现多种控制网平差计算软件,不过有些平差软件界面复杂,难懂,需要一段时间的学习才能使用;还有就是这些软件,要么定权不合理,要么就价格昂贵。比如常用的平差易软件就是在Windows系统下用VC开发的控制测量数据处理软件,就存在着权分配不合理,以致改正数过大,平差结果偏离真实值的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。虽然发现了问题,然而由于VC语言的局限和作为收费软件,其源代码不公开等缘故,致使此类问题久久不能得到解决。1.2目的及意义VisualBasic编程语言是一种可视化编程语言,通过近几年的发展,它已成为一种专业化的开发语言和环境。其依托于现代pc机的高性能,以计算机性能换取编程的简便。它把科学计算、结果的可视化和编程集中在一个可视化的环境中,不仅功能强,而且便于输入数据,易于掌握和使用。测量平差是测绘类专业的一门重要的专业基础课程,是用于处理观测数据的一门应用数学。平差计算是利用最小二乘原理消除观测值与起算数据之间的矛盾,求出各待定元素的平差值并评定精度。而在经典测量平差中,主要研究四种平差模型方程(条件平差、间接平差、附有未知参数的条件平差和附有限制条件的间接平差)的列立和求解,其牵涉到大量的矩阵运算,传统的人工计算工作量很大,已往的测量数据处理方法需要编制特定的处理矩阵运算的程序,而且程序复杂,难度大。随着计算机的出现,矩阵运算就变得轻松,而且计算机的运行速度快,精度高,特别是对于具有大量矩阵运算,计算机轻松解决。前提是要编好相应的程序代码。本文将分析经典测量平差中的条件平差模型和间接平差模型的特点,重点运用VisualBasic编程语言编写水准网间接平差和单一附合导线的平差程序软件。用VisualBasic语言编写出经典平差模型程序,运用到教学过程中使各种模型的 公式 小学单位换算公式大全免费下载公式下载行测公式大全下载excel公式下载逻辑回归公式下载 推导与实际例题相结合,对于提高教学质量及加强学生对于《误差理论与测量平差基础》课程的理解具有重要的意义;对于我们即将走上工作岗位的同学来说,它将为我们处理各种实际工程的计算提供了极大的便利,也可以为今后更多的工程应用编程打下基础,提高工作效率和质量。同时也使我们在编程方面有更为深入的理解和掌握,对我们以后工作很有帮助,比如可编程计算器等测量辅助工具,这将会提高我们的工作效率。1.3研究内容本设计主要运用VisualBasic编程语言,编制控制测量中水准网和单一导线的平差程序软件。实现的功能包括:1.水准网间接平差的平差值,在最小二乘法准则()要求下求出误差方程中的待定参数。2.单一导线和导线网的近似坐标推算:近似坐标的推算不仅是后续工作的基础,为条件方程系数阵的求取做准备,更能在此基础上计算坐标闭合差,检验外业成果的好坏。3.VisualBasicGUI界面设计:对于用户来说,程序可视化,同时又易懂,便于输入数据。4.平差数据结果输出:便于用户使用和查看。5.将几个平差程序集中在一个系统中,并生成exe可执行程序,在windows环境下通用,无需安装。因此,本平差软件让你的使用绝对省心。对每一个功能的实现,其后都附有应的算例。2VisualBasic编程语言概述2.1VisualBasic简介2.1.1VisualBasic的发展VisualBasic(简称VB)是美国微软公司推出的windows环境下的软件开发工具,使用VB可以既快又简单地开发windows应用软件。Visual是指开发图形用户界面(GUI)的方法。Visual的意思是“视觉的”或“可视的”,也就是直观的编程方法。在VB中引入了控件的概念,如各种各样的按钮、文本框、复选框等,VB把这些控件模式化,并且每个控件都由若干属性来控制其外观、工作方法。这样,采用方法无需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的控件加到屏幕上,就像使用“画图”之类的绘图程序,通过选择画图工具来画图一样,可视化程序设计语言除了提供常规的编程功能外,还提供一套可视化的设计工具,便于程序员建立图形对象,巧妙地把windows编程的复杂性“封装”起来。VB在原有BASIC语言的基础上进一步发展,包含了数百条语句、函数及关键词,其中很多与WindowsGUI有直接关系。VB与BASIC之间有着千丝万缕的联系,如果学过BASIC语言的话,看到VB程序结构会感到很亲切。专业人员可以用VisualBasic实现其他任何Windows编程语言的功能,而初学者只要掌握几个关键词就可以建立实用的应用程序。随着微型计算机技术的飞速发展,美国微软公司以其具有多任务性、图形用户界面、动态数据交换、对象链接与嵌入等强大功能,而成为当今微型计算机操作系统的主流产品。许多商用软件公司为适应这一趋势推出windows境下的软件开发工具,如VisualC++,Delphi,PowerBuilder等等。但对于初学者希望在windows环境中开发一般的应用程序,VB无疑是较理想的。VB是目前众多windows软件开发工具中效率最高的一个。2.1.2VB的功能特点1.面向对象VB采用了面向对象设计思想,它基本思路是把复杂设计问题分解为个个能够完成独立功能——相对 简单对象集合。所谓“对象”就是个可操作实体如窗体、窗体中命令按钮、标签、文本框等面向对象编程就好像搭积木样员可根据和界面设计要求直接在屏幕上“画\"出窗口、菜单、按钮等区别类型对象并为每个对象设置属性。 2.事件驱动在Windows环境下是以事件驱动方式运行每个对象的都能响应多个区别事件,每个事件都能驱动段代码——事件过程该代码决定了对象功能通常称这种机制为事件驱动事件可由用户操作触发也可以由系统或应用触发例如单击个命令按钮就触发了按钮Click(单击)事件该事件中代码就会被执行若用户未进行任何操作(未触发事件)则就处于等待状态整个应用就是由彼此独立事件过程构成。3.软件Software集成式开发VB为编程提供了个集成开发环境在这个环境中编程者可设计界面、编写代码、调试直至把应用编译成可在Windows中运行可执行文件并为它生成安装VB集成开发环境为编程者提供了很大方便。4.结构化设计语言VB具有丰富数据类型是种附合结构化设计思想语言而且简单易学此外作为种设计语言VB还有许多独到的处 5.强大数据库访问功能VB利用数据Control控件可以访问多种数据库VB 6.O提供ADOControl控件不但可以用最少代码实现数据库操作和控制也可以取代DataControl控件和RDOControl控件 6.支持对象链接和嵌入技术VB核心是对对象链接和嵌入(OLE)技术支持它是访问所有对象种思路方法利用OLE技术能够开发集声音、图像、动画、字处理、Web等对象于体 7.网络功能VB 6.O提供了DltTML(Dynamic}tTML)设计工具利用这种技术可以动态创建和编辑Web页面使 用户在VB中开发多功能网络应用软件Software 8.多个应用向导VB提供了多种向导如应用向导、安装向导、数据对象向导和数据窗体向导通过它们可以快速地创建区别类型、区别功能应用 9.支持动态交换、动态链接技术.通过动态数据交换(DDE)编程技术VB开发应用能和其他Windows应用的间建立数据通信通过动态 链接库技术在VB中可方便地用C语言或汇编语言编写也可Windows应用接口(.API) 10.联机帮助功能在VB中利用帮助菜单和F1功能键用户可随时方便地得到所需要帮助信息VB帮助窗口中显示了有关举例代码通过复制、粘贴操作可获取大量举例代码为用户学习和使用提供方便2.2VisualBasic程序设计简述2.2.1操作界面简介在默认情况下,visualbasic的操作界面包含了6个主要的窗口:主窗体,窗体窗口,工具箱窗口,属性窗口,工程管理窗口和代码窗口。下面简要介绍VB中这几个窗口:1.主窗体:图2.1VB主窗体图2.窗体窗口:它是用来对应用程序进行界面设计的窗口,用户通过与窗体上的控件交互即可得到相应的结果,体现了VB的可视化编程思想。值得注意的是:每一个窗体窗口必须有一个唯一的名字。在设计状态下,为方便用户对控件的定位,窗体由网络点组成,可以通过“工具”|“选项”命令,在“通用”标签的“显示网格”中改变“宽度”或“高度”的值来改变网格的间距图2.2VB窗体窗口图3.工具箱窗口工具箱中包含有许多图标,它是各种控件的制作工具,利用这些工具,用户可以在窗体上设计各种控件。标准工具箱内只包含了19个控件(指针不是控件,其作用仅用于窗体和控件的移动或调整它们的大小),用户可根据需要添加其它控件到工具箱中。具体方法是选择“工程”|“部件”命令打开“部件”对话框,在控件标签页中选择需要的部件,然后单击“确定”按钮,此时工具箱中将显示新添加的控件图标按钮。图2.3VB工具箱窗口图4.属性窗口用于设置对象的属性值,所有窗体或控件的属性都可以通过属性窗口进行修改。如对象名称、颜色、字体等。属性窗口包括以下几个部分:(1).对象列表框:单击下拉按钮可打开当前窗体对象列表,可选择要设定属性的对象。(2).属性显示排列方式:有“按字母序”和“按分类序”两个标签。(3).属性列表框:列出当前对象在设计模式下可用的属性及当前值,左栏显示属性名称,右栏显示相应的属性值,并可由用户设置该属性值。图2.4VB属性窗口图(4).属性说明:显示当前属性的含义。5.工程管理窗口工程管理窗口保存了这个工程(或应用程序)所有的文件,如工程文件(.vbp)、窗体文件(.frm)、标准模块文件(.bas)和类模块文件(.cls)等。工程管理窗口上方有3个按钮,分别是:(1).查看代码:切换到代码窗口,显示和编辑代码。(2).查看对象:切换到窗体窗口,显示和编辑对象。(3).切换文件夹:切换本窗口内文件夹显示方式。图2.5VB工程管理窗口图6.代码窗口代码窗口是专门用来进行程序设计的窗口,显示和编辑程序代码。每个窗体都有各自的代码窗口。打开代码窗口的方法:(1)在工程管理窗口选择一个窗体或标准模块,并选择“查看代码”按钮。(2)在窗体窗口双击控件或窗体本身。图2.6VB代码窗口图(3)选择“视图”|“代码窗口”命令。2.2.2几个常用控件介绍1.标签Label功能:用于显示文本(输出)信息,不能作为输入信息的界面。可以设置标签的背景颜色,本软件界面设计时就用到透明属性。2.文本框TextBox功能:是一个文本编辑区域,可以输入,编辑和显示正文内容。这是使用最频繁的一个控件。可以通过改变属性来改变文本大小,颜色等。3.命令按钮CommandButton功能:接受用户输入的命令。当用户鼠标点击此按钮,便可以执行命令,实现所编功能。2.2.3VB编程语言书写和变量声明VB语言与其他语言书写有不同,所以有必要了解VB的书写方式1.VB代码不区分字母的大小写。系统关键字自动转换每个单词的首字母大写;用户自定义行以第一次为准。2.语句书写自由。每一行可书写几个语句,之间用冒号分隔;一行最多255个字符;一条语句可分若干行书写,用续行符(空格+下划线)连接。3.注释利于程序的维护和调试。用单撇号“‘”以及“编辑”工具栏的“设置注释块”,则VB中注释语句会自动变为绿色,不参与运行。4.VB中变量声明与其他编程语言的变量声明也有不同,下面简单的介绍下:(1)声明形式:Dim变量名As自定义类型名例DimStudentAsStudType(2)引用:形式:变量名.元素名例表示Student变量中的姓名,第4门课程的成绩,则表示如下:Student.Name,Student.Mark(4)(3)赋值:如:Student.Name=“王刚”Student.Mark(4)=98其中常用的有声明形式和赋值,而赋值是使用最频繁的,本次编程中也大量使用赋值变量声明2.2.4矩阵的在VB中的表示我们知道平差计算中,矩阵计算是必须的,像系数矩阵,法方程矩阵等都要用到矩阵。所以用VB编制平差程序的要点和难点就是进行矩阵运算的编制。在了解矩阵的运算法则后,便可用VB语言编程了。而用什么来表示矩阵呢?那就是数组,下面重点介绍下数组,这对程序的开发至关重要!1.数组不是一种数据类型,而是一组相同类型的变量的集合。在程序中使用数组的最大好处是用一个数组名代表逻辑上相关的一批数据,用下标表示该数组中的各个元素,和循环语句结合使用,使得程序书写简洁。使用数组时需注意:数组必须先声明后使用。数组分两类:一类是静态(定长)数组,第二累时动态(可变长)数组。像a(7,7)这便是静态数组,a(n,t)就是动态数组,其中的字母代表未知数。2.静态数组,也就是定长的数组。如我们想将矩阵1234这个两行两列的矩阵用VB来表示,可以表示为Dima(1to2,1to2)asdouble‘变量声明a(1,1)=1:a(1,2)=1:a(2,1)=1:a(2,2)=1这样数组也变在VB中形成了,当然也可以联合for循环使用,则语句变得更为简洁。本程序中用到此联合,来求解矩阵运算。3.动态数组是指在声明数组时未给出数组的大小(省略括号中的下标),当要使用它时,随时用ReDim语句重新指出数组大小。如redima(1ton,1ton)这样便定义了一个动态的n维数组,注意声明必须是redim,不然程序会出错。这里还需指明的是Dim、Private、Public变量声明语句是说明性语句,可出现在过程内或通用声明段;ReDim语句是执行语句,只能出现在过程内。在过程中可多次使用ReDim来改变数组的大小和维数。但使用ReDim语句会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数来保留数组中的数据。使用Preserve时只能改变最后一维的大小,前面几维大小不能改变。还有ReDim中的下标可以是常量,也可以是有了确定值的变量,这在编程中要注意!另外静态数组在程序编译时就分配存储单元,而动态数组在运行时才分配存储单元2.2.5VB中矩阵的运算为了解决中矩阵运算问题,编好相应的矩阵运算代码是必须的,经过一个月的时间终于将矩阵运算的代码编成功,特别是矩阵求逆的运算。不过编制的矩阵求逆代码前提是满秩的,对于秩亏矩阵,就不适用了,由于时间原因,就没继续深入的研究其代码。当然了,我们平时见到的平差一般都是满秩的,所以此代码的适用性还是挺强的。下面就具体介绍下,各矩阵运算的代码和思想。1.矩阵加减法(1)这个代码比较容易编写,只要加矩阵中对应的数相加减便可以得到结果。所以此处不给出代码2.矩阵乘法(1)这个代码编程的要点是跟据矩阵乘法的运算法则,即矩阵的没一行的数分别与另外矩阵的每一列对应的数相乘并全部进行相加。知道一个原则,编程就容易了,多次使用for循环实现!(2)代码:PublicSubjzcf(ByRefa()AsDouble,ByRefb()AsDouble,ByRefc()AsDouble)m=UBound(a,1)n=UBound(b,2)ni=UBound(a,2)Fori=1TomForj=1TonForki=1Tonic(i,j)=c(i,j)+a(i,ki)*b(ki,j)NextNextNextEndSub3.矩阵转置(1)这个代码编程的也比较简单,即将矩阵的行转化成列就行了。(2)代码:PublicSubjzzz(ByRefa()AsDouble,ByRefb()AsDouble)m=UBound(a,1)n=UBound(a,2)Fori=1TonForj=1Tomb(i,j)=a(j,i)NextNextEndSub4.矩阵求逆(1)这个代码编程很复杂,此代码运用的是高斯约化法进行矩阵求逆计算,编程的思想是先进行增广矩阵,然后用高斯约化法,将第一列中不是零的数找出,进行约化,即将每行数字除以开头数字,使每行开头不是零的数化为1,之后减去第一行,这样这行的第一列的开头就为零了。用这种方法就可以将矩阵变为上三角矩阵,最后就得到矩阵求逆结果。。(2)代码:PublicSubjzqn(ByRefqa()AsDouble,ByRefna()AsDouble)Dima()n=UBound(qa,1)ReDima(n,2*n)Fori=1TonForj=1Tona(i,j)=qa(i,j)NextjNextiFori=1TonForj=n+1To2*nIfj-i=nThena(i,j)=1Elsea(i,j)=0EndIfNextjNextiFori=1TonIfa(i,i)=0ThenForq=iTonIfa(q,i)<>0ThenForW=iTo2*nzj=a(i,W)a(i,W)=a(q,W)a(q,W)=zjNextWExitForEndIfNextqIfq>nThenMsgBox"此矩阵不可逆":ExitSubEndIfForK=2*nToiStep-1a(i,K)=a(i,K)/a(i,i)NextKForj=i+1TonIfa(j,i)<>0ThenForK=2*nToiStep-1a(j,K)=a(j,K)/a(j,i)-a(i,K)NextKEndIfNextjNextiFori=nTo1Step-1Ifa(i,i)=0ThenForq=i-1To1Step-1Ifa(q,i)<>0ThenForW=iTo2*nzj=a(i,W)a(i,W)=a(q,W)a(q,W)=zjNextWExitForEndIfNextqEndIfForK=2*nToiStep-1a(i,K)=a(i,K)/a(i,i)NextKForj=i-1To1Step-1Ifa(j,i)<>0Thenxxx=a(j,i)ForK=2*nTo1Step-1a(j,K)=a(j,K)/xxx-a(i,K)NextKEndIfNextjNextiFori=1TonForj=1Tonna(i,j)=a(i,j+n)NextjNextiEndSub2.2.6程序控制语句1.MsgBox语句VB中 提示 春节期间物业温馨提示小区春节期间温馨提示物业小区春节温馨提示春节物业温馨提示物业春节期间温馨提示 性语句,格式为:MsgBox"语句"(‘需要键入的提示语’)例如:MsgBox"账号不对,请重试"运行结果:则出现一个对话框,提示用户。2.print语句VB中最基本的输出语句,可以将打印的内容放到form窗口中,也可以放在以图片控件为容器的控件中,还可以将数据进行输出,比如输出到txt文本中,具体的,后面展示。3.if语句If<表达式>Then   <语句块1> Else<语句块2>EndIfIf语句可以循环嵌套,以实现比较复杂的逻辑结果。4.循环语句(1)for语句格式:For循环变量=初值to终值[Step步长]循环体;next注意:循环参数中,i用于控制循环次数,step是步长使用前应计算好,结尾必须有next不然程序会出错!(2)do...while语句格式:Do{While|Until}<条件>语句块[ExitDo语句块]Loop注意:do...while循环是用于控制循环次数未知。5.循环控制语句在循环执行到一定程度的时候,不希望它继续执行,则要使用循环控制语句,包括continue和break。(1)continue出现时,不执行continue后的内容,直接跳过本次循环,执行下一次循环。(2)Break出现时,不执行break后的内容,直接跳出循环,执行循环后的语句。2.2.7控件数组控件数组是由一组具有共同名称和相同类型的控件组成,数组中的每一个控件共享同样的事件,它可以运用控件数组可以再程序运行时创建一个控件的多个实例,并能很好的控件在程序运行时到底显示多少个对象,利用for-next循环结构,就可以简单地为控件数组的各个元素设置相同的属性,同时它也可以节省代码,增加可读性,减少了内存的开销。控件数组可以分为静态数组及动态数组两种。3平差计算基本理论3.1条件平差3.1.1条件平差原理设有r个平差值的线性条件方程:(3-1-1)式中,为条件方程的系数,为条件方程常数项,系数和常数项随不同平差问题取不同的值,它们与观测值无关。用代入上式,可得:(3-1-2)式中,为条件方程的闭合差,或称不符值,即:(3-1-3)令:,,则(3-1-2)式为:(3-1-4)同样,(3-1-1)式也可以写为:(3-1-5)式中(3-1-3)式的矩阵形式为:(3-1-6)由(3-1-5)式可知,的应有值为零,所以闭合差等于观测值减去其应有值。按求条件极值的拉格朗日乘数法,设其乘数为,称为联系数向量,组成函数将对求一阶导数,并令其为零,得:移项,两边转置,得:再用左乘上式两段,得改正数V的计算公式为:=(3-1-7)上式称为改正数方程。将n个改正数方程(3-1-7)和r个条件方程(3-1-4)联立求解,就可以求得一组唯一的解:n个改正数和r个联系数。为此,将(3-1-4)式和(3-1-7)式合称为条件平差的基础方程。显然,有基础方程解出的一组V,不仅能消除闭合差,也必能满足的要求。解算基础方程时,是先将(3-1-7)式代入(3-1-4)式,得令:,则有称为联系数法方程,它是条件平差的法方程,简称法方程。因为法方程系数阵是满秩方阵,由此可得联系数K的唯一解从法方程中解出K后,将K值代入改正数方程(3-1-7),再求平差值即可。3.1.2条件平差程序设计流程图3.2间接平差3.2.1间接平差原理间接平差就是在最小二乘准则要求下求出误差方程中的待定参数,在数学中是求多元函数的极值问题。间接平差的函数模型为:平差时,一般对参数都要取近似值,令代入上式,并令其中,为观测值的近似值,所以是观测值与其近似值之差,由此可得误差方程设有n个观测值的方程为:令,则得误差方程为:令:可得平差值方程的矩阵形式:,(3-2-1)按最小二乘原理,上式的必须满足的要求,因为t个参数为独立量,故可按数学上求函数自由极值的方法,得:移项,转置后得:(3-2-2)以上所得(3-2-1)和(3-2-2)式中的待求量是n个V和t个,而方程个数也是n+t个,有唯一解,称此两式为间接平差的基础方程。解此基础方程,一般是将(3-2-1)式代入(3-2-2)式,以便先消去V,得:(3-2-3)令:,上式可简写成(3-2-4)式中系数阵为满秩,即,有唯一解,上式称为间接平差的法方程。解之得:或:将求出的代入误差方程(3-2-1),即可求得改正数V,从而平差结果为:,3.2.2间接平差程序设计流程图3.3附合导线平差计算图3.1附合导线图3.3.1单一附合导线平差原理如图一所示,在这个导线中有四个已知点、n-1个未知点、n+1个水平角观测值和n条边长观测值,总观测值数为2n+1。从图中可以分析,要确定一个未知点的坐标,必须测一条导线边和一个水平角,即需要两个观测值;要确定全部n-1个未知点,则需观测n-1个导线边和n-1个水平角,即必要观测值数t=2n-2;则多余观测个数r=(2n+1)–t=3。也就是说,在单一附合导线中,只有三个条件方程。下面讨论其条件方程式及改正数条件方程式的写法。设AB边方位角已知值为TAB=T0,CD边方位角已知值为TCD、计算值为Tn+1,B点坐标的已知值为(,)或者(x1,y1),C点坐标的已知值为(,)、计算值为(xn+1,yn+1)。三个条件中,有一个方位角附合条件、两个坐标附合条件。方位角附合条件:从起始方位角推算至终边的方位角平差值应等于其已知值,即:(3-3-1)纵横坐标附合条件:从起始点推算至终点所得到的坐标平差值应与终点的已知坐标值相等,即:(3-3-2)(3-3-3)(1)方位角附合条件式则(3-3-1)式可写为整理得:(3-3-4)其中(2)纵坐标附合条件式终点C坐标平差值表示为(3-3-5)而第i边的坐标增量为(3-3-6)式中:其中,Ti是第i边的近似坐标方位角(3-3-7)则(3-3-6)式可表示为上式按泰勒级数展开,取至一次项,得(3-3-8)其中,,为由观测值计算出的近似坐标增量。将(3-3-8)式代入(3-3-5)式,并按合并同类项,得将上式代入(3-3-2)式,整理得上式即为纵坐标条件方程式,也可写为统一形式:(3-3-9)(3-3-10)(3)横坐标附合条件式同理,可写出横坐标条件式(3-3-11)(3-3-12)为使计算方便,保证精度,在实际运算中,S、x、y常以m为单位,w、、以cm为单位,则(3-3-9)和(3-3-11)写为(3-3-13)(3-3-14)综上所述,单一附合导线的平差计算的基本程序是:1)计算各边近似方位角Ti和各点的近似坐标增量值Δxi、Δyi;2)参照(3-3-4)写出方位角条件式,参照(3-3-9)、(3-3-10)、(3-3-11)、(3-3-12)或者(3-3-13)、(3-3-14)写出纵横坐标条件方程式;3)按照条件平差计算的一般程序,计算最或是值。3.3.2单一附合导线程序设计流程图图在下一页4平差软件界面设计4.1平差软件整体展示4.1.1登陆界面图4.1平差软件登录界面图为了方便用户使用和保存用户隐私,特做了平差软件的登陆窗口。只有账号密码正确才能进入,使用软件。而注册和找回密码用到数据库的知识,需用VB和数据库(可以是SQL数据库,也可以是access数据库)联合开发。当然了,由于时间关系,注册和找回密码功能还没开发,以待时间充裕时再进行开发。图4.2平差软件登录界面图4.1.2平差软件主界面图4.3平差软件主要界面图左边按钮为平差功能,有水准网间接平差,附和导线平差,水准网的间接平差,闭合导线平差。最后一个为误差椭圆,用来检测各导线的误差精度。中间的是坐标系统,用来显示所观测导线网,看输入的导线网与实测的导线网是否一样,可以及时纠错。当然还可以显示导线网中的误差椭圆。4.1.3水准网间接平差图4.4水准网间接平差主要界面图上图为水准网间接平差主界面,只要鼠标点击主界面中的水准网间接平差按钮就能进入该界面。该界面中右边为输入观测数据。此水准网间接平差能实现的功能是进行水准网间接平差计算(改正数跟平差值计算),此外还设计了几个实用功能,如对平差后的结果进行输出(输出的格式为txt文本格式),对数据进行清空,方便第二次输入。还设有返回主界面的功能,进行其他功能的转化。当然了还开发了如查看系数矩阵,法方程等功能4.1.4附合导线平差图4.5附合导线平差界面图和水准网间接平差一样,附合导线网设计的功能有改正数平差值的计算,还有其他一些实用的功能。由于此次的时间比较短,只开了这两个平差程序,其他的以待后面开发。4.2平差软件界面设计VB中的界面设计是实现可视化,面向对象的重要途径,我们说的VB界面设计其实就是VisualBasic编程语言中的(GUI)。软件设计,除了能实现所编功能外,界面的设计也尤为重要。好的界面设计能使用户易懂,并能高效的输入数据,提高工作效率。4.2.1VisualBasic(GUI)简介VisualBasic(GUI)是用户与计算机程序之间的交互方式,是用户与计算机进行信息交流的方式。通常,多是根据悦目的结构和用户界面功能的有效性来选择计算机或程序。图形用户界面或GUI是包含图形对象,如:窗口、图标、菜单和文本的用户界面。以某种方式选择或激活这些对象,通常引起动作或发生变化。最常见的激活方法是用鼠标或其它点击设备去控制屏幕上的鼠标指针的运动。按下鼠标按钮,标志着对象的选择或其它动作。4.2.2界面设计打开VB编程软件,然后点击工具箱中控件,然后在主体窗口进行合理的布置,这布置其实跟“画图”差不多,但要以画得合理实用为准。图4.6界面设计演示图如上图是设计本软件时进行textbox的设计,作用是接收用户输入的信息,还有其他比如label标签控件,command按钮控件,此处不一一举例,可以参照VB编程设计书。本软件设计时,采用四个主窗体集成,使得各功能在一个软件中同时存在,方便用户使用。而各平差软件中的输入数据的textbox采用的是控件数组,这样可以方便电脑对观测数据的处理。4.3界面设计控件和代码为了后面阅读水准网间接平差和附合导线平差程序代码的方便,以及更深入的了解界面设计,下面介绍主要介绍水准网和附合导线网平差的控件和代码4.3.1水准网间接平差界面设计1.控件此程序使用到的控件有,label标签控件,textbox文本框控件,以及command命令按钮控件,其中文本框使用到控件数组分别为text1(0to16),text2(0to16)具体的控件分布见下图图4.7水准网间接平差控件分布图其中清空控件和返回主菜单按钮控件属于界面设计控件,主要是为了用户使用方便,不参与平差计算。还有自动识别和提示数据有无输完功能,下面就给出这两个控件和识别提示功能的代码2.控件代码(1)清空控件代码PrivateSubCommand6_Click()Fori=0To16Text1(i)="":Text2(i)="":Text3(i)="":Text4(i)="":Text5(i)="":Text6(i)=""NextFori=0To5Text7(i)="":Text8(i)=""NextText9="":Text10="":Text11=""EndSub(2)返回主界面代码PrivateSubCommand4_Click()Form2.Show‘form1为登陆界面,form2为主界面,from3为水准网间接平差界面Form3.Hide‘form4为附合导线平差界面form4.HideEndSub(3)自动识别和提示代码PrivateSubCommand1_Click()IfText11=""ThenMsgBox"请输入总点个数":ExitSubEndIfIfText9=""ThenMsgBox"请输入已知点个数":ExitSubEndIfIfText10=""ThenMsgBox"请输入已测水准路线条数":ExitSubEndIfIfText1(0)=""ThenMsgBox"请输入起点点号":ExitSubEndIfIfText2(0)=""ThenMsgBox"请输入终点点号":ExitSubEndIfIfText3(0)=""ThenMsgBox"请输入水准路线长度":ExitSubEndIfIfText4(0)=""ThenMsgBox"请输入观测高差":ExitSubEndIfIfText7(0)=""ThenMsgBox"请输入已知点号":ExitSubEndIfEndsub4.3.2附合导线平差界面设计1.控件控件的具体分布图如下:图4.8附合平差控件分布2.控件代码清空与返回主界面的代码大同小异,此处不给出。给出软件自动识别提示代码:IfText2(5)=""ThenMsgBox"请输入边长":ExitSubEndIfIfText5(0)=""ThenMsgBox"请输入观测角":ExitSubEndIfIfOption1=FalseAndOption2=FalseThenMsgBox"请选择观测方向":ExitSubEndIfIfText16(0)=""AndText20(0)=""ThenMsgBox"请输入AB的方位角":ExitSubEndIfIfText16(3)=""AndText21(0)=""ThenMsgBox"请输入CD的方位角":ExitSubEndIfIfText16(1)=""AndText17(1)=""AndText21(0)=""ThenMsgBox"请输入B点的x,y坐标":ExitSubEndIfIfText16(2)=""AndText17(2)=""AndText21(0)=""ThenMsgBox"请输入C点的x,y坐标":ExitSubEndIfIfText22=""ThenMsgBox"请输入测角中误差":ExitSubEndIfIfText23=""ThenMsgBox"请输入测边中误差":ExitSubEndIf5平差软件程序设计5.1水准网间接平差5.1.1数据输入1.请按软件界面提示输入总点个数,已知点号,已测水准路线条数,已知点号,已知点高程,起点点号,终点点号,水准路线长度观测高差。(特别说明:观测点号的编写,按照先未知点后已知点的顺序来编写。如果还是不懂,你可以点击特别说明按钮,里面有详细说明与例子)。图5.1水准网间接平差数据输入图2.当然了为了保证用户输入数据的完整性写,还编写了软件自动识别与提示功能,引导用户将数据输完,效果见下图(例如在没输起点号时,软件提示)图5.2数据输入提示图5.1.2软件的使用1.在完整的输完数据后,点击改正数计算,或平差值计算按钮(若点击改正数计算则只能看到平差后的改正值,点击平差值计算则可以显示改正数与平差值)。设置这两个是为了方便用户查看改正数(可以判断结果的可靠性)和得到最终结果。由于数据比较多,为了能方便用户查找数据,编程的时候进行了人性化处理:特别用两种不同颜色来表示改正数和平差值。其中改正数的计算精度可以在主界面中调,范围0.0001到1mm。效果见下图:图5.3水准网间接平差功能演示图2.得到数据结果后,如果想重新输入新数据进行平差,则可以点击清空,则数据软件内的数据会自动清空,无需手动清空。若想利用里面的数据,可以点击输出数据按钮,数据会自动保存在D盘中,以txt文本方式保存,效果见下图:图5.4水准网间接平差数据输出图5.1.3程序代码1.这是软件设计的核心部分,界面设计只是外表,而能否实现编程功能还得看程序代码。考虑到代码比较多,所以矩阵转置,矩阵求逆,矩阵乘法这三种调用代码就不在此写出,具体的见本书2.2.5节。界面设计的代码见4.3.12.代码(含有解说)(1)水准网间接平差代码PrivateSubCommand1_Click()Dimn#,t1#,t2#,v#,i#n=Val(Text10)'n为总点个数t=Val(Text11)-Val(Text9)'t为待定点(未知点)个数v=Val(Text9)'v为已知知点个数ReDimb(1Ton,1Tot)AsDouble'定义了系数矩阵b,并对其声明ReDimA1(1,1Tov)AsDouble'定义了已知点编号矩阵,并对其声明ReDimDH(1Ton,2)AsDouble'定义了起终点编号矩阵DH,并对其声明ReDimH1(1Ton,1)AsDouble'定义了各段观测高差矩阵,并对其声明ReDiml(1Ton,1)AsDouble'定义了系数矩阵l,并对其进行声明ReDimP(1Ton,1Ton)AsDouble'定义了权矩阵l,并对其进行声明ReDimH2(1Tov,1)AsDouble'定义了已知水准点高程,并对其声明Fori=1Tov'对窗口中数据的接收A1(1,i)=Text7(i-1)NextFori=1TonDH(i,1)=Text1(i-1)NextFori=1TonDH(i,2)=Text2(i-1)NextFori=1TonH1(i,1)=Text4(i-1)NextFori=1TovH2(i,1)=Text8(i-1)NextFori=1To7'进行系数矩阵的计算Forj=1To2t1=DH(i,1)t2=DH(i,2)Fork1=1TovIft1=A1(1,k1)Thent1=0l(i,1)=H1(i,1)+H2(k1,1)EndIfNextFork2=1TovIft2=A1(1,k2)Thent2=0l(i,1)=H1(i,1)-H2(k2,1)EndIfNextIft1<>0Thenb(i,t1)=-1EndIfIft2<>0Thenb(i,t2)=1EndIfIft1<>0Andt2<>0Thenl(i,1)=H1(i,1)EndIfNextNextFori=1TonForj=1TonIfi=jThenP(i,j)=Text3(i-1)P(i,j)=1/P(i,j)'定权EndIfNextNext'进行计算ReDimb1(1Tot,1Ton)AsDouble'调用矩阵转置代码jzzzb(),b1()ReDimN1(1Tot,1Ton)AsDouble'调用矩阵乘法代码jzcfb1(),P(),N1()ReDimN2(1Tot,1Tot)AsDouble'调用矩阵乘法代码jzcfN1(),b(),N2()ReDimu(1Tot,1To1)AsDouble'调用矩阵乘法代码jzcfN1(),l(),u()ReDimN3(1Tot,1Tot)AsDouble'调用矩阵求逆代码jzqnN2(),N3()ReDimx(1Tot,1To1)AsDouble'调用矩阵乘法代码jzcfN3(),u(),x()ReDimX1(1Ton,1To1)AsDouble'调用矩阵乘法代码jzcfb(),x(),X1()ReDimV1(1Ton,1To1)AsDouble'得到改正数Fori=1TonV1(i,1)=X1(i,1)-l(i,1)V1(i,1)=V1(i,1)*1000NextFori=1Ton'进行改正数,平差值输出Text5(i-1).ForeColor=&H
本文档为【测绘工程毕业论文精编版】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
MR杨
暂无简介~
格式:doc
大小:2MB
软件:Word
页数:0
分类:建筑/施工
上传时间:2020-09-15
浏览量:2