VB测量平差程序设计讲稿
基于VB语言的施工测量应用程序设计
Shell App.Path & "\DATA\qt\ 位于圆曲线斜交盖梁 长度和两端点桩号及座标计算 .EXE", vbNormalFocus End Sub Private Sub hgljs_Click() Shell App.Path & "\DATA\qt\ 缓和曲线盖梁长度计 算 .EXE", vbNormalFocus End Sub Private Sub hpjs_Click() Shell App.Path & "\DATA\lx\ 高速公路超高横坡计 算 .EXE", vbNormalFocus End Sub Private Sub jyszpc_Click() Shell App.Path & "\DATA\pc\ 简易水准平差 .EXE", vbNormalFocus End Sub Private Sub LXSJPC1_Click() Shell App.Path & "\DATA\zh\ 菱 形 三 角 平 差 (1). EXE", vbNormalFocus End Sub Private Sub LXSJPC2_Click() Shell App.Path & "\DATA\zh\ 菱 形 三 角 平 差 (2). EXE", vbNormalFocus End Sub Private Sub mnuaboat_Click() frmAbout.Show 1 End Sub Private Sub mnuend_Click() End End Sub Private Sub pqxjs_Click() Shell App.Path & "\DATA\lx\ 平 曲 线 计 算 .EXE", vbNormalFocus End Sub Private Sub razhrjs_Click() Shell App.Path & "\DATA\qt\ 卵形线与钻桩或路基 计算 .EXE", vbNormalFocus End Sub Private Sub sbspc_Click() Shell App.Path & "\DATA\pc\ 三 边 锁 严 密 条 件 平 差 .EXE", vbNormalFocus End Sub Private Sub sjspc_Click() Shell App.Path & "\DATA\pc\ 三角锁严密平差 .EXE", vbNormalFocus
《测量平差程序设计》PPT课件
精选课件ppt
14
(三)、程序设计的主要环节和难点
4、误差方程建立、法方程组成和解算:
相对于前几个问题,这一部分程序的实现,
需要较高的设计技巧,但其算法已经较为
成熟,有公开的资料可供借鉴。对比而言,
如果说前3个问题的解决,需要创造性地找
出算法,而这一问题,困难则在于如何灵
活将给定的算法程序化。
精选课件ppt
19
三、平差程序的数据结构设计
3、平差程序的数据结构应满足的 条件
(1)、充分条件:应包含足够的 数据,即:必要的起算数据,大于 必要观测数的独立观测值,这一点 主要通过合理的布网和观测来解决, 与程序设计关系不大。
精选课件ppt
20
三、平差程序的数据结构设计
(2)、必要条件:数据结构只含 构网必须的数据,无冗余数据。注 意这里所谓冗余数据是指描述网型 的关系数据冗余,而不是多余观测 数。
精选课件ppt
21
三、平差程序的数据结构设计
(3)、满足充分必要条件与否与程序 的关系:不满足充分条件,控制网中 的待定元素将不能全部算出,从而程 序不能成功运行;若不满足必要条件, 可能程序能成功运行,解算正确,但 是由于多而复杂的数据录入,使程序 的方便性、可读性受到影响,用户会 感到使用不便、难于维护,影响程序 的质量。
精选课件ppt
22
精选课件ppt
10
(三)、程序设计的主要环节和难点 1、控制网数据结构设计: ➢ 由于控制网的网型是不可预设的,所以平
差程序必须能适应各种可能的网型。要实 现这一要求,设计能使计算机能够识别控 制网网型的观测数据格式,是程序设计的 首要问题。
精选课件ppt
11
(三)、程序设计的主要环节和难点
水准网平差(VB代码)
(误差理论与测量平差础)课程设计报告系(部):土木工程系实习单位:山东交通学院班级:测绘084学生姓名:田忠星学号********* 带队教师:夏小裕﹑周宝兴时间:10 年12 月13日到10 年12 月19日山东交通学院目录:1.摘要P32.概述P33.水准网间接平差程序设计思路P3—P44. 平差程序流程图P4—P65. 程序源代码及说明P7—P236. 计算结果P23—P267. 总结P26—P27一:摘要在测量工作中,为了能及时发现错误和提高测量成果的精度,常作多余观测,这就产生了平差问题。
在一个平差问题中,当所选的独立参数Xˆ的个数等于必要观测数t时,可将每个观测值表达成这t个参数的函数,组成观测方程,这种以观测方程为函数模型的平差方法,就是间接平差。
二:概述:该课程设计的主要目是对水准网进行间接平差,在输入数据后依次计算高程近似值﹑误差方程和平差计算。
三:水准网间接平差程序设计思路1.根据平差问题的性质,选择t个独立量(既未知点的高程)作为参数Xˆ2. 将每一个观测量的平差值(既观测的高程差值)分别表达成3.由误差方程系数B和自由项组成法方程,法方程个数等于参数的个数t ;4. 解算法方程,求出参数Xˆ,计算参数(高程)的平差值Xˆ=X0 +xˆ;5.由误差方程计算V,求出观测量(高差)平差值6.评定精度单位权中误差VLL+ =∧VLL+ =∧平差值函数的中误差四:平差程序流程图1. 已知数据的输入需要输入的数据包括水准网中已知点数﹑未知点数以及这些点的点号,已知高程和高差观测值﹑距离观测值。
程序采用文件方式进行输入,约定文件输入的格式如下:第一行:已知点数﹑未知点数﹑观测值个数第二行:点号(已知点在前,未知点在后)第三行:已知高程(顺序与上一行的点号对应)第四行:高差观测值,按“起点点号,终点点号。
高差观测值,距离观测值”的顺序输入。
本节中使用的算例的数据格式如下2,3,71,2,3,4,55.016,6.0161,3,1.359,1.11,4,2.009,1.7 2,3,0.363,2.3,ˆ20s u n PV V r PV V T T +-==σ.ˆˆˆ0ˆϕϕϕσσQ =2,4,1.012,2.73,4,0.657,2.43,5,0.238,1.45,2,-0.595,2.62.平差计算过程(1)近似高程的计算。
水准网平差(VB代码)
误差理论与测量平差础)课程设计报告系(部):土木工程系实习单位:山东交通学院班级:测绘084学生姓名:田忠星学号080712420带队教师:夏小裕﹑周宝兴时间:10 年12 月13 日到10 年12 月19 日山东交通学院目录:1.摘要P32.概述P33.水准网间接平差程序设计思路P3—P44.平差程序流程图P4—P65.程序源代码及说明P7—P236.计算结果P23—P267.总结P26—P27一:摘要在测量工作中,为了能及时发现错误和提高测量成果的精度,常作多余观测,这就产生了平差问题。
在一个平差问题中,当所选的独立参数X?的个数等于必要观测数t 时,可将每个观测值表达成这t 个参数的函数,组成观测方程,这种以观测方程为函数模型的平差方法,就是间接平差。
二:概述:该课程设计的主要目是对水准网进行间接平差,在输入数据后依次计算高程近似值﹑误差方程和平差计算。
三:水准网间接平差程序设计思路1.根据平差问题的性质,选择t 个独立量(既未知点的高程)作为参数X?2.将每一个观测量的平差值(既观测的高程差值)分别表达成L L V3.由误差方程系数 B 和自由项组成法方程,法方程个数等于参数的个数t ;4. 解算法方程,求出参数X?,计算参数(高程)的平差值X?=X0 +x? ;5.由误差方程计算V,求出观测量(高差)平差值L L V 6.评定精度单位权中误差平差值函数的中误差四:平差程序流程图1. 已知数据的输入 需要输入的数据包括水准网中已知点数﹑未知点数以及这些点 的点号, 已知高程和高差观测值﹑距离观测值。
程序采用文件方 式进行输入,约定文件输入的格式如下: 第一行:已知点数﹑未知点数﹑观测值个数 第二行:点号(已知点在前,未知点在后) 第三行:已知高程(顺序与上一行的点号对应) 第四行:高差观测值,按“起点点号,终点点号。
高差观测值, 距离观测值”的顺序输入。
本节中使用的算例的数据格式如下2,3,7 1,2,3,4,5 5.016,6.016 1,3,1.359,1.11,4,2.009,1.7 2,3,0.363,2.3 2,4,1.012,2.7 3,4,0.657,2.4 3,5,0.238,1.4 5,2,-0.595,2.6 2.平差计算过程V TPV rV TPVnus(1)近似高程的计算。
测绘程序设计教案VB版第十一章
第十一章演示源程序§11-1 VB6.0测量程序菜单总体演示VERSION 5.00Begin VB.Form Form1Caption = "Form1"ClientHeight = 3195ClientLeft = 165ClientTop = 855ClientWidth = 7545LinkTopic = "Form1"ScaleHeight = 3195ScaleWidth = 7545StartUpPosition = 3 '窗口缺省Begin VB.Menu WYJLCaption = "外业记录"Begin VB.Menu SZCLJLCaption = "水准测量观测记录"Begin VB.Menu PTSZJLCaption = "普通水准记录"EndBegin VB.Menu SDSZJLCaption = "四等水准记录"EndEndBegin VB.Menu SPFXJLCaption = "水平方向观测记录"Begin VB.Menu J6FXGCJLCaption = "J6方向观测法记录" EndBegin VB.Menu J6CHFJLCaption = "J6测回法记录"EndBegin VB.Menu LZF6Caption = "-"EndBegin VB.Menu J2FXGCJLCaption = "J2方向观测法记录" EndBegin VB.Menu J2CHFJLCaption = "J2测回法记录"EndEndEndBegin VB.Menu NYJSCaption = "内业计算"Begin VB.Menu ZBZSCaption = "坐标正算"EndBegin VB.Menu ZBFSCaption = "坐标反算"EndBegin VB.Menu LZF1Caption = "-"EndBegin VB.Menu JSPCCaption = "近似平差"Begin VB.Menu JHDDCaption = "交会定点"Begin VB.Menu CJDSJXZJSCaption = "测角单三角形之计算" EndBegin VB.Menu CJQFJH1ZJSCaption = "测角前方交会1之计算" EndBegin VB.Menu CJQFJH2ZJSCaption = "测角前方交会2之计算" EndEndBegin VB.Menu JWYDXJSPCCaption = "经纬仪导线近似平差"EndBegin VB.Menu DSJSJSPCCaption = "单三角锁近似平差"EndBegin VB.Menu XXSJSPCCaption = "线形锁近似平差"EndBegin VB.Menu LZF2Caption = "-"EndBegin VB.Menu DDSBXJSPCCaption = "大地四边形近似平差"EndBegin VB.Menu ZDDBX1JSPCCaption = "中点多边形1近似平差"EndBegin VB.Menu ZDDBX2JSPCCaption = "中点多边形2近似平差"EndBegin VB.Menu BWJSPCCaption = "半网近似平差"EndBegin VB.Menu LZF3Caption = "-"EndBegin VB.Menu DYSZLXJSPCCaption = "单一水准路线近似平差"Begin VB.Menu BHSZLXJSPCCaption = "闭合水准路线近似平差" EndBegin VB.Menu FHSZLXJSPCCaption = "附合水准路线近似平差" EndBegin VB.Menu ZSZLXJSPCCaption = "支水准路线近似平差" EndEndEndBegin VB.Menu YMPCCaption = "严密平差"Begin VB.Menu SZWYMPCCaption = "水准网严密平差"EndBegin VB.Menu SJGCWYMPCCaption = "三角高程网严密平差"EndBegin VB.Menu LZF4Caption = "-"EndBegin VB.Menu DXWYMPCCaption = "导线网严密平差"EndBegin VB.Menu LZF5Caption = "-"EndBegin VB.Menu CJSJWYMPCCaption = "测角三角网严密平差"EndBegin VB.Menu CBSJWYMPCCaption = "测边三角网严密平差"EndBegin VB.Menu BJTCSJWYMPCCaption = "边角同测三角网严密平差"EndEndEndBegin VB.Menu SGFYCaption = "施工放样"Begin VB.Menu JZBFDWFYYSZJSCaption = "极坐标法点位放样元素之计算" EndEndBegin VB.Menu GSTYCaption = "高斯投影"Begin VB.Menu GJLQ3DDDHCaption = "根据一点经度求3度投影带带号" EndBegin VB.Menu GJLQ6DDDHCaption = "根据一点经度求6度投影带带号" EndBegin VB.Menu LZF7Caption = "-"EndBegin VB.Menu HDJSCaption = "换带计算"Begin VB.Menu Y3DDD3DDCaption = "由3度带到3度带"EndBegin VB.Menu Y3DDD6DDCaption = "由3度带到6度带"EndBegin VB.Menu LZF8Caption = "-"EndBegin VB.Menu Y6DDD3DDCaption = "由6度带到3度带"EndBegin VB.Menu Y6DDD6DDCaption = "由6度带到6度带"EndEndEndBegin VB.Menu FFBHCaption = "分幅编号"Begin VB.Menu YBYBWBLCCaption = "1:100万比例尺"EndBegin VB.Menu YBSWBLCCaption = "1:10万比例尺"EndBegin VB.Menu YBYWBLCCaption = "1:1万比例尺"EndBegin VB.Menu LZF9Caption = "-"EndBegin VB.Menu GJYFTTHQQZWBFTTHCaption = "根据一幅图图号求其周围八幅图图号"EndEndEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = FalseOption ExplicitPrivate Sub form_load()Rem ***** 此为第一个窗体Form1.frm *****Form1.Height = Screen.Height: '**** 设置窗体高占整个屏幕Form1.Width = Screen.Width: '**** 设置窗体宽占整个屏幕Form1.Left = 0: '***** 设置窗体位置距离屏幕左端的距离值为零Form1.Top = 0: '***** 设置窗体位置距离屏幕上端的距离值为零End SubPrivate Function NNN(NM As Double, BB As Integer) As DoubleRem ***** 奇进偶舍函数(新版),2002/8/2 ****Rem ***** NM为需要奇进偶舍的变量,BB为NM这个变量需要保留的小数点后面的位数 ***** Rem ***** 分别用NM=PI()、BB=1、2、......Rem ***** NM=1.2225、BB=3Rem ***** NM=1.2235、BM=3 来验证该FUNCTION过程的正确性 *****Dim BNM As DoubleDim C As IntegerDim J As IntegerDim K As IntegerDim I As DoubleC = Sgn(NM)BNM = Abs(NM)I = (BNM * 10 ^ (BB + 1) + 10 ^ (-11)) - 10 * Fix(BNM * 10 ^ BB + 10 ^ (-11)) I = (Fix(I * 10 ^ 10)) / 10 ^ 10J = Fix(BNM * 10 ^ BB + 10 ^ (-11)) - 10 * Fix(BNM * 10 ^ (BB - 1) + 10 ^ (-11))If I > 5 ThenK = 1ElseIf I < 5 ThenK = 0ElseIf (I = 5 And J = 2 * Fix(J / 2)) ThenK = 0ElseK = 1End IfNNN = C * Fix(BNM * 10 ^ BB + K) / 10 ^ BBEnd FunctionPrivate Function PI() As DoubleRem ****** 计算值 *****PI = 4 * Atn(1)End FunctionPrivate Sub PTSZJL_Click()Rem ***** 普通水准记录(演示) *****Dim A As IntegerDim I As IntegerPrintPrint Spc(6); "PI="; PI()Rem *****分别用NM=PI的值、BB=1、2、......Rem ***** NM=1.2225、BB=3Rem ***** NM=1.2235、BM=3 来验证该FUNCTION NNN(NM,BB)过程的正确性 ***** PrintFor A = 1 To 15If A <= 9 ThenI = 10ElseIf A >= 10 ThenI = 9End IfPrint Spc(6); A; Spc(I); "NNN="; NNN(PI(), A)Next AEnd SubRem ***** VB中三个取整函数的用法 *****Rem ***** INT(X):返回小于或等于X的第一个(负)整数 *****Rem ***** FIX(X):截断X小数点右边的所有位,返回小数点左边的值 *****Rem ***** CINT(X):通过小数部分的四舍五入,将X转换为整数 *****Rem ***** 注意:在上述各取整函数中,X为必需参数,应为双精度数据或任何有效的数值表达式 *****Rem ***** 举例如下: *****Rem ***** CINT(45.449)=45 *****Rem ***** CINT(-2.89)=-3 *****Rem ***** FIX(45.67)=45 *****Rem ***** FIX(-2.89)=-2 *****Rem ***** INT(45.67)=45 *****Rem ***** INT(-2.89)=-3 *****Rem ***** 取整函数FIX(X)与INT(X)之间的关系式如下: *****Rem ***** FIX(X)=SGN(X)*INT(ABS(X)) *****Rem ***** 测量程序中常使用FIX(X)函数 *****§11-2 演示用Image控件Picture属性装入一个图片后,满屏显示的实现方法VERSION 5.00Begin VB.Form Form1Caption = "演示用Image控件Picture属性装入一个图片后,满屏显示的实现方法"ClientHeight = 3105ClientLeft = 60ClientTop = 435ClientWidth = 4680FillColor = &H000000FF&LinkTopic = "Form1"Picture = "Form1.frx":0000ScaleHeight = 3105ScaleWidth = 4680StartUpPosition = 3 '窗口缺省Begin mandButton Command2Appearance = 0 'FlatBackColor = &H80000016&Caption = "退出"BeginProperty FontName = "华文新魏"Size = 12Charset = 134Weight = 400Underline = 0 'FalseItalic = 0 'FalseStrikethrough = 0 'FalseEndPropertyHeight = 495Left = 9720TabIndex = 1Top = 7320Width = 1215EndBegin mandButton Command1Appearance = 0 'FlatCaption = "继续"BeginProperty FontName = "宋体"Size = 12Charset = 134Weight = 400Underline = 0 'FalseItalic = 0 'FalseStrikethrough = 0 'FalseEndPropertyHeight = 495Left = 6720TabIndex = 0Top = 7320Width = 1215EndBegin bel Label2Alignment = 2 'CenterAutoSize = -1 'TrueBackStyle = 0 'TransparentCaption = "高平和编 2001年9月25日" BeginProperty FontName = "宋体"Size = 21.75Charset = 134Weight = 400Underline = 0 'FalseItalic = 0 'FalseStrikethrough = 0 'FalseEndPropertyForeColor = &H00FF00FF&Height = 870Left = 3480TabIndex = 3Top = 5760Width = 6450WordWrap = -1 'TrueEndBegin bel Label1AutoSize = -1 'TrueBackStyle = 0 'TransparentCaption = "测量平差计算程序" DragMode = 1 'AutomaticBeginProperty FontName = "华文新魏"Size = 72Charset = 134Weight = 400Underline = 0 'FalseItalic = 0 'FalseStrikethrough = 0 'FalseEndPropertyForeColor = &H000000FF&Height = 1470Left = 240TabIndex = 2Top = 1800Width = 11520EndEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = FalseOption ExplicitPrivate Sub Command1_Click()'***** 用鼠标左键点击“继续”按钮,则进入该子过程。
测绘程序设计教案VB版第四章
第四章线性代数方程组的数值解法及程序设计方法许多科学和技术问题的解决,常常需要求解线性方程组,例如测量平差计算中的法方程组的求解,便是一个典型的求解线性方程组的问题。
目前编程求解线性方程组,多采用矩阵解法。
矩阵并非如同一种容易产生的猜想那样直接源自线性方程组系数的研究,系数阵列导致数学家们发展了行列式,而不是矩阵。
微积分创建合作者Leibniz (莱布尼茨)在1693年使用了行列式,先于矩阵成为独立研究对象约150年。
Cramer (克莱姆)在1750年建立解线性方程组的行列式基本公式,Gauss (高斯)在1820年左右提出消去法。
这些事件都出现在矩阵概念存在之前。
矩阵代数得以产生必须具备下述两个条件:1、适当的记号,诸如ij a 和A 等。
2、矩阵乘法的定义。
很巧合的是这两个重要因素几乎形成于同一时间,大约1850年;而且出自同一国家,英国。
除了Newton (牛顿)创建微积分外,17、18至19世纪近代数学早期主要成就都是欧洲大陆数学家们取得的,他们是Bernoulli 、Cauchy 、Euler 、Gauss 和Laplace 等。
但是到了19世纪中期,英国的数学家率先开展各种代数系统基础结构的研究。
确立矩阵概念和产生“矩阵”一词的动机是试图为研究行列式提供适当的代数语言。
1848年,J.J.Sylvester 引进术语“矩阵”,其拉丁文为“womb ”,作为数的阵列的名称。
他用“womb ”是因为他视矩阵为行列式的生成体。
亦即,矩阵的每k 行和k 列的子集(相应行和列确定的子矩阵)生成一个行列式。
矩阵和线性变换具有紧密的联系。
Gauss 消去法多年来一直是作为大地测量学(而不是数学)发展的一部分;称为主元消去法的Gauss-Jordan (高斯-约旦)方法最先也是出现在大地测量学手册之中。
随着计算机的问世及广泛应用,矩阵理论及快速算法得以不断发展。
Von Neumann 和Goldstein 在1947年提出分析舍入误差中的条件数的矩阵解法,A.Turing (研制计算机存储程序的一位天才)在1948年给出了矩阵的LU 分解法。
VB开发水准测量平差软件的方法
VB开发水准测量平差软件的方法摘要:本文介绍了应用Visual Basic6.0开发的水准测量平差软件的方法。
通过软件自动生成EXCEL格式的水准测量平差计算表格进行数据处理,快速、准确计算出待求点的高程。
关键词:VB;数据处理;水准测量水准测量平差计算就是对合格的高差予以调整。
将闭合差以相反的符号按与各段水准路线长度(或按测站数)成正比的办法调整到各段高差上,求出改正后的高差再推算高程。
手工计算速度慢、工作效率低,同时易出现计算错误,而Visual Basic6.0是一种简单易学的可视化语言,用其进行编程计算就显得方便灵活。
本文结合作者工作的实践,详细地介绍了用VB开发水准测量平差软件的方法及应用。
1.VB语言的特点(1).面向对象和可视化的程序设计。
(2).事件驱动的运行机制。
(3).结构化的程序设计语言。
(4).多种数据库访问能力。
(5).提供了功能完备的应用程序集成开发环境。
(6).方便使用的联机帮助功能。
2.水准测量平差计算的方法(1).计算高差闭合差fh。
fh=Σh测 -(H终-H始)fh允=±20(按四等水准测量限差)fh≤fh允(合格)fh允—允许闭合差;Σh测—实测的各段高差和;H始—起点高程;H终—终点高程;(2).计算高差改正数Vi。
Σn —总测站数或路线总长度(km);ni —分段测站数或分段路线长度(km);(3).计算改正后高差h改i。
h改i=h测¬ + Vi(4).计算待求点高程Hi。
Hi=Hi-1+ h改i3.软件的开发原理首先在VB中设计了一个固定的界面(图3.1),添加相应功能键及数据输入文本框,通过输入相应的数据,利用VB编程实现自动生成电子表格;通过VB操作电子表格里数据进行平差计算。
根据不同的平差方法,本软件设置按距离进行平差和按测站数进行平差两种计算方法。
图3.1水准测量平差软件界面3.1参数输入方式数据输入设计成两种方式;一种是先建立文本格式(txt)的参数文件,通过编写程序代码实现直接读取数据。
vb课程课件测绘程序设计7(七)
【解】:
1. 列条件方程 本题有2个未知点,需4个必要观测,实际有 9个观测值,故应列出5个条件方程。其中3个 图形条件,1个圆周角条件,1个极条件。
2. 闭合差检核
一级小三角网测角中误差应不大于5” •图形条件闭合差检核: |wi| max =1.6”< w限 w限 2m 3 17.3" •圆周角条件闭合差检核:
二、测量工作中的坐标系
坐标系的建立是个历史过程,逐步的完善和精化 1、1954年北京坐标系 1954年,鉴于当时的历史条件,将从苏联传算来的坐标系定名为 1954年北京坐标系。 1954年北京坐标系实际上是前苏联1942年普尔科 沃坐标系在我国的延伸,1954年北京坐标系属于参心坐标系,采用克拉 索夫斯基椭球参数;大地原点是前苏联的普尔科沃; 1954年北京坐标系-问题和缺点 克拉索夫斯基椭球比现代精确椭球相差过大;
System),称为1984年世界大地坐标系统。地心地固坐标系,其坐标系的Z 轴指向BIH (国际时间)1984.O定义的协议地球极(CTP)方向,X轴指向
BIH 1984.0的零子午面和CTP赤道的交点,Y轴与Z轴、X轴垂直构成右手坐
标系,GPS广播星历基于WGS-84坐标系。WGS-84采用的椭球是国际大地测 量与地球物理联合会第17届大会大地测量常数推荐值,其四个基本参数:
wO限 2m 3 17.3" •极条件闭合差检核:
wO = -3.2”< wO限
ws限 2m 46.5"
ws
i i
sin b ) " 33.1" w (1 sin a
s限
3. 列立条件方程
条件方程的矩阵形式为:AV+W=0, 本例中:
vb课程测绘程序设计二
作业
1 角度换算程序
2 坐标方位角计算程序 3 导线测量近似坐标计算程序 4 全站仪放样元素计算程序
调用 Call recarea(10,20) recarea 10,20
5、文件操作 Open d:\dx.dat For Input As #1 打开文件
读数据 inout #1 a,b,c line input #1 a$
Open d:\dx1.dat For output As #2 打开 文件写数据
3) C点坐标计算公式: xc=xb+s*cos tbc yc=yb+s*sin tbc
4) 导线计算近似坐标,在各导线点上循环 计算.
五、全站仪放样元素计算
放样:把设计图纸上工程建筑物的平面位置和高程, 用一定的测量仪器和方法测设到实地上去的测量工作 称为施工放样(也称施工放线)。 测图工作是利用控制 点测定地面上地形特征点,缩绘到图上。施工放样则 与此相反,利用控制点,在实地上定出建筑物的特征 点,据以施工 . 公路 管线 桥梁 水电站等等都需要施工 放样.
jd4
-12
88
jd
-78.7533 -78.0755
2) 度换算度分秒 Public Function Dms( jd) [公有过程 子函数 名称(形参) ] jd1=fix(jd) jd2=(jd-jd1)*60 jd3=fix(jd2) jd4=(jd2-jd3)*60 jd=jd1+jd3/100+jd4/10000 End function
+ 字符串连接符
a$=Surveying program
Instr() 查找子串
Left() 取左侧字符
Right() 取右侧字符
测绘程序设计教案VB版第三章
第三章矩阵的基本计算程序设计方法§3-1 行列式的性质(参见文献[39]P91)矩阵的基本计算用到了行列式的内容。
行列式通常用记号A 或A det 表示,det 的英文单词是:determinant 。
为后面讨论矩阵计算时方便,下面先叙述行列式的十个主要性质。
1、把行列式的行变为同号数的列,行列式的值不变。
即一个行列式与它的转置行列式的值相等。
2、对调行列式的两行(或两列),行列式的符号改变,但绝对值不变。
3、有两行(或两列)相同的行列式的值必等于零。
4、行列式等于它任意一行(或一列)的各元素与对应于它们的代数余子式的乘积的和。
5、行列式某一行(或某一列)的各元素与另一行(或另一列)对应元素的代数余子式的乘积的和恒等于零。
6、行列式的某一行(或某一列)的各元素如果有公因子,这公因子可以提到行列式记号的外面去。
7、如果行列式的某一行(或某一列)的各元素都等于零,则此行列式等于零。
8、如果行列式的第i 行(或第i 列)的各元素是两个加数的和,则此行列式可表示为两个行列式的和,其中一个行列式的第i 行(或第i 列)的各元素是上述的一个加数,而另一个行列式的第i 行(或第i 列)的各元素是另一个加数;在这三个行列式中,其余的各元素完全相同。
9、如果行列式的两行(或两列)的对应元素成比例,则此行列式等于零。
10、把行列式的某一行(或某一列)所有的元素同乘以一个数后,加于另一行(或另一列)的各对应元素上,行列式的值不变。
§3-2 矩阵基本计算的程序设计原理矩阵的基本计算包括:矩阵的初等变换(行变换或列变换),矩阵的加、减法,矩阵的转置,矩阵乘法的定义及计算方法、代数余子式的定义及计算方法、按照定义式进行矩阵求逆等的编程方法。
矩阵的英文单词是matrix 。
一、矩阵的基本概念设有一个线性方程组,例如测量平差中的条件方程:⎪⎪⎩⎪⎪⎨⎧=++++=++++=++++000221122112211r n n bn n a n n w v r v r v r w v b v b v b w v a v a v a等式的左边由三部分组成,即n 个改正数i v ,r 个改正数的系数,r 个闭合差。
测绘程序设计教案VB版第八章
第八章导线近似平差计算程序设计§8-1 总体方案设计一般地说,编写一个测量平差计算程序,首先应进行总体方案设计,然后才是进行具体的程序代码编写及说明书编写等。
一个测量平差计算程序的总体方案设计,应包含如下内容:1、程序开始运行的图形界面,包括程序名称、编者、完成时间或版本、操作提示、警告等。
2、菜单。
一个多功能的大程序应将其用菜单形式分解为多个子功能,即子菜单。
3、输入数据提示界面。
应允许用不同方法输入数据,例如:屏幕提示、键盘输入,数据文件输入(此时应有待输入的数据文件所在路径、文件名提示或查找功能)。
输入数据完成后,应允许对已输入的数据进行核对(查看)、修改、补充或删减;还应允许对输入数据以文件形式在某个路径下存盘(保存),以便保存原始数据及重复使用。
4、计算过程设计(含各种计算方法设计)。
5、中间计算结果及最后计算结果的输出方法设计。
应允许屏幕显示、通过打印机输出或输出到文件(即以数据文件形式保存计算结果)。
6、显示、保存或通过打印机打印自动生成的网形图方法的设计。
7、点名对照表自动生成及输出设计。
§8-2 输入输出设计输入、输出方式,是一个程序与用户进行信息交互的界面。
它所设计、制作的功能如何,直接影响到程序的优劣。
一个好的程序的输入、输出方式,应具备以下特点:1、彩色界面。
色彩应用调配合适,尽可能少用具有强烈提示作用的明亮颜色,例如红色、亮黄色等要少用;对于较大区域的前景、背景,考虑到对用户眼睛的保护,应尽可能的使用绿色、墨绿色等,或使用与此相近似的自然景色图片。
2、中文提示。
3、提示所用的符号应有中文说明,并符合专业常规习惯,让人一看就懂,避免误会。
4、要求输入的信息应尽可能的少且简单。
5、必要的情况下,输入界面应配有与输入数据对应的示意图。
例如测量控制网平差计算的输入数据界面,当采用屏幕提示、键盘输入方式时,应配有具有示意作用的控制网形图,根据具体程序对输入数据的需要,对应的输入数据的提示符号应在图上明确标示。
vb课程课件测绘程序设计8(八)解析
直到
Bi1小 B于i 某一个指定数值,即可停止迭代。
F(B) a(1 e2 )[AarcB Bsin 2B Csin 4B Dsin 6B Esin 8B F sin10B Gsin12B]
F(B) a(1 e2 )[A 2Bcos2B 4Ccos4B 6Dcos6B 8Ecos8B 10Fcos10B 12Gcos12B]
2 投影变形的处理方法
➢通过改变 Hm从而选择合适的高程参考面,将抵偿分 带投影变形,这种方法通常称为抵偿投影面的高斯正 形投影;
➢通过改变ym,从而对中央子午线作适当移动,来抵
偿由高程面的边长归算到参考椭球面上的投影变形, 这就是通常所说的任意带高斯正形投影;
➢通过既改变 Hm(选择高程参考面),又改变 ym(移
测绘程序设计(八)
第八讲 高斯投影变换
主要内容 一、地图投影和正形投影 二、高斯投影与分带 三、高斯投影正算和反算 四、工程测量投影面与投影带选择 五、高斯投影换带计算
一、地图投影和正形投影
1、地图投影及其变形
几何投影——又叫透视投影,有中心投影、平行投影、垂直投影等。 数学投影——是数学的投影,建立椭球面大地坐标(B、L)与投影平 面上对应的坐标(x、y)之间的函数关系。
式中:
A 1 3 e2 45 e4 175 e6 11025 e8 43659 e10 693693 e12 4 64 256 16384 65536 1048576
B 3 e2 15 e4 525 e6 2205 e8 72765 e10 297297 e12 8 32 1024 4096 131072 524288
高斯投影除了在中央子午线上没有长度变形外,不在中央子午线
上的各点,其长度比都大于1,且离开中央子午线愈远,长度变形
测量程序设计教案(总)
教案2010 ~2011 学年第一学期主讲教师宋雷课程名称测量程序设计课程类别专业选修课学时及学分40学时;3.0学分授课班级测绘071-3班使用教材《VB语言与测量程序设计》系(院、部) 土木工程系教研室(实验室) 测绘教研室课时授课计划课次序号:1一、课题:测量程序设计和VB语言概述二、课型:讲授三、目的要求:了解测量程序设计的意义;了解Visual Basic语言的版本和特点;掌握程序设计步骤和规范;并了解本门课程的主要内容。
四、重点、难点:重点是程序设计步骤和规范,了解本门课程的主要内容;难点是程序设计步骤和规范。
五、教学方法及手段:讲授为主,举例、讨论为辅。
六、参考资料:教材:佟彪主编《VB语言与测量程序设计》,中国电力出版社;参考资料:郭九训主编《控制网平差程序设计》,原子能出版社;秦永乐主编《Visual Basic测绘程序设计》,黄河水利出版社。
七、作业:1 测量程序设计的意义?2 简述程序设计的步骤与规范?八、授课记录:九、授课效果分析:十、教学进程(教学内容、教学环节及时间分配等)1、导入课题 2分钟2、教学内容 80分钟一、课程概述1 课程性质;2 课程任务;3 本课程考核方法与要求二、测量程序设计意义1计算机在现代测绘科学中的广泛应用2测绘相关软件丰富:数据计算、制图、遥感影像处理、数字摄影测量、地理信息系统(GIS)、 GPS平差计算.3实际工作遇到的问题千差万别,特定应用需要掌握一门编程语言,设计相应的程序解决实际问题.4编写相关专业程序,深化测量知识的过程.三、程序设计步骤和规范1、程序设计基本步骤1) 问题描述2) 算法设计3) 程序编码4) 程序测试5) 程序应用与维护2、程序设计规范1) 结构清晰、代码精简2) 尽量使用标准函数、尽量使用局部变量.3) 进行适当注释.4) 利用缩进键显示程序逻辑结构5) 循环和分支层次不要过多.慎GOTO语句.6) 界面设计尽量美观统一四、测量程序设计语言选择为什么选择VB语言(VB语言特点) :Visual Basic之所以受到广大编程爱好者及专业编程人员的青睐,是因为它具有以下一些特点:1).面向对象 2).事件驱动 3).软件的集成式开发 4).结构化的程序设计语言。
程序设计教案VB版第七章
程序设计教案VB版第七章第一篇:程序设计教案VB版第七章第七章绘制误差椭圆、误差曲线的程序设计方法§7-1 绘制误差椭圆的程序设计方法测量平面控制网平差计算后进行精度评定时,点位中误差虽然可以用来评定待定点的点位精度,但是它却不能代表该点在某一任意方向上的位差大小。
在有些情况下,往往需要确定点位在某些特殊方向上的位差大小;此外,还要了解点位在哪一个方向上的位差最大,在哪一个方向上的位差最小。
例如,在工程放样中,就经常需要研究这个问题。
为了便于求定待定点点位在任意方向上位差的大小,一般是通过求出待定点的点位误差椭圆来实现的。
通过误差椭圆可以求得待定点在任意方向上的位差,这样就可以较精确地、形象而全面地反映待定点点位在各个方向上误差的分布情况。
为了确定任意两个待定点之间相对位置的某些精度,也需要作出两个待定点之间的相对误差椭圆。
无论是表示点位绝对位差的误差椭圆,还是表示两个待定点之间相对位置的某些精度的相对误差椭圆,在测量程序设计中所要面临的问题都是绘制椭圆,而这个椭圆一般情况下不是正立的。
由于目前常用的几种编程语言(例如VB、VC)中没有现成的语句、命令、函数或方法来绘制倾斜任意角度的椭圆,因此,下面研究在计算机屏幕上绘制倾斜任意角度的椭圆的编程方法。
一、绘制误差椭圆的基本思路以下讨论问题及编程中所使用的平面直角坐标系,设经过一段程序的控制,已将屏幕绘图区域的平面直角坐标系调整为测量平面直角坐标系(以下简称坐标系),即纵轴向上为X轴正向,横轴向右为Y 轴正向。
绘制倾斜任意角度的误差椭圆时,已知数据如下:椭圆的长半轴:E(也可用a表示)椭圆的短半轴:F(也可用b表示)椭圆中心点的在坐标系中的坐标:(X0,Y0)椭圆长半轴在坐标系中的坐标方位角:T(T称为误差椭圆的主轴方向)如图7-1所示,绘制倾斜任意角度的误差椭圆的基本思路是:首先,求出在坐标系中坐标方位角为T的椭圆长半轴与椭圆圆周的交点G的坐标;然后,再求出椭圆圆周上一系列点P(i)的坐标(设i=0时,P(0)点与G点重合;i=n时,P(n)点与G点重合);最后,从G点开始用VB中画直线方法LINE(以下简称LINE)依次连接相邻点。
测量平差程序设计2
平差数据读入
• d = cds '对dm()数组容量变量d赋初始值cds. • For i = 1 To nl(cds) '按方向值号循环。若控制网 没有方向观测值(三边网),则循环不执行。 • p = 0 '对识别变量p赋初始值0。 • For j = 1 To d '依次访问dm()数组中全部点。 • If dm(j) = lb(i) Then p = 1 ' 查看方向观测 值照准点是否已录入dm()数组,是则对识别变量p赋值1。 • Next j • If p = 0 Then d = d + 1: ReDim Preserve dm(d): dm(d) = lb(i) ' p=0,表明方向观测值照准点未录入点 名数组dm()。d值递增1,将该点名赋给dm(d)。 • Next i
• yo(k) = Val(tr(3)) ‘存已知点y坐标。
平差数据读入
• Else‘ p = 2读到的是观测值行,下面根据识别符 作相应处理
•
• • • • •
If tr(2) = "l" Then'读到方向观测值
nl(j) = nl(j) + 1‘测站j最大方向号值递增1 ReDim Preserve lb(nl(j)) lb(nl(j)) = tr(1)‘存照准点名。 ReDim Preserve l(nl(j)) l(nl(j)) = Val(tr(3))‘存方向值。
平差数据读入
• Else 'tr(2) =‚s‛,读到的是边长观测值 • ns(j) = ns(j) + 1测站j最大边长号值递 增1 • ReDim Preserve sb(ns(j))
•
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Case 0 '读入观测值文件Text1.Visible = FalseCommonDialog1.ShowOpenfname = CommonDialog1.FileName '将用户在"打开"对话框中选择的文件名对变量fname赋值If fname <> "" Then '若无此判断当对话框中选择取消时、下面赋值语句将出错Set ts = fso.OpenTextFile(fname) '将fname作为文本文件打开,并设置句柄j = 0: k = 0: p = 0: h = 0'j是测站数累计变量,k是已知点累计变量,l(j)、ns(j)分别是方向值、边长累积计数Do While ts.AtEndOfLine <> True '前测型循环,进入循环的条件是没有读到文件结束尾B = ts.ReadLine '读一行,置入bB = Trim(B): i = 1: '删除B可能有的前导和尾随空格,i是工作变量,m(i) = InStr(B, ",") '查行中第一个逗号的左数位置,并保存在整形数组变量m(i)Do While m(i) <> 0 '前测型Do... Loop循环,成立条件是该行字符串中有逗号tr(i) = Mid(B, m(i - 1) + 1, m(i) - m(i - 1) - 1) '提取指定位置开始的指定数目字符。
i = i + 1m(i) = InStr(m(i - 1) + 1, B, ",") '从上一个找到的逗号位置起,查找下一个逗号的位置LoopIf m(i) = 0 And i > 1 Then tr(i) = Right(B, Len(B) - m(i - 1)) '处理一行中最后一个逗号后的字符串'以下部分是将存储在数组变量m(i)中的字符分类存放到方向、边长、已知坐标、网型信息等数组中If p = 0 Then '读到的是文件第一行。
ma = tr(1): ms = tr(2): mk = tr(3): p = 1 '提取观测方向,边先验精度值,并使该句以后不能再执行。
ElseIf m(1) = 0 Then j = j + 1: ReDim Preserve dm(j): ReDim Preserve nl(j): ReDim Preserve ns(j): dm(j) = B: nl(j) = nl(j - 1): ns(j) = ns(j - 1) '该行中没有逗号,但又不是结束符,则一定是测站点名。
将读出的字符串赋值到点名数组变量dm(j),资料.Next jIf p = 0 Then d = d + 1: ReDim Preserve ns(d): ns(d) = ns(d - 1): ReDim Preserve dm(d): dm(d) = lb(i) '如p=0,表明目标点未设过测站,将该点点名加入点名数组Next izds = d '将总点数存入模块级变量zdsReDim x(zds), y(zds) ' 重新定义坐标数组x(1) = 10000: y(1) = 10000 '为推算近似坐标,对第一个点赋假设坐标值k = 1For i = 1 To ydsIf lb(1) = ym(i) Then k = k + 1Next iss = sid(1, k) '调出第一点到未知点方向的边长,参数是测站点序号,照准方向号h = seqn(lb(k)) '查k方向照准点的计算序号x(h) = x(1) + ss * Cos(0): y(h) = y(1) + ss * Sin(0) '计算第一点上第k方向值的目标点假设坐标For i = 1 To nl(cds) '遍访所有方向值,将其由角度值转换为弧度值.If l(i) > 0.001 Then l(i) = radian(l(i)) '零方向值不参加转换Next in = 0Don = n + 1 'n是循环计数变量,控制循环次数,避免假定坐标计算不出时,进入死循环。
For i = 1 To cds '按测站循环If x(i) > 1 Then '在该测站假设坐标已计算出的前提下,求照准点假设坐标p1 = 0For j = nl(i - 1) + 1 To nl(i) '遍访i测站上所有方向值h = seqn(lb(j)) '查目标点对应的序号If x(h) > 1 Then '目标点坐标已解出资料.t2 = azimuth(xo(1), yo(1), xo(2), yo(2))dt = t2 - t1: x1 = x(m(1)): y1 = y(m(1))For i = 1 To zds '将假设坐标转换到实际坐标dx = x(i) - x1: dy = y(i) - y1x(i) = xo(1) + dx * Cos(dt) - dy * Sin(dt)y(i) = yo(1) + dx * Sin(dt) + dy * Cos(dt)Next iFor i = 1 To yds '置入已知点坐标x(m(i)) = xo(i): y(m(i)) = yo(i)Next iCase 2 '组法方程Text1.Visible = FalseDim l1 As Double, pp As Double, n2 As Long '定义过程级变量q = 206265: ll = 0n1 = 2 * (zds - yds) '未知数数目n2 = n1 * (n1 + 1) / 2 '一维存储法方程系数数组上限ReDim NX(n2), UX(n1) ' 重新定义法方程系数、常数数组Call order(m(), yds) '对保存已知点序号的m()数组排序For i = 1 To cds '按测站循环z = 0 '将按测站累积的变量清零'下面开始处理一个测站的方向观测值k1 = nl(i - 1) + 1: k2 = nl(i) '一测站上最小和最大方向号For j = k1 To k2 '在i测站上按方向循环,求定向角未知数h = seqn(lb(j))t = azimuth(x(i), y(i), x(h), y(h))f = t - l(j): If f < 0 Then f = f + 2 * pi 'f是解算的零方角方位角资料.pp = 1 '方向观测值的权为1Call equation(nb(), pp, l1) '组法方程,参数分别是误差方程系数数组、权、误差方程常数项Next jpp = -1 / (k2 - k1 + 1): l1 = ln 'pp是和方程的权Call equation(nc(), pp, l1) '和方程组法方程,nc()是一测站方向误差方程和方程数组'一个测站方向观测值误差方程处理完毕,下面开始处理该测站的边观测值If ns(i) - ns(i - 1) - 1 >= 0 Then 'i测站有观测边For j = ns(i - 1) + 1 To ns(i) '依次遍访i测站上各观测边ReDim nb(n1) ' 重新定义误差方程系数数组,并且每循环到一新边长前清零h = seqn(sb(j))t = azimuth(x(i), y(i), x(h), y(h))A = Cos(t):B = Sin(t)cha = charact(i, k) '自定义函数,查测站点i是否已知点,如不是,用k返回i前面有几个已知点If cha = "n" Then '测站点i不是已知点d = 2 * (i - k - 1) + 1 '计算测站i点x坐标未知数在未知数点集中的序号nb(d) = -A: nb(d + 1) = -BEnd Ifcha = charact(h, k)If cha = "n" Then '照准方向点h不是已知点d = 2 * (h - k - 1) + 1 '计算照准方向h点x坐标未知数在未知数点集中的序号nb(d) = A: nb(d + 1) = BEnd Ifdx = x(h) - x(i): dy = y(h) - y(i)ss = Sqr(dx ^ 2 + dy ^ 2) '反算边长,置于判断式外是因为两已知点之间不会测边pp = (ma / (0.1 * ms + mk * ss * 10 ^ -4)) ^ 2 '边长观测值定权l1 = (ss - s(j)) * 100 '求边误差方程常数(单位是厘米)资料.'并对该测站最大方向号,最大边长号数组变量nl(j)、ns(j)赋值累计起始值If m(1) <> 0 Then '不是第一行,并且该行中有逗号分割的多个字串tr(2) = LCase(tr(2))If tr(2) <> "l" And tr(2) <> "s" Then '这一行不是方向或边长观测值,而是已知点坐标值k = k + 1: ReDim Preserve ym(k): ReDim Preserve xo(k): ReDim Preserve yo(k):ym(k) = tr(1): xo(k) = Val(tr(2)): yo(k) = Val(tr(3)) '输入已知点坐标ElseIf tr(2) = "l" Then nl(j) = nl(j) + 1: ReDim Preserve lb(nl(j)): ReDim Preserve l(nl(j)): lb(nl(j)) = tr(1): l(nl(j)) = Val(tr(3)) '累计测站方向数、提取照准点、方向值If tr(2) = "s" Then ns(j) = ns(j) + 1: ReDim Preserve sb(ns(j)): ReDim Preserve s(ns(j)): sb(ns(j)) = tr(1): s(ns(j)) = Val(tr(3)) '提取边观测数、提取照准点、观测边End IfEnd IfEnd IfLoopts.Closecds = j: yds = k '用模块级变量cds 、yds保存测站点总数、已知点总数MsgBox "数据已成功读入", 0 + 64 + 0, "数据输入"End IfCase 1 '解算近似坐标d = cds 'd是测站数For i = 1 To nl(cds) '依次访问所有的方向值p = 0 '设识别变量For j = 1 To d '依次访问所有测站If dm(j) = lb(i) Then p = 1 ' 查看目标点是否设过测站,是则对识别变量p赋值1。