第五章水准网程序设计(共14页).doc

上传人:飞****2 文档编号:14997042 上传时间:2022-05-10 格式:DOC 页数:14 大小:217.50KB
返回 下载 相关 举报
第五章水准网程序设计(共14页).doc_第1页
第1页 / 共14页
第五章水准网程序设计(共14页).doc_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《第五章水准网程序设计(共14页).doc》由会员分享,可在线阅读,更多相关《第五章水准网程序设计(共14页).doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上第五章 水准网程序设计5.1 概 述水准网是为了确定地面点的高程而布设的控制网,网中的观测值是高程控制点之间的高差。为了统一全国的高程系统,我国采用黄海平均海水面作为全国高程系统的基准面,在该面上的任一点,其高程为零。水准网中的任一点高程以及点与点之间的高差应属于正常高系统。但是,水准测量中水准仪逐站测量并累加得到的原始高差并非正常高差,对于高精度的水准网,应在原始数据基础上添加尺长改正、正常水准网面不平行、球气差改正等系统改正,才能得到正常高差,受篇幅所限,本章不讨论观测值的归算问题,本章提到的观测值均假定是已经归算后的正常高差观测值。由于观测值存在误差,实际工作中

2、需要若干已知点作为平差的基准控制点。水准网平差的目的就是求解各观测值的最佳估值及评定未知量的精度。本章开始,我们将开始接触到测量数据处理程序的设计与开发。测量数据因其数据量大、繁杂等特殊性,往往需要频繁对矩阵进行处理计算。然而在MATLAB软件中,矩阵的计算变得格外简单,这为广大测绘工作者提供了实用性强、简单方便的数据处理平台。平差程序就是将平差计算过程程序化,综合考虑,选择参数平差模型作为水准网平差的主要模型。测量程序设计一般包含程序功能设计、平差模型选择、算法选择等内容。在本章的结构的组织上,先对水准原理进行简要分析,在此基础上按不同功能模块设计函数,最后对程序进行分析验证。5.2 水准路

3、线处理程序设计5.2.1 水准网平差函数类设计1.类设计Main %函数主体程序calculateHO()%计算近似高程ca_ATPA() %计算法方程系数A,权阵GP,常数项GLca_V() %计算高差改正数Printlevledata() %输出结果2.函数说明具体各个成员变量的含义在后面程序中会有注释,在此对主函数main做简要强调。主函数main中包括数据的读取、检查数据格式、提取相关观测值、各类成员函数和最小二平差。是本程序运行的主要M文件。5.2.2 原始数据文件格式设计水准网平差所需的数据需要从txt文本中提取,本节主要介绍原始数据文件的内容与格式,需要说明的是,原始数据文件的设

4、计并没有统一的、严格的标准,在方便程序设计的基础下,程序设计者可以自由设计数据文件的格式。我们将网的数据分为三类:网的概况信息、已知数据、观测数据。网的概况信息包括总点数、已知点点数、观测者总数、验前单位权中误差。已知数据包括已知点名、已知高程值。观测数据包括高差起点点名、高差终点点名、观测值高差值、线路长度。下面结合实例说明原始文件的具体数据格式 图5-2-1为典型的水准网 表5-2-1 已知点数据 点名高程/m A5.160 B6.016 图5-1 水准网示意图表5-2-2 观测高差No.起点终点h/mS/kmNo.起点终点h/mS/km1AP11.3591.15P1P20.6572.42

5、AP22.0091.76P1P30.2381.43BP10.3632.37P3B-0.5952.64BP21.0122.7利用以上数据进行水准网平差,数据文件的内容如下:7 5 2 0.001A1 B1 P1 P2 P3A1 5.016B1 6.016A1 P1 1.359 1.1A1 P2 2.009 1.7B1 P1 0.363 2.3B1 P2 1.012 2.7P1 P2 0.657 2.4P1 P3 0.238 1.4P3 B1 -0.595 2.6格式说明:(1)第一行为网的概况信息:观测值总数、总点数、已知点总数、验前单位权中误差。(2)第二行是所有点点名 依次书写。(3)第三行

6、是对应已知点点名、高程(单位为m),依次往下写、列出所有一直点名和高程。(4)接下来是观测高差:高差起始点名、高差终点点名、高差观测子和高差线路长度。网中点名需要字母和数字结合,否则点名读不出来,点名之间空格;实际平差时,水准网规模和数据可能会不同,但是只要按照上面的格式和顺序输入相关数据即可用本章的程序。5.2.2 数据的存储1 点数据的存储平差程序用到的数组中,点名、高程值、高程改正数等数组与高程点名一一对应,这点数据称为点数据。点数据数组的总长度为总点数。高程值用数组Height保存,高差改正数用数据dX存放,近似值存放在数组caheight中。点名用数组pname数组存放。pname数

7、组不仅存放数组名,同时也可看做点名地址数组。点数据数组存放顺序必须保持严格的一致,例如某点点名地址存在pname数组中的第3单元,即pname(3)中,该点的高程值也就存放在Height(3)中,高程改正数也存放在dX(3)中。当点数据存放一致时,可以更快捷的进行点数据存储,更利于程序设计。2 观测数据的存储观测数据包括高差观测值、高差起始点的点名、高差的权、高差的改正数,它们与观测值一一对应,数组长度都等于总点数。高差起点点名和终点点名在程序中的作用是缺点观测值的起始点号和终点点号,有了点号才能访问点数据数组,进行相应的计算。利用函数strcmp将点名和点号一一对应,通过点号可以得到点名,当

8、然也能通过点名得到点号,高差的起始点点号和终点点号分别用数组startp,endp来保存。个观测数据数组的存放顺序也必须是一致,即L(i)、P(i)、V(i)、startp(i)、endp(i)均对应于同一个观测量。5.2.3 近似高程计算1 近似高程值计算思路第一步,设置未知点标志。各点的高程值用数组Height保存,近似值高程计算之前,由于正常的高程值不可能小于-9999.9,将Height数组中未知点高程赋值为-9999.9,根据高程数组中的值是否小于-9999.0判断某点是否需要计算近似高程,当该点近似高程计算出来之后就会被取代。第二步,计算高程值。近似高程计算的基本思路是,遍历观测值

9、,找到每一个观测值起点号、终点号,根据点号从Height数组中提取起点和终点的高程值,当高差的一端是高程已知点,另一端是未知点时,就由已知点高程和观测高差算出未知点高程,并将计算结果赋值给高程数组,如果两端都是未知点,就跳到下一循环。在遍历观测值时,排在前面的观测值总是最先用于高程近似值计算,当观测值的排序不同时,近似高程计算用到的观测值也不同,计算结果也不同。有时候一次遍历观测值可能还有部分点的高程值仍未计算出来,还需要再次遍历观测值,直至算出所有高程值为止。2 函数文件calculateHO()代码function y=calculateHO(a,b,c,d,e,f,g,h)%计算近似高程

10、%caheight=calculateHO(m_Knumber,m_Pnumber,m_Lnumber, height,startP,endP,pname,L);jj=0;for i=(a+1):b d(1,i)=-9999.9;%未知点的初始高程为-9999.9endfor i=1:(b-a)%循环的次数不超过(m_Pnumber-m_Knumber) for j=1:c%按照观测组进行循环 K1=e(j);%起点点号 K2=f(j);%终点点号 if d(1,K1)-9999.0 & d(1,K2)-9999.0%起点未知,终点已知 d(1,K2)=d(1,K1)+h(1,j); jj=j

11、j+1; elseif d(1,K1)-9999.0%起点已知,终点未知 d(1,K1)=d(1,K2)-h(1,j); jj=jj+1; end end y=d; if jj=(b-a) break end if i(b-a)%生成产生错误的txt fid=fopen(resultfid.txt,a+); fprintf(fid,nn 下列点无法计算出概略高程:n); for i=1:b if d(i)h & jh A(k,i)=-1; A(k,j)=1; end if ih A(k,j)=1; end if ih & j=h A(k,i)=-1; endendx=A(:,(h+1):a);

12、%除去已知点的系数,使其成为满秩矩阵y=P;z=L;5.2.3 残差计算残差也叫观测值的平差改正数,在参数平差中观测值的平差值可以直接用参数平差值计算出来,所以计算残差的目的不是用来改正观测值,而是主要用来进行精度估计。参加计算由M文件ca_V完成,计算结果存在数据V中,并返回pvv值(用于计算单位权中误差)。1 算法以观测值序号为循环变量,观测值循环,由式(5-2-1)计算各观测值的残差,第次循环中所要进行的工作包括:(1) 获得高差的起点号和终点号;(2) 获得起点和终点的高程值和(3) 计算残差,存在中;(4) 计算。2 ca_V函数源代码functionx y=ca_V(a,b,c,d

13、,e,f)%计算高差改正数%V pvv=ca_V(m_Lnumber,startP,endP,Height,L,P)pvv=0.0;for i=1:a k1=b(i); k2=c(i); V(i)=d(1,k2)-d(1,k1)-e(1,i);endx=V;y=V.*V*f;5.2.3 精度估计与平差结果输出精度估计与平差结果输出由函数printlevledata()完成。该函数的平差结果写入结果文件。输出内容包括高程点名,高程平差值及其中误差、高差端点点名、高差平差值、高差改正数、高差平差值的中误差。M文件printlevledata的源代码如下:function printlevledat

14、a(pathName,Filename,m_Lnumber,m_Pnumber,m_Knumber,m_Sigma,pname,height,startP,endP,L,V,P,pvv,m_mu,caheight,dx,Height,qii,Q) %输出结果Filename pathName = uiputfile(*.txt,saving file as);if isequal(Filename,0) | isequal(pathName,0),return;endstr=pathName Filename;%依次输入结果到txt文件fid1=fopen(str,wt);fprintf(fi

15、d1, Total Observed:%d Total points:%d Total known points:%d n,m_Lnumber,m_Pnumber,m_Knumber);fprintf(fid1,n Priori unit weight weight mean error :%8.3f,m_Sigma);fprintf(fid1,nn Known Height:n);for i=1:m_Pnumber fprintf(fid1,n%5d%8s ,i,pnamei); fprintf(fid1, %8.4f,height(i);endfprintf(fid1,nnThe diff

16、erence of Observations n);for i=1:m_Lnumber fprintf(fid1,n%5d%8s%8s ,i,pnamestartP(i),pnameendP(i); fprintf(fid1, %8.4f %8.4f ,L(i),1.0/P(i);endfprintf(fid1,nn Resluts of Least Squares:n pvv=%8.9f,pvv);fprintf(fid1,n u=%1f,m_mu);fprintf(fid1,nnn = = = = The Height Adjustmengt and Precision = = = = n

17、);fprintf(fid1,n Pname ApproHeight V AdjustHeight RMSEn);for i=1:m_Pnumber fprintf(fid1,n%6s ,pnamei); fprintf(fid1, %10.4f %8.4f %8.4f %8.4f ,caheight(1,i),dx(1,i),Height(1,i),qii(1,i);endfprintf(fid1,nnn = = = =The Observations Adjustmengt and Precision= = = = n);fprintf(fid1,n NO. SPoint EPoint D

18、iffObservations V);fprintf(fid1, AdjustObservations WObservations RMSEn);for i=1:m_Lnumber k1=startP(i); k2=endP(i); ml=0; if k1m_Knumber ml=qii(1,k2); end if k1m_Knumber & k2m_Knumber & k2m_Knumber ml=sqrt(Q(k1-m_Knumber,k1-m_Knumber)+Q(k2-m_Knumber,k2-m_Knumber)-2*Q(k1-m_Knumber,k2-m_Knumber)*m_mu

19、; end fprintf(fid1,n%5d %5s %5s ,i,pnamek1,pnamek2); fprintf(fid1, %8.4f %8.4f %8.4f %8.4f %8.4f,L(1,i),V(1,i),L(1,i)+V(1,i),P(1,i),ml);endfclose(fid1);if exist(str)=2 msgbox( save data successfully);else errordlg(Have not saved data,Failed); return;end5.3 水准网平差算例及分析 要进行最小二乘平差计算,还需要编写一个主函数M文件,进行数据提取

20、,连接上面提到的函数文件,才能完成特定的平差任务。 1 计算步骤(1) 已知点提取处理。(2) 计算近似高程。(3) 计算法方程式。(4) 阶段法方程,最小二乘平差。(5) 计算残差。(6) 最后成果输出,包括高程平差值及其精度、高差平差值及其精度。2 函数源代码%读取起始文件Filename pathName=uigetfile(*.txt,Txt Files|*.txt,choose a File);%打开文件%检查读取文件格式m_Lnumber,m_Pnumber,m_Knumber,m_Sigma,unpnumber,P1,P2,P3,P4,pname=levelcheck(Filen

21、ame,pathName);%提取已知点数据for i=1:m_Knumber pname1i=P1i; point2(i)=str2num(cell2mat(P2(i);end%提取观测值及每个观测值的起终点号,路线长度for i=1:m_Lnumber cpname1i=P1i+m_Knumber; cpname2i=P2i+m_Knumber; point3(i)=P3(i+m_Knumber); point4(i)=P4(i+m_Knumber);end%按已知点点高程按着该点在点名数组中未知,将高程值赋给对应位置height=zeros(1,m_Pnumber);for i=1:m_

22、Knumber c=strmatch(pname1(i),pname); height(c)=point2(i);end%将观测值高差的起点点名转换成数组位置for i=1:m_Lnumber startP(i)=strmatch(cpname1(i),pname);end%将观测值高差的终点点名转换成数组位置for i=1:m_Lnumber endP(i)=strmatch(cpname2(i),pname);end%获取每条线路的高差值及其对应的权for i=1:m_Lnumber L(i)= point3(i); P(i)= point4(i); P(i)=1.0/ P(i);end%

23、计算近似高程caheight=calculateHO(m_Knumber,m_Pnumber,m_Lnumber, height,startP,endP,pname,L);%计算法方程系数A,权阵GP,常数项GLA GP GL=ca_ATPA(m_Pnumber,m_Lnumber,startP,endP,L,P,caheight,m_Knumber);%最小二乘平差dX=inv(A*GP*A)*A*GP*GL;%未知点的改正数dx=zeros(1,m_Pnumber);%所以点的改正数为定义为0%将改正数为零的未知点的改正数替换成计算值for i=(m_Knumber+1):m_Pnumbe

24、r dx(1,i)=dX(i-m_Knumber,1);end%计算未知点的最佳估值for i=(m_Knumber+1):m_Pnumber caheight(i)=caheight(i)+dX(i-m_Knumber,1);endHeight=caheight;%计算高差改正数V pvv=ca_V(m_Lnumber,startP,endP,Height,L,P);%计算验后单位权中误差m_mu=sqrt(pvv/(m_Lnumber-(m_Pnumber-m_Knumber);%计算未知点的点位中误差 Q=inv(A*GP*A); qii=zeros(1,m_Pnumber);%所有点的

25、点位中误差定义为零 for i=(1+m_Knumber):m_Pnumber qii(1,i)=sqrt(Q(i-m_Knumber,i-m_Knumber)*m_mu; end %输出结果printlevledata(pathName,Filename,m_Lnumber,m_Pnumber,m_Knumber,m_Sigma,pname,height,startP,endP,L,V,P,pvv,m_mu,caheight,dx,Height,qii,Q); 3 最小二乘算例水准网如图5-3-1所示,共有7个高程点,其中、为已知点,、为未知点,共观测了6段高差,已知高程和观测高差分别见表5

26、-3-1和表5-3-2,观测值的每千米高差中误差为。试以此数据进行最小二乘平差。 表5-3-1 已知点数据 点名高程/m A35.418 B45.712C25.270D24.678 图5-3-1表5-3-2 观测高差No.起点终点h/mS/kmNo.起点终点h/mS/km1AE8.2284.04FP27.4774.02EB2.0604.05GP212.4172.03EF1.5152.06GP313.0002.0过程(1) 准备数据文件7 5 2 0.001A1 B1 P1 P2 P3A1 5.016B1 6.016A1 P1 1.359 1.1A1 P2 2.009 1.7B1 P1 0.36

27、3 2.3B1 P2 1.012 2.7P1 P2 0.657 2.4P1 P3 0.238 1.4P3 B1 -0.595 2.6 (2) 算例函数Filename pathName=uigetfile(*.txt,Txt Files|*.txt,choose a File);m_Lnumber,m_Pnumber,m_Knumber,m_Sigma,unpnumber,P1,P2,P3,P4,pname=levelcheck(Filename,pathName);for i=1:m_Knumber pname1i=P1i; point2(i)=str2num(cell2mat(P2(i);

28、endfor i=1:m_Lnumber cpname1i=P1i+m_Knumber; cpname2i=P2i+m_Knumber; point3(i)=P3(i+m_Knumber); point4(i)=P4(i+m_Knumber);endheight=zeros(1,m_Pnumber);for i=1:m_Knumber c=strmatch(pname1(i),pname); height(c)=point2(i);endfor i=1:m_Lnumber startP(i)=strmatch(cpname1(i),pname);endfor i=1:m_Lnumber end

29、P(i)=strmatch(cpname2(i),pname);endfor i=1:m_Lnumber L(i)= point3(i); P(i)= point4(i); P(i)=1.0/ P(i);endcaheight=calculateHO(m_Knumber,m_Pnumber,m_Lnumber, height,startP,endP,pname,L);A GP GL=ca_ATPA(m_Pnumber,m_Lnumber,startP,endP,L,P,caheight,m_Knumber);dX=inv(A*GP*A)*A*GP*GL;dx=zeros(1,m_Pnumber

30、);for i=(m_Knumber+1):m_Pnumber dx(1,i)=dX(i-m_Knumber,1);endfor i=(m_Knumber+1):m_Pnumber caheight(i)=caheight(i)+dX(i-m_Knumber,1);endHeight=caheight;V pvv=ca_V(m_Lnumber,startP,endP,Height,L,P);m_mu=sqrt(pvv/(m_Lnumber-(m_Pnumber-m_Knumber); Q=inv(A*GP*A); qii=zeros(1,m_Pnumber); for i=(1+m_Knumb

31、er):m_Pnumber qii(1,i)=sqrt(Q(i-m_Knumber,i-m_Knumber)*m_mu; endprintlevledata(pathName,Filename,m_Lnumber,m_Pnumber,m_Knumber,m_Sigma,pname,height,startP,endP,L,V,P,pvv,m_mu,caheight,dx,Height,qii,Q); (3) 计算结果 Total Observed:6 Total points:7 Total known points:4 Priori unit weight weight mean error

32、 : 0.005 Known Height: 1 A1 35.4180 2 B1 45.7120 3 C1 25.2700 4 D1 24.6780 5 E1 0.0000 6 F1 0.0000 7 G1 0.0000The difference of Observations 1 A1 E1 8.2280 4.0000 2 E1 B1 2.0600 4.0000 3 E1 F1 1.5150 2.0000 4 G1 F1 7.4770 4.0000 5 C1 G1 12.4170 2.0000 6 D1 G1 13.0000 2.0000 Resluts of Least Squares:

33、 pvv=0. u=0. = = = = The Height Adjustmengt and Precision = = = = Pname ApproHeight V AdjustHeight RMSE A1 35.4180 0.0000 35.4180 0.0000 B1 45.7120 0.0000 45.7120 0.0000 C1 25.2700 0.0000 25.2700 0.0000 D1 24.6780 0.0000 24.6780 0.0000 E1 43.6480 0.0020 43.6480 0.0037 F1 45.1620 0.0010 45.1620 0.004

34、5 G1 37.6830 -0.0010 37.6830 0.0028 = = = =The Observations Adjustmengt and Precision= = = = NO. SPoint EPoint DiffObservations V AdjustObservations WObservations RMSE 1 A1 E1 8.2280 0.0020 8.2300 0.2500 0.0037 2 E1 B1 2.0600 0.0040 2.0640 0.2500 0.0037 3 E1 F1 1.5150 -0.0010 1.5140 0.5000 0.0037 4

35、G1 F1 7.4770 0.0020 7.4790 0.2500 0.0045 5 C1 G1 12.4170 -0.0040 12.4130 0.5000 0.0028 6 D1 G1 13.0000 0.0050 13.0050 0.5000 0.0028 各项字母含义注释:Total Observed 观测值总数 Total points 总点数 Total known points 已知点数Priori unit weight weight mean error 验前单位权中误差 Known Height 已知高程 The difference of Observations 观测值高差Pname 点名V改正数WObservations 观测权 Resluts of Least Squares 最小二乘平差结果 ApproHeight 近似高程The Height Adjustmengt and Precision 高程平差值及其精度 AdjustHeigh 高程平差值 RMSE 中误差 The Observations Adjustmengt and Precision 观测平差值及其精度SPoint 起点 EPoint 终点DiffObservations 观测高差AdjustObservations 高差平差值 专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁