平面和高程控制测量实训总结
《工程测量2》实训总结
转眼间一周的工程测量实训就结束啦!从这周实习的日子中,我从中得到很
多更宝贵的东西:首先,通过实习,让我发现我在平时学习中存在的很多知识漏洞。课本上介绍仪器使用的知识都比较抽象,到了真正实践中的时候,我们未能很好把书本知识应用到实践中,还需要老师再次进行指导。在近距离的接触这些实物,能我更牢固的掌握相关的知识点;也能令我提高对仪器的操作的熟练、精准程度(比如能够迅速对中整平)。
其次,通过这次实训,有利于培养我做事严谨、认真、不畏艰难困苦的作风。不论是对中整平时的重复精确瞄准还是在放样计算时反复检验计算数据(以确保放样时的原数据正确),每个步骤都尽量做到脚踏实地、一丝不苟,使误差尽可能的减小,及时发现错误及时检查;不论外界的环境的恶劣,克服一下就算不了什么;正确面对困难,学会静下来耐心的思考分析问题,能够独立借助书本找出解决途径。做事要又负责的态度,若因为自己而造成了错误要主动承担并积极补救。
第三,通过实习对培养我们团队协作精神有促进作用。它增进了同学们之间的交流和团结,互帮互补,分工合作,共同面对、解决困难,共同寻求如何更快更好地完成任务的方法,提高小组工作效率,确保进度的完成。
这次测量仪器的使用和实地的测量实训工作的开展,让我们更直观接触到了土木工程测量这个学科,也为我们今后走上工作岗位后,更好更快地使用仪器、控制测量发放奠定了坚实的基础。大学生成长,就要勤于实践,将所学的理论知识与实践相结合一起,在实践中继续学习,不断总结,逐步完善,有所创新,并在实践中提高自己由知识、能力、智慧等因素融合成的综合素质和能力。以后我会珍惜每次的实习机会,多去挖掘课堂上无法获及的东西,为自己事业的成功打下良好的基础。
这周的测量实习结束了,虽然开始时大家都感到好累,仪器有一小点儿的损坏,但看到我们的收获我们大家还是很高兴的。我觉得自己学到了很多的东西。对以前零零碎碎学的测量知识有了综合应用的机会。具体实训内容如下:一、每组配备的仪器和工具
全站仪1台,对中杆1个,脚架2个,基座1个,棱镜1个,钢尺2把。有关记录手簿、计算纸,橡皮及铅笔等自备。(仪器要好好的保管)二、建立施工平面控制网和高程控制网
在测区实地踏勘,布设一条三级闭合导线,经过观测、计算获得控制点平面坐标,并在CAD中画出闭合导线,标注每个控制点的坐标。我们组在指定测区进行踏勘,根据测区范围及测图要求确定布网方案进行选点。每个一百米选一个点,点的个数为5个。所选控制点包括一个已知点。点位选定之后,我们组立即作好标志。然后根据水平角观测、边长测量的要求进行成果整理、平面坐标计算。在踏勘的同时布设高程控制网,高程控制点可设在平面控制点上,网内应包括原有水准点,采用全站仪三角高程测量的方法进行四等水准测量。布网形式为闭合路线。在踏勘的同时布设高程控制网,高程控制点可设在平面控制点上,网内包括原有水准点,采用全站仪三角高程测量的方法进行四等水准测量。布网形式为闭合路线。然后根据四等水准测量,用三角高程测量法进行观测的要求进行成果整理及高程计算。三、施工放线
(1)、建筑物定位放线:
(1)我们组根据自己的控制区域,在CAD中设计了一个正方形建筑物的平面图;
(2)根据设计的平面图在地面上进行建筑定位放线、轴线测设及设置轴线控制桩(轴线控制桩距轴线的距离为5米左右);
(3)对所放建筑物平面位置进行检查。其中,建筑物定位时,距离误差允许为1/5000,角度误差允许为±30″。轴线测设时相邻轴线的间距误差为1/3000。
(4)最后我们组的成员站在放的轴线点上照相。
(2)、圆曲线测设
每组在自己的控制区域设计了一条R=50,α=45°的圆曲线,用切线支距法在地面上测设出该圆曲线。最后小组成员也在点上照了一张图片。
扩展阅读:平面和高程控制测量VB程序设计报告
测绘程序编制实习报告
题目:习题7.1平面和高程控制网平差
测绘C101蒲轩106684习题7.1蒲轩
测绘C101班
106684
余数7
17测绘程序编制实习报告
一、设计思路
题目为:平面控制网和高程控制网的平差
1、流程图
启动软件选择控制网默认平面控制高程控制网平面控制网返回打开高程数据点击“文件”菜单高程计算输入数据结果保存是是否保存清除运算平面控制网平差计算否启动CommonDialogControl控件保存结果清除txtShow保存数据
2测绘C101蒲轩106684习题7.1测绘程序编制实习报告
2、界面设计
上面为开始主程序,在该页面进行高程控制网平差,点击平面控制启动下面的程序页面进行平面控制网平差。
2、功能设计
通过菜单实现程序的各个功能,通过菜单启动CommonDialogControl控件输入txt文档,读取txt里面的高程或平面控制网数据,然后点击各个计算菜单进行平差计算
二、算法及代码实现
3测绘C101蒲轩106684习题7.1测绘程序编制实习报告
1、Form1代码:
DimstrFileNameAsString
Dimnn%,un%,tn%,hn%"已知点个数,未知点个数,总点数,观测值个数
DimPname()AsString"点名数组
DimHknown()AsDouble"已知高程数组,存放已知点高程和高程近似值
DimbE%(),en%()"观测值的起点和终点编号数组,存储的是点序号
Dimh#(),s#()"高差观测值数组和距离观测值数组Dima#(),x#(),P#(),L#()"间接平差的系数阵、解向量、权阵和常数向量
"高程平差计算
PrivateSubmnuAdj_Click()Dimi%,j%
ReDimx(1Toun)
InAdjusta,P,L,x"调用间接平差的通用过程求解
"计算并显示高程平差结果
txtShow.Text=txtShow.Text&"平差计算结果:"&vbCrLf
txtShow.Text=txtShow.Text&"点号初始高程(m)高程改正数(m)平差后高程(m)"&vbCrLfFori=1Toun
txtShow.Text=txtShow.Text&Pname(nn+i)&""&Format(Hknown(nn+i),"0.0000")
Hknown(nn+i)=Hknown(nn+i)+x(i)
txtShow.Text=txtShow.Text&""&Format(x(i),"0.0000")&""&Format(Hknown(nn+i),"0.0000")&vbCrLfNexti
txtShow.Text=txtShow.Text&vbCrLf
"计算并显示单位权中误差--------->>精度评定部分应该也包含在间接平差模块里,一起来调用"DimdblTAsDouble"dblT=0
"Fori=1Toun"
"NextiEndSub
4测绘C101蒲轩106684习题7.1测绘程序编制实习报告
PrivateSubmnuCalc_Click(IndexAsInteger)Form1.Visible=FalsefrmMain.Visible=True
EndSub
"误差方程
PrivateSubmnuEqu_Click()Dimi%,j%
ReDima(1Tohn,1Toun),L(1Tohn),P(1Tohn,1Tohn)
"对每个观测值列误差方程Fori=1Tohn
Ifen(i)>nnThena(i,en(i)-nn)=1"若终点未知,则给终点对应的系数矩阵元素赋值
IfbE(i)>nnThena(i,bE(i)-nn)=-1"若起点未知,则给起点对应的系数矩阵元素赋值
L(i)=-(Hknown(en(i))-Hknown(bE(i))-h(i))"根据起终点计算常数项
P(i,i)=1/s(i)"以距离的倒数为权Nexti
"显示误差方程
txtShow.Text=txtShow.Text&"列立的误差方程:"&vbCrLfFori=1TohnForj=1Toun
txtShow.Text=txtShow.Text&a(i,j)&""Nextj
txtShow.Text=txtShow.Text&""&Format(L(i),"0.0000")&vbCrLfNexti
txtShow.Text=txtShow.Text&"权矩阵:"&vbCrLfFori=1TohnForj=1Tohn
txtShow.Text=txtShow.Text&P(i,j)&""Nextj
txtShow.Text=txtShow.Text&vbCrLfNextiEndSub
PrivateSubmnuHeight_Click()"计算近似高程
5测绘C101蒲轩106684习题7.1测绘程序编制实习报告
Dimi%,j%
Fori=1TounForj=1Tohn
IfbE(j)=nn+iAnden(j) Hknown(nn+i)=Hknown(en(j))-h(j)ExitForEndIf Ifen(j)=nn+iAndbE(j) Hknown(nn+i)=Hknown(bE(j))+h(j)ExitForEndIfNextjNexti "显示近似高程计算结果 txtShow.Text=txtShow.Text&"近似高程计算结果:"&vbCrLfFori=1Toun txtShow.Text=txtShow.Text&Pname(i+nn)&":"&Format(Hknown(i+nn),"0.000")&vbCrLfNextiEndSub "打开高程文件 PrivateSubmnuHOpen_Click() DimiAsInteger"循环变量DimstrT1AsString,strT2AsString CDg1.Filter="文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"CDg1.ShowOpen"打开对话框 strFileName=CDg1.FileName"获得选中的文件名和路径 OpenstrFileNameForInputAs#1"打开文件 Input#1,nn,un,hn"读入已知点个数,未知点个数,观测值个数 tn=nn+un ReDimPname(1Totn),Hknown(1Totn) ReDimh(1Tohn),s(1Tohn),bE(1Tohn),en(1Tohn)Fori=1Totn"读入点名Input#1,Pname(i)Nexti 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 Fori=1Tonn"读入已知高程Input#1,Hknown(i)Nexti Fori=1Tohn"读入各观测值Input#1,strT1,strT2,h(i),s(i) bE(i)=Order(strT1):en(i)=Order(strT2)"给起终点数组排序 Nexti "显示读入的数据 txtShow.Text=txtShow.Text&"读入的水准网数据:"&vbCrLftxtShow.Text=txtShow.Text&"已知点"&nn&"个,未知点"&un&"个,观测值"&hn&"个。"&vbCrLf txtShow.Text=txtShow.Text&"网中涉及的点名有:"Fori=1Totn txtShow.Text=txtShow.Text&Pname(i)&","Nexti txtShow.Text=txtShow.Text&vbCrLf txtShow.Text=txtShow.Text&"已知点高程为:"&vbCrLfFori=1Tonn txtShow.Text=txtShow.Text&Pname(i)&"的高程为:"&Hknown(i)&vbCrLfNexti txtShow.Text=txtShow.Text&"各观测值分别为:"&vbCrLftxtShow.Text=txtShow.Text&"起点"&""&"终点"&""&"高差观测值"&"距离观测值"&vbCrLfFori=1Tohn txtShow.Text=txtShow.Text&Pname(bE(i))&""&Pname(en(i))&""&Format(h(i),"0.000")&""&Format(s(i),"0.000")&vbCrLfNexti Close#1"不要忘记关闭文件EndSub "点名-序号转换函数 PublicFunctionOrder(strAsString)AsIntegerDimi% Fori=1Totn Ifstr=Pname(i)ThenOrder=iExitForEndIfNexti 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 EndFunction "程序退出时检查是否已保存结果 PrivateSubForm_Unload(CancelAsInteger)IftxtShow.Text""ThenDimiMsg% iMsg=MsgBox("是否保存计算结果?",vbYesNoCancel,"注意保存!") IfiMsg=vbYesThenmnuSave_ClickIfiMsg=vbCancelThenCancel=TrueEndIfEndSub "保存计算结果 PrivateSubmnuSave_Click()DimiMsg%reSave: CDg1.FileName="":CDg1.Filter="TextFiles(*.TXT)|*.txt"CDg1.Action=2 strFileName=CDg1.FileName IfstrFileName=""Then iMsg=MsgBox("请选择文件名!",vbYesNoCancel,"注意!")IfiMsg=vbYesThenGoToreSave:Else txtShow.Text=""ExitSubEndIfEndIf OpenstrFileNameForOutputAs#1Print#1,txtShow.TextClose#1 txtShow.Text=""EndSub 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 3、frmMain代码: OptionExplicit ConstPI=3.14159265358979ConstRU=206264.8 DimNet%,nn%,un%,tn%"网的类型,已知点个数,未知点个数,总点数 DimPname()AsString"点名数组,大小为tn DimX0#(),Y0#()"已知点坐标及未知点近似坐标,大小为tn Dimx#(),Y#()"已知点坐标及未知点平差坐标,大小为tn DimN500%"记录Y坐标的带号,读入数据时减该常数,输出数据时加 DimNe%,Nd%"边长观测值个数,方向观测值个数DimmM#,pP#"边长观测值的固定误差和比例误差,单位为mm和ppm DimbE%(),eE%(),s#()"边长观测值的起点、终点、边长DimmD#,Dir0#(),Dir#()"方向中误差,原始方向数组和排序后的方向数组 DimbD0%(),eD0%(),bD%(),eD%()"方向起终点原始数组和排序后的数组DimSi%(),Ni%()"统计总的方向数和每个测站的方向数Dimaa%(),bb%(),cc%()"近似坐标的计算路线,个数与未知点个数相同 DimPa#(700,9),Pa3#(200,40),W#(400)"误差方程系数(压缩方式存放)和常数向量DimqL#(700),qLS#(200)"误差方程权和虚拟误差方程的权DimQ(100,100)AsDouble"协方差阵,Q=N^(-1)DimuW0#"单位权中误差 DimstrFileNameAsString "检查数据并将点名转换为序号 "第一个参数是要检查的点名,第二个参数是得到的序号;返回值是错误号PublicFunctionChkData(strPAsString,Order%)AsIntegerDimi%,bFoundAsBoolean Order=0 bFound=False Fori=1Totn IfstrP=Pname(i)ThenbFound=TrueOrder=i 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 ChkData=0ExitForEndIfNexti IfNotbFoundThen OpenApp.Path&"\\err.log"ForOutputAs#1Print#1,"未找到的点号:"&strP&vbCrLfClose#1ChkData=1 MsgBox"有未找到的点号",1,"输入错误"EndIfEndFunction "文本框大小随窗口大小的改变而改变PrivateSubForm_Resize() txtShow.Width=frmMain.Width-330 IffrmMain.Height>1030ThentxtShow.Height=frmMain.Height-1030txtShow.Left=120txtShow.Top=120EndSub "退出程序 PrivateSubmnuExit_Click()EndEndSub "计算近似坐标 PrivateSubmnuCalcCoor_Click()Screen.MousePointer=13 Dimi%,j%,k%"循环变量 IfNet=1Then"按边长计算近似坐标:使用前方交会方法DimSa#,Sb#,Sc#,al#,bl#,cl#"三角形边长和三个内角 Fori=1Toun Sc=DistAB(X0(aa(i)),Y0(aa(i)),X0(bb(i)),Y0(bb(i)))Forj=1ToNe If(bE(j)=bb(i)AndeE(j)=cc(i))Or(bE(j)=cc(i)AndeE(j)=bb(i))ThenSa=s(j) If(bE(j)=aa(i)AndeE(j)=cc(i))Or(bE(j)=cc(i)AndeE(j)=aa(i))ThenSb=s(j) Nextj CallGetInnerAngleS(Sa,Sb,Sc,al,bl,cl)"求三角形三个内角 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 "调用前方交会程序计算待定点坐标 ForIntersecX0(aa(i)),Y0(aa(i)),X0(bb(i)),Y0(bb(i)),al,bl,X0(cc(i)),Y0(cc(i))Nexti "显示计算结果 OpenApp.Path&"\\按边长计算近似坐标.txt"ForOutputAs#1Print#1,"按边长计算近似坐标:" txtShow.Text=txtShow.Text&"按边长计算近似坐标:"&vbCrLfFori=nn+1Totn Print#1,Pname(i),Format(X0(i),"0.0000"),Format(Y0(i),"0.0000") txtShow.Text=txtShow.Text&Pname(i)&","&Format(X0(i),"0.0000")&","&Format(Y0(i),"0.0000")&vbCrLfNextiClose#1EndIf IfNet=2Then"根据方向观测值计算近似坐标:使用前方交会方法 DimTa#,Tb#"用于交会的两个角 Fori=1Toun Ta=GetBeta(bb(i),aa(i),cc(i),j)"求角ATb=GetBeta(aa(i),bb(i),cc(i),j)"求角B"调用前方交会程序计算待定点坐标 ForIntersecX0(aa(i)),Y0(aa(i)),X0(bb(i)),Y0(bb(i)),Ta,Tb,X0(cc(i)),Y0(cc(i))Nexti OpenApp.Path&"\\按方向计算近似坐标.txt"ForOutputAs#1Print#1,"按方向计算近似坐标:" txtShow.Text=txtShow.Text&"按方向计算近似坐标:"&vbCrLfFori=nn+1Totn Print#1,Pname(i),Format(X0(i),"0.0000"),Format(Y0(i),"0.0000") txtShow.Text=txtShow.Text&Pname(i)&","&Format(X0(i),"0.0000")&","&Format(Y0(i),"0.0000")&vbCrLfNextiClose#1EndIf IfNet>2Then"根据边角条件计算近似坐标:使用极坐标方法 DimdblS#,dblA#,dblD#"极坐标方法中的边长、夹角、方位角Dimdir1#,dir2#,bFAsBoolean"两个临时的方向,一个逻辑开关Fori=nn+1Totn Forj=Si(i)ToSi(i)+Ni(i)-1IfeD(j) "如果搜索要用到的边长和方向值,则根据极坐标法计算待丁点坐 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 IfFoundSid(eD(j),i,dblS)AndFoundDir1(eD(j),i,dir1)ThenbF=False Fork=Si(eD(j))ToSi(eD(j))+Ni(eD(j))-1IfeD(k) dir2=Dir(k):bF=True dblA=dir1-dir2:IfdblA<0ThendblA=dblA+2*PI "调用极坐标方法求点的坐标 PolarPositioningX0(eD(k)),Y0(eD(k)),X0(eD(j)),Y0(eD(j)),dblS,dblA,X0(i),Y0(i) ExitForEndIfNextk IfbFThenExitForEndIfEndIfNextjNexti txtShow.Text=txtShow.Text&"按全边角网计算近似坐标(m):"&vbCrLfOpenApp.Path&"\\按全边角网计算近似坐标.txt"ForOutputAs#1Print#1,"按全边角网计算近似坐标(m):"Fori=nn+1Totn Print#1,Pname(i),Format(X0(i),"0.0000"),Format(Y0(i),"0.0000") txtShow.Text=txtShow.Text&str(Pname(i))&""&Format(X0(i),"0.0000")&","&Format(Y0(i),"0.0000")&vbCrLfNextiClose#1EndIf Screen.MousePointer=0EndSub "搜索已知起点和终点的边 PublicFunctionFoundSid(beNode%,enNode%,dblS#)AsBooleanDimk%"循环变量FoundSid=FalseFork=1ToNe If(bE(k)=beNodeAndeE(k)=enNode)Or(bE(k)=enNodeAndeE(k)=beNode)Then dblS=s(k) FoundSid=TrueExitFunction 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 EndIfNextkEndFunction "搜索已知起点和终点的起始方向值 PublicFunctionFoundDir1(beNode%,enNode%,dblDir#)AsBooleanDimk%"循环变量FoundDir1=False Fork=Si(beNode)ToSi(beNode)+Ni(beNode)-1IfeD(k)=enNodeThendblDir=Dir(k)FoundDir1=TrueExitFunctionEndIfNextkEndFunction "搜索已知起点和终点的终止方向值 PublicFunctionFoundDir2(beNode%,enNode%,dblDir#)AsBooleanDimk%"循环变量FoundDir2=False Fork=Si(beNode)ToSi(beNode)+Ni(beNode)-1IfeD(k) "输入观测数据 PrivateSubmnuInput_Click()Screen.MousePointer=13 CDg1.Filter="TextFiles(*.TXT)|*.txt"CDg1.Action=1 strFileName=CDg1.FileNameIfstrFileName=""ThenExitSub Dimi%,j%"循环变量DimstrT1$,strT2$,strT3$"临时字符串 DimErr1%,Err2%,Err3%,Err4%"错误号,分别表示找不到起点、终点编号和起末点相同的错误 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 txtShow.Text=txtShow.Text&"数据文件:"&vbCrLfOpenstrFileNameForInputAs#1 Input#1,Net"读入网形参数txtShow.Text=txtShow.Text&"Net="&str(Net)&vbCrLf Input#1,nn,un"读入点数tn=nn+un ReDimPname(tn),X0(tn),Y0(tn),x(tn),Y(tn)"声明点名、初始坐标数组和坐标平差值大小 txtShow.Text=txtShow.Text&"已知点"&str(nn)&"个,未知点"&str(un)&"个"&vbCrLf Fori=1Totn"读入各点名Input#1,Pname(i) txtShow.Text=txtShow.Text&"Pname("&i&")="&Pname(i)&","Nexti txtShow.Text=txtShow.Text&vbCrLf Fori=1Tonn"读入已知点坐标Input#1,X0(i),Y0(i)"去掉带号和500公里 N500=Val(Left(Trim(str(Y0(i))),2))"得到带号N500=N500*10+5 Y0(i)=Y0(i)-N500*100000"给Y坐标去掉带号和500Km txtShow.Text=txtShow.Text&"x0("&i&")="&str(X0(i))&","&"y0("&i&")="&str(Y0(i))&vbCrLfNexti Input#1,Ne,Nd"读入边长、角度观测值、方位角观测值的个数 txtShow.Text=txtShow.Text&"边长观测值"&str(Ne)&"个,角度观测值"&str(Nd)&"个。"&vbCrLf IfNe>0Then"如果有边长观测值,那么读入边长观测值 Input#1,mM,pP"输入边长精度:固定误差和比例误差txtShow.Text=txtShow.Text&"边长固定误差"&Format(mM,"0.00")&"mm,比例误差"&str(pP)&"ppm。"&vbCrLf ReDimbE(Ne),eE(Ne),s(Ne)"声明边数组大小Fori=1ToNe"输入边长有关信息Input#1,strT1,strT2,s(i) Err1=ChkData(strT1,bE(i))"检查起点并计算起点序号Err2=ChkData(strT2,eE(i))"检查终点并计算终点序号 txtShow=txtShow&"be("&i&")="&Pname(bE(i))&","&"eE("&i&")="&Pname(eE(i))&","&"s("&i&")="&str(s(i))&","&vbCrLfNexti 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 "读入的边长数据写入文件,并做检查 OpenApp.Path&"\\边长观测值数据.txt"ForOutputAs#2Print#2,"边长观测值:"Print#2,"mm="&mMPrint#2,"pp="&pPFori=1ToNe Print#2,"bE("&i&")=";Pname(bE(i));",eE("&i&")=";Pname(eE(i));",s("&i&")=";s(i)NextiClose#2 "检查边的起点与终点是否相同Err3=0 Fori=1ToNe IfbE(i)=eE(i)ThenErr3=1 OpenApp.Path&"\\err.log"ForOutputAs#2 Print#2,"s("&i&")","bE("&i&")="&Pname(bE(i)),"eE("&i&")="&Pname(eE(i)) Close#2EndIfNexti IfErr1+Err2+Err30ThenMsgBox"边长输入错误",1,"出错"EndIf IfNd>0Then"如果有方向观测值,那么读入方向观测值 Dimii%,ik%"辅助循环变量Input#1,mD"读入方向中误差txtShow.Text=txtShow.Text&"方向中误差:"&str(mD)&vbCrLf ReDimbD(1ToNd),eD(1ToNd),Dir(Nd)"声明方向数组大小 ReDimSi(Nd),Ni(Nd)"声明测站测回数数组的大小ReDimbD0(Nd),eD0(Nd),Dir0(Nd)"声明辅助方向数组大小Fori=1ToNd Input#1,strT1,strT2,Dir(i) Err1=ChkData(strT1,bD(i))"检查起点并计算起点序号Err2=ChkData(strT2,eD(i))"检查终点并计算终点序号 txtShow=txtShow&"bD("&i&")="&Pname(bD(i))&";eD("&i&")="&Pname(eD(i))&";dir("&i&")="&Dir(i)&vbCrLfNexti "读入的方向数据写入文件并检查 OpenApp.Path&"\\方向观测值数据.txt"ForOutputAs#2Print#2,"方向观测值中误差md="&mD 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 Fori=1ToNd bD0(i)=bD(i):eD0(i)=eD(i):Dir0(i)=Dir(i):Dir(i)=DoToHu(Dir(i))Nexti Err3=0 Fori=1ToNd IfbD0(i)=eD0(i)ThenErr3=1 OpenApp.Path&"\\err.log"ForOutputAs#3 Print#3,"dir("&i&")","bD("&i&")="&Pname(bD0(i)),"eD("&i&")="&Pname(eD0(i)) Close#3EndIfNexti IfErr1+Err2+Err30ThenMsgBox"方向输入错误",1,"输入出错""统计每个测站的方向数ik=1:Si(1)=1Fori=1Totnii=0 Forj=1ToNd IfbD0(j)=iThenii=ii+1 bD(ik)=bD0(j)eD(ik)=eD0(j) Dir(ik)=DoToHu(Dir0(j))ik=ik+1EndIfNextjNi(i)=ii Si(i+1)=Si(i)+Ni(i)Nexti Fori=1ToNd Print#2,"bD("&i&")="&bD(i)Print#2,"eD("&i&")="&eD(i) Print#2,"dir("&i&")="&Format(Dir0(i),"0.00000") Print#2,"dir("&i&")="&Format(DoToHu(Dir0(i)),"0.00000")NextiClose#2EndIf IfNet=1OrNet=2Then"读取近似坐标的计算路线Fori=1Toun Input#1,aa(i),bb(i),cc(i) Err1=ChkData(strT1,aa(i))"检查起点并计算起点序号 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 Err2=ChkData(strT2,bb(i))"检查中点并计算终点序号Err3=ChkData(strT3,cc(i))"检查终点并计算终点序号Nexti OpenApp.Path&"\\近似坐标计算路线.txt"ForOutputAs#2Print#1,"近似坐标计算路线:"Fori=1Toun Print#1,aa(i),bb(i),cc(i)NextiClose#1 Fori=1TounErr4=0 Ifaa(i)=bb(i)Orbb(i)=cc(i)Orcc(i)=aa(i)ThenErr4=1 OpenApp.Path&"\\err.log"ForOutputAs#1 Print#1,"点号相同的计算路线" Print#1,"aa("&i&")","bb("&i&")","cc("&i&")"Close#1EndIf IfErr1+Err2+Err3+Err40ThenMsgBox"计算路线有误",1,"错误"NextiEndIfClose#1 Screen.MousePointer=0EndSub "计算点位误差椭圆 PrivateSubmnuPointElli_Click()Screen.MousePointer=13 Dimi%,ii%"循环变量,辅助记数DimQ1#,Q2#,Q3#,T1#,T2#,T3#,tt#"临时变量 DimMx#,My#,m#"x、y坐标的误差以及总的点位误差DimFai#,Fa#,Fb#"误差椭圆的偏心率、长轴、短轴 OpenApp.Path&"\\点位误差椭圆.txt"ForOutputAs#1Print#1,"点位误差椭圆:"Fori=1Toun Q1=Q(2*i-1,2*i-1):Q2=Q(2*i,2*i):Q3=Q(2*i-1,2*i)T1=Q1-Q2:T2=2*Q3:T3=Q1+Q2Mx=Sqr(Q1):My=Sqr(Q2):m=Sqr(T3) "求Fai:这里是角度值 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 IfAbs(T1)<1E-16Then IfQ3>=0ThenFai=90ElseFai=-90Else Fai=Atn(T2/T1)*57.2958EndIf IfT1>=0AndT2>=0ThenFai=Fai/2Else IfT1>=0AndT2测绘程序编制实习报告 IfiMsg=vbCancelThenCancel=TrueEndIfEndSub "保存计算结果 PrivateSubmnuSave_Click()DimiMsg%reSave: CDg1.FileName="":CDg1.Filter="TextFiles(*.TXT)|*.txt"CDg1.Action=2 strFileName=CDg1.FileName IfstrFileName=""Then iMsg=MsgBox("请选择文件名!",vbYesNoCancel,"注意!")IfiMsg=vbYesThenGoToreSave:Else txtShow.Text=""ExitSubEndIfEndIf OpenstrFileNameForOutputAs#1Print#1,txtShow.TextClose#1 txtShow.Text=""EndSub "平差计算 PrivateSubmnuAdjust_Click()Screen.MousePointer=13 "列立误差方程=================================================================================== DimstrRAsString,S3$"用于显示内容的字符串Dimi%,j%,k%"循环变量Dimii%,jj%,kk%"辅助记数变量 DimdX#,dY#,ss#,cosa#,sinA#"列边长误差方程所需中间变量DimZ0#,Z1#,a0#"列方向误差方程所需中间变量Dimai#,bi#,P3(300)AsSingle"一些辅助变量和数组Dimk1%,k2%,pPp(300)AsInteger"一些辅助变量和数组 IfNe>0Then"按边长计算方程系数 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 strR="边长误差方程:"&vbCrLfFori=1ToNe dX=X0(eE(i))-X0(bE(i)):dY=Y0(eE(i))-Y0(bE(i)) ss=Sqr(dX^2+dY^2):cosa=dX/ss:sinA=dY/ss "系数阵及常数项 Pa(i,1)=2*(bE(i)-nn)-1:Pa(i,2)=-cosa:Pa(i,3)=Pa(i,1)+1 Pa(i,4)=-sinA:Pa(i,5)=2*(eE(i)-nn)-1:Pa(i,6)=cosa Pa(i,7)=Pa(i,5)+1:Pa(i,8)=sinA:Pa(i,9)=100*(ss-s(i))"权 qL(i)=mM^2+(ss*pP*0.0001)^2 S3="V("&i&")="&Format(Pa(i,2),"0.000")&"X("&Pname(bE(i))S3=S3&")+"&Format(Pa(i,4),"0.000")&"Y("&Pname(bE(i))&")+"S3=S3&Format(Pa(i,6),"0.000")&"X("&Pname(eE(i))&")+" S3=S3&Format(Pa(i,8),"0.000")&"Y("&Pname(eE(i))&")"&"+"&Format(Pa(i,9),"0.00")&","Forj=1ToLen(S3) IfMid(S3,j,1)="+"AndMid(S3,j+1,1)="-"ThenS3=Left$(S3,j-1)&Right(S3,Len(S3)-j)Nextj strR=strR&S3&"权为:"&Format(qL(i),"0.000000")&vbCrLf&vbCrLfNextiEndIf IfNd>0Then"按方向计算方程系数Fori=1Totnjj=5 Z0=0"统计虚拟方程的常数项Forj=Si(i)ToSi(i)+Ni(i)-1 a0=DirectAB(X0(eD(j)),Y0(eD(j)),X0(bD(j)),Y0(bD(j)))Z1=a0-Dir(j) IfZ1<0ThenZ1=Z1+2*PIZ0=Z0+Z1Nextj Z0=Z0/Ni(i) k2=1P3(i)=0 strR=strR&vbCrLf&"方向误差方程:"&vbCrLfForj=Si(i)ToSi(i)+Ni(i)-1 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 dX=X0(eD(j))-X0(bD(j)):dY=Y0(eD(j))-Y0(bD(j)) a0=DirectAB(X0(eD(j)),Y0(eD(j)),X0(bD(j)),Y0(bD(j))) ss=Sqr((X0(eD(j))-X0(bD(j)))^2+(Y0(eD(j))-Y0(bD(j)))^2)ai=dY/(ss^2)*RU/100bi=-dX/(ss^2)*RU/100 ii=Ne+j Pa(ii,1)=2*(bD(j)-nn)-1:Pa(ii,2)=aiPa(ii,3)=Pa(ii,1)+1:Pa(ii,4)=biPa(ii,5)=2*(eD(j)-nn)-1:Pa(ii,6)=-aiPa(ii,7)=Pa(ii,5)+1:Pa(ii,8)=-biqL(ii)=mD^2 ss=Dir(j)+Z0:Ifss>=2*PIThenss=ss-2*PI Pa(ii,9)=(a0-ss)*RU Pa3(i,jj)=Pa(ii,5):Pa3(i,jj+1)=Pa(ii,6)/qL(ii) Pa3(i,jj+2)=Pa(ii,7):Pa3(i,jj+3)=Pa(ii,8)/qL(ii) Pa3(i,2)=Pa3(i,2)+Pa(ii,2)/qL(ii):Pa3(i,4)=Pa3(i,4)+Pa(ii,4)/qL(ii) P3(i)=P3(i)+Pa(ii,9)/qL(ii) jj=jj+4 S3=vbCrLf&"V("&ii&")=-"&Format(Z0,"0.000")&"+"&Format(Pa(ii,2),"0.000")&"X("&Pname(bD(j))&")+" S3=S3&Format(Pa(ii,4),"0.000")&"Y("&Pname(bD(j))&")+"&Format(Pa(ii,6),"0.000")&"X("&Pname(eD(j))&")+" S3=S3&Format(Pa(ii,8),"0.000")&"Y("&Pname(eD(j))&")"&"+"&Format(Pa(ii,9),"0.000") S3=S3&",权为:"&Format(qL(ii),"0.000000")&vbCrLfFork=1ToLen(S3) IfMid(S3,k,1)="+"AndMid(S3,k+1,1)="-"ThenS3=Left$(S3,k-1)&Right(S3,Len(S3)-k)Nextk strR=strR&S3pPp(k2)=eD(j)k2=k2+1Nextj 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 "列虚拟误差方程k2=k2-1 Pa3(i,1)=Pa(ii,1):Pa3(i,3)=Pa(ii,3):qLS(i)=-Ni(i)/(mD^2) "显示虚拟误差方程 strR=strR&"虚拟误差方程(测站号"&Pname(i)&"):"&vbCrLf S3="V("&Pname(i)&")="&Format(Pa3(i,2),"0.000")&"X("&Pname(i)&")+"&Format(Pa3(i,4),"0.000")&"Y("&Pname(i)&")+"Fork=6TojjStep4 S3=S3&Format(Pa3(i,k),"0.000")&"X("&Pname(pPp((k-2)\\4))&")+" S3=S3&Format(Pa3(i,4),"0.000")&"Y("&Pname(pPp((k-2)\\4))&")+" Nextk S3=S3&Format(P3(i),"0.000")Fork=1ToLen(S3) IfMid(S3,k,1)="+"AndMid(S3,k+1,1)="-"ThenS3=Left$(S3,k-1)&Right(S3,Len(S3)-k)Nextk strR=strR&S3&",权为:"&Format(qL(i),"0.000000")&vbCrLfNextiEndIf OpenApp.Path&"\\误差方程.txt"ForOutputAs#1Print#1,strRClose#1 txtShow.Text=txtShow.Text&vbCrLf&strR&vbCrLf "解算法方程:由系数矩阵Pa、Pa3,常数向量qL、qLS,求解============================ Dimm%,n%,st%"误差方程总数,未知数总数,定向角参数个数 DimPvv#,sigma#(100)"用于统计单位权中误差的误差累计量DimdetS,detDir"边长改正数、方向改正数 Dimt#(800,800),R#(100,100),c#(100,100)"临时的数组,辅助进行平差解算 "形成法方程 m=Ne+Nd"误差方程总数Fori=1TomForj=1To4 jj=Int(Pa(i,2*j-1))Ifjj>0Then W(jj)=W(jj)+Pa(i,2*j)*Pa(i,9)/qL(i)Fork=1To4 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 kk=Int(Pa(i,2*k-1)) Ifkk>0Andjj测绘程序编制实习报告 Fori=1Ton Forj=i+1TonR(i,j)=0 Fork=iToj-1 R(i,j)=R(i,j)-R(i,k)*t(k,j)/t(j,j)NextkNextjNexti Fori=1TonForj=iTon Fork=jTon Q(i,j)=t(k,k)*R(i,k)*R(j,k)+Q(i,j)Nextk Q(j,i)=Q(i,j)NextjNexti "求改正数Fori=1TonForj=1Ton sigma(i)=sigma(i)-Q(i,j)*W(j)NextjNexti"改化坐标 Fori=nn+1Totn x(i)=X0(i)+sigma((i-nn)*2-1)/100Y(i)=Y0(i)+sigma((i-nn)*2)/100Nexti "求单位权中误差Fori=1Ton Pvv=Pvv+sigma(i)*W(i)Nexti Fori=1Tom Pvv=Pvv+Pa(i,9)*Pa(i,9)/qL(i)Nexti uW0=Sqr(Pvv/(m-n-st)) "显示计算结果 txtShow.Text=txtShow.Text&vbCrLf OpenApp.Path&"\\平差结果.txt"ForOutputAs#1Print#1,"坐标计算结果(m):" Print#1,"点号原X坐标X坐标平差值Y坐标平差值Vy" 测绘C101蒲轩106684习题7.17 Vx原Y坐标测绘程序编制实习报告 txtShow.Text=txtShow.Text&"坐标计算结果(m):"&vbCrLf txtShow=txtShow&"点号原X坐标X坐标平差值Vx原Y坐标Y坐标平差值Vy"&vbCrLfFori=nn+1Totn "给Y坐标加上带号和500KmY(i)=Y(i)+N500*100000Y0(i)=Y0(i)+N500*100000 Print#1,Pname(i),Format(x(i),"0.0000"),Format(Y(i),"0.0000") txtShow=txtShow&Pname(i)&""&Format(X0(i),"0.0000")&""&Format(x(i),"0.0000")&""&Format(X0(i)-x(i),"0.0000") txtShow=txtShow&""&Format(Y0(i),"0.0000")&""&Format(Y(i),"0.0000")&""&Format(Y0(i)-Y(i),"0.0000")&vbCrLfNexti Print#1,"σ0="&Format(uW0,"0.00");"厘米" txtShow.Text=txtShow.Text&"σ0="&Format(uW0,"0.00")&"厘米"&vbCrLfClose#1 Screen.MousePointer=0EndSub "由方向值求夹角值:夹角的三个点,角顶点在中间,返回夹角值;参数PublicFunctionGetBeta(i1%,i2%,i3%,k%)AsDoubleDimk1%,k2%,dir1#,dir2#,i%k=0:k1=0:k2=0 Fori=Si(i2)ToSi(i2)+Ni(i2)-1IfeD(i)=i1Thenk1=1 dir1=Dir(i)EndIf IfeD(i)=i3Thenk2=1 dir2=Dir(i)EndIfNexti Ifk1=1Andk2=1Thenk=1 GetBeta=dir2-dir1 IfGetBeta<0ThenGetBeta=GetBeta+2*PIIfGetBeta>PIThenGetBeta=2*PI-GetBetaEndIfEndFunction PrivateSubmnuReturn_Click() 测绘C101蒲轩106684习题7.1测绘程序编制实习报告 frmMain.Visible=FalseForm1.Visible=TrueEndSub 测绘C101蒲轩106684习题7.126 友情提示:本文中关于《平面和高程控制测量实训总结》给出的范例仅供您参考拓展思维使用,平面和高程控制测量实训总结:该篇文章建议您自主创作。 来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。
《平面和高程控制测量实训总结》由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
链接地址:http://www.bsmz.net/gongwen/446141.html