当前位置:文档之家› 《测绘程序设计》实验指导书

《测绘程序设计》实验指导书

《测绘遥感程序设计》实验指导书(Visual C++.net)(供测绘工程专业用)(2015年修订)戴吾蛟编二零一五年三月中南大学测绘与遥感科学系前言测绘遥感程序设计上机实验是学习本门课程的重要环节之一,实验的设置是为了配合课堂教学,使学生熟练掌握和深入理解课堂教学内容,进一步强化测绘程序设计、测量学及测量平差原理的理解,掌握利用Visual C++.net进行常用的测量程序以及控制网的间接平差程序设计。

实验内容本门课程必做的实验有(在Visual C++.net 2008 环境下):1.Visual C++.net环境、基本控件及简单程序设计(三角形面积计算)2.控制结构程序设计(方位角计算、地心坐标至大地坐标转换)3.数组、指针(多边形面积计算)4.函数(交会定点函数设计、高斯投影正反算程序设计)5.类的创建(大地四边形类设计、角度类设计)6.文件(Cass测量数据整理)7.图形程序设计(位移序列曲线图形程序设计)8.常用测量计算(无定向导线简易计算程序设计)9.平差程序设计(水准网间接平差程序设计)修订说明:由于2012版培养方案增加了8课时,实验课时也相应增加了4课时。

为此,本实验指导书将高斯投影正反算提前,并要求以函数的形式编写。

增加了大地四边形类设计以及无定向导线简易计算程序设计。

实验1 Visual C++.net环境和简单程序设计一、实验目的∙掌握Visual 的安装和启动。

∙了解VC++ 2008的菜单系统、工具栏和各种基本窗体。

∙理解VC++.net开发应用程序的步骤。

∙掌握基于对话框的程序设计。

∙掌握按钮、文本框和标签框的基本使用方法∙掌握使用MSDN帮助文档二、实验内容1.启动与退出VC++.net,熟悉VC++.net的开发环境,通过向导生成基于对话框的应用程序。

使用MSDN查看命令按钮、标签和文本框的主要属性和方法。

2.打开Microsoft visual studio 2008 文档,浏览“Visual studio 文档”目录下的内容,并从“Visual studio 文档->Visual C++->示例”目录下下载一个程序,编译并运行之。

3.设计一个已知三边边长计算三角形面积的程序。

计算模型如下:海伦公式:))()((cpbpappS---=,其中2cbap ++=提示:(1)在【文件】菜单上执行【新建】,然后选择“项目” 。

(2)在【项目类型】窗格中,选择【Visual C++】下的“MFC”项。

在【模板】窗格中,选择“MFC 应用程序”模板,输入应用程序名称“××××”。

按向导创建名为“×××××”的 MFC应用程序。

(3)在窗体上放置4个文本框、4个静态框、3个命令按钮(其中两个缺省);(4)设置控件属性,如Static1的Caption属性设置成“a=”,用于提示Edit 框的输入边长a;(5)把“取消”按钮的Caption属性改为“退出”;双击前两个按钮,生成Click消息函数,注释掉重载函数“OnOK()”。

(6)为4个Edit控件添加绑定变量。

(7)在相应的函数中添加代码;(8)运行和调试程序;(9)保存应用程序。

实验2 控制结构程序设计一、实验目的∙ 掌握VC++.net 语言的基本语法;∙ 理解顺序结构、选择结构和循环结构程序设计的特点及应用; ∙ 掌握对基于对话框的MFC 应用程序设计方法;∙ 掌握一些简单算法。

二、实验内容1.编写一个方位角计算程序。

提示:先使用反正切函数计算,然后利用坐标增量的符号来判断所在的象限。

2.设计同一参考椭球下的三维地心坐标(笛卡儿坐标系)与大地坐标系转换的程序。

(提示:用do …while 迭代,B 、H 初始为0进行迭代,直到H 的精度达到0.00001米)dxdy arctg A ='⎪⎪⎩⎪⎪⎨⎧+-=+=+=BH e N Z L B H N Y L B H N X sin ])1([sin cos )(cos cos )(2注意:东经0~180(Y>0),西经:0~-180(Y<0)式中,B 、L 、H 为椭球面上的大地纬度、大地经度、大地高;X 、Y 、Z 为空间直角坐标;N 为卯酉圈曲率半径,e 为椭球的偏心率,a 为椭球的长半径,b 为椭球的短半径。

(WGS84椭球参数:长半径a=6378137m ,扁率α=1/298.257223563)()⎪⎪⎭⎫ ⎝⎛+-⋅+=)/(1)(arctan 222H N N e Y X Z B N B Y X H -+=cos 22⎪⎭⎫ ⎝⎛=X Y L arctan Be a N 22sin 1-=222a b a e -=222αα-=e实验3 数组与指针一、实验目的掌握函数的定义、引用及应用方法。

二、实验内容1.编写一个求任意多边形面积的程序。

提示:通过界面输入数据,并把数据保存在一个二维数组或一个一维的自定义结构体类型的数组中,然后再进行计算。

要求计算部分写成函数的形式,使计算程序与界面无关。

动态数组创建动态数组结构体的定义多边形面积计算原理及算法计算原理:例如上图: ))((21))((21))((21))((214114344323321221y y x x y y x x y y x x y y x x P -++-++-++-+=面积计算的算法:经整理后得:)11,,2,1())((21111=+==-+=∑=++i n i n i Y Y X X P ni i i i i 时,;当实验4 函数一、实验目的∙掌握函数的定义、引用及应用方法。

二、实验内容1.交会定点计算函数设计把前方交会、测边交会、后方交会程序写成函数的形式,然后再通过主程序调用。

提示:后方交会计算函数设计思路(1)基本原理及计算公式若将Pa、Pb、Pc看成权,则P点的坐标即为三个已知点的加权平均值(2)计算程序设计步骤①设计界面,用于输入3个已知点的坐标和三个观测角α、β和γ,以及用于输出待定点坐标的文本框(12个)、静态标签框和Button按钮;②定义文本框控件变量(Value);③创建后方交会定点计算函数,函数的输入为三个观测角和三个已知点的坐标,输出为待定点坐标,输出可以用引用参数的方式输出,具体计算步骤;a.根据已知点计算三个内角A 、B 、C ;b.计算Tan(α)、Tan(β)、Tan(γ)、Tan(A)、Tan(B)、Tan(C);c.计算Pa 、Pb 、Pc ;d.计算待定点坐标Xp 、Yp 。

④创建“计算”Button 按钮的Click 事件函数,在该事件函数中调用后方交会计算函数,并在相应的文本框中显示计算结果。

2.高斯投影正反算计算函数设计编写高斯投影正算与反算的两个函数,并设计简单界面对函数计算的正确性进行测试。

正算公式:⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎨⎧''-++-''+''+-''+''''=''+-''+''++-''+''''+=52224255322336425644223222)5814185(cos 120)1(cos 6cos )5861(cos sin 720)495(cos sin 24cos sin 2l t t t B N l t B N l B N y l t t B B N l t B B N l B B N X x ηηρηρρρηηρρBe a N 22sin 1-=tant B =Be cos '=ηab a e 22-=bb a e 22-='ρ''l ''是弧度转换为秒的转换单位,是经度L 同当前带中央子午线的差值,单位为秒。

X 为当前点到赤道的子午线长度。

反算公式:)8sin 6sin 4sin 2sin )(1(864202B A B A B A B A B A e a X ++++-=ae长半轴第一偏心率⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎨⎧+++++++-=++--+++-=5222425322364254222232)8624285(cos 1201 )21(cos 61cos 1)459061(720 )935(242 y t t t B N y t B N y B N l y t t N M t y t t N M t y N M t B B f f f f f f f f f f f f f ff ff ff f f f ff f f f f f ηηηηηlfB 是要求的点到中央子午线的经度差, 为底点纬度下标“f”表示与 fB 有关的量fff B e N M 22cos 1'+=ff B e a N 22sin 1-=ff B e cos '=ηff B t tan =注意:高斯投影正反算公式比较复杂,编写程序时变量定义一定要十分的清晰[]{})sin (sin sin 2sin 026402202000B K K B K B K B B B f ++++=020)1(A e a XB -=xX =即,y =0时 x 所对应道的子午弧长实验5 类的创建一、实验目的1. 掌握面向对象编程基本思想2. 掌握VC++.net 中创建类3. 掌握建立和使用对象4. 掌握运算符号重载5. 理解类的继承和多态性二、 实验内容1.大地四边形类设计要求:设计一个大地四边形类,注意大地四边形的基本属性,功能上只要求能够设置和返回已知点坐标、8个观测角度、待定点近似坐标计算以及闭合差的计算。

提示:大地四边形(如图所示)以AB 为基线,具有对角线的四边形,它是建立桥梁控制网常用的形式,一般采用条件平差进行计算,本实验中仅要求采用前方交会的方法计算C 和D 点的近似坐标。

CD大地四边形⎪⎭⎪⎬⎫︒-+++=︒-+++=︒-+++=180180180872134321287651a a a a w a a a a w a a a a w 三角形闭合差"++-=ρ)sin )sin(sin )sin(sin sin 1(68145471a a a a a a a a w d 极条件闭合差2.角度类设计要求该类具有度分秒至度的换算、度至度分秒的换算、度与弧度的换算等功能。

提示:设置一个角度大小属性,并设定该属性为缺省属性;另设一个状态属性,表示当前设置的角度大小的形式;度分秒、度、弧度间的相互转换的方法;定义运算符号(加、减)方法,使得角度类能够像一种普通的数据类型样的方便使用;用设计好的角度类重新编写后方交会定点程序。

相关主题