推荐Matlab的导线网坐标计算精品.docx
- 文档编号:23534847
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:37
- 大小:423.15KB
推荐Matlab的导线网坐标计算精品.docx
《推荐Matlab的导线网坐标计算精品.docx》由会员分享,可在线阅读,更多相关《推荐Matlab的导线网坐标计算精品.docx(37页珍藏版)》请在冰豆网上搜索。
推荐Matlab的导线网坐标计算精品
东华理工大学长江学院
题目:
基于Matlab的导线网坐标计算
EnglishTitle:
TraverseNetworkCoordinateCalculationBasedOnMatlab
学生姓名:
闫晓天申请学位门类:
工学学士
学号:
09351122
专业:
测绘工程
系别:
测绘工程系
指导老师:
刘波职称:
讲师
二零一三年六月
摘要
导线计算是在所有测量工作中经常遇见的问题之一,同时导线计算的方法也有很多种,本文主要是利用简单易懂的Matlab对附合导线、闭合导线和支导线进行相应的平差计算。
文章首先介绍了附合导线、闭合导线、支导线基本概念和计算方法,其次利用Matlab计算机编程语言对三种导线的计算进行编程实现;最后通过实例验证,本文利用Matlab编写的程序正确,通过输入边长和角度,能够快速的得到各控制点的准确坐标。
关键词:
Matlab;导线计算;精度评价;计算机编程
ABSTRACT
Traversecalculatedinallmeasurementsoftenmetoneoftheproblems,Alsotherearemanykindsoftraversetheway.ThisarticlemainlyistousesimpleMatlabtoconnectingtraverse、closedtraverse、spurtraversetothecorrespondingadjustmentcalculationThearticlefirstintroducestheconnectingtraverse、closedtraverse、spurtraverseisbasicconceptandcalculationmethod.SecondlyusingMatlabputerprogramminglanguagewasrealizedbyprogrammingcalculationofthreetraverse.Atlast,throughexamplevalidation,Inthispaper,usingtheMatlabprogram,rightthroughtheinputvariablelengthandAngle,abletoquicklygettheaccuratecoordinatesofeachcontrolpoint.
Keywords:
Matlab;TraverseCalculated;PrecisionEvaluation;puterProgramming
1.
绪论
导线坐标计算是在所有测量工作中经常遇见的问题之一,同时导线计算的方法也有很多种,主要包括:
Excel办公软件、CASIO计算器、VB编程等,每种方法各有优缺点,本文主要是利用简单易懂的Matlab对附和导线、闭合导线和支导线进行相应的坐标平差计算。
文章首先介绍了附合导线、闭合导线、支导线基本概念和计算方法,其次利用Matlab计算机编程语言对三种导线的计算进行编程实现;最后通过实例验证,本文利用Matlab编写的程序正确,通过输入边长和角度,能够快速的得到各控制点的准确坐标。
1.1导线坐标计算常用的方法比较
(1)Excel办公软件
我们知道导线测量的成果计算虽然有多种方法,但与我们习惯的导线成果计算格式不统一,输入数据不直观,使用起来不习惯,很难推广。
针对这种情况,我们按照常用的导线成果计算本的样式,直接利用excel办公软件。
EXCEL是常用的办公软件,利用其自带的函数,和其强大的数据处理能力,创建一个EXCEL模板,利用预先编辑好的公式,输入外业测量成果后自动进行内业的成果计算。
能够根据输入的外业测量数据自动进行坐标成果正算;反过来,又能根据两点的坐标自动反算出两点之间的距离和方位角,能自动识别测量路线,计算导线间水平角;也能进行简单的条件分析,对一些误输入能自动识别;还能够有效的保护公式和表格,防止误操作的更改,或者蓄意的修改计算结果。
(2)CASIO计算器
CASIO计算器是测量人员在野外作业或矿山井下一线作业时经常使用的便携式计算器,它与一般计算器所不同的是有个自编程序步。
CASIO系列可编程计算器,作为内、外业计算工作的辅助设备。
具有体积小、重量轻、携带方便、多行显示、存贮量大、工作方便等特点,编制好测量程序后,计算器通过程序计算,不需要测量人员进行逐步计算,从而消除了人为输入误差。
而且计算器在计算时小数位数是自身进行取舍,所以它的精度可以得到保证,并且比人工逐步计算要高。
在导线控制测量中,将复杂的平差计算过程编成计算器程序,简化计算过程减轻测量人员的内业计算量。
内业计算时,只需按照提示输入相应观测值便可得到平差成果,并进行必要的精度评定,简单快捷比专业的平差软件更容易掌握。
主要缺点是费时、工作量大、还易出错。
(3)VB编程
采用VB编程进行导线计算,优点是使用方便、直观、计算速度快。
采用计算器计算某一导线,可能需要一两天时间,而采用程序计算可能只需几分钟到十几分钟时间。
目前市场上,可以买到大型严密平差计算程序,但对于许多中小型日常的测量计算,还需要技术人员自己去开发;例如:
碎部测量、支导线测量、面积计算、解析交会等。
1.2基于Matlab的导线计算背景
本文依据Matlab对三种导线计算进行编程设计,主要因为该语言相对简单和直接,它主要有如下特点:
(1)编程效率高
Matlab是一种面向科学与工程计算的高级语言,允许使用数学形式的语言编写程序,且比VB和C等语言更加接近我们书写计算公式的思维方式,用Matlab编写程序犹如在演算纸上排列出公式与求解问题。
因此,Matlab语言也可通俗地称为演算纸式科学算法语言。
由于它编写简单,所以编程效率高,易学易懂。
(2)用户使用方便
Matlab语言是一种解释执行的语言,它灵活、方便,其调试程序手段丰富,调试速度快,需要学习时间少。
人们用任何一种语言编写程序一般都要经过四个步骤:
编辑、编译、链接,以及执行和调试。
各个步骤之间是顺序关系,编程的过程就是在它们之间做瀑布型的循环。
Matlab语言与其他语言相比,较好的解决了上述问题,把编辑、编译、链接和执行融为一体。
它能在同一画面上进行灵活操作,快速排除输入程序中的书写错误、语法错误以至语义错误,从而加快了用户编写、修改和调试程序的速度,可以说在编程和调试过程中它是一种比VB还要简单的语言。
具体的说,Matlab运行时,如直接在命令行输入Matlab语句(命令),包括调M文件的语句,每输入一条语句,就立即对其进行处理,完成编译、链接和运行的全过程。
又如,将Matlab源程序编辑为M文件,由于Matlab磁盘文件也是M文件,所以编辑后的源文件就可以直接运行,而不需要进行编译和链接。
在运行M文件时,如果有错,计算机屏幕上会给出详细的出错信息,用户经修改后再执行,直到正确为止。
所以可以说,MATLAB语言不仅是一种语言,广义上讲是一种该语言的开发系统,即语言调试系统。
(3)扩充能力强,交互性好
高版本的的Matlab语言有丰富的库函数,在进行复杂的数序运算时可以直接调用,而且Matlab的库函数同用户文件在形成上一样,所以用户文件也可作为Matlab的库函数来调用。
因而,用户可以根据自己的需要方便地建立和扩充新的库函数,以便提高Matlab的使用效率和扩充它的功能[1]。
2.导线类型及特点
2.1导线的布设
2.1.1导线的布设形式
导线可被布设为单一导线和导线网。
两条以上导线的汇聚点,称为导线的结点。
单一导线与导线网的区别,在于导线网具有结点,而单一导线则不具有结点。
按照不同情况和要求,单一导线可被布设为附和导线、闭合导线和支导线。
导线网可被布设为自由导线网和附合导线网。
(1)附合导线
如下图1所示,导线起始于一个已知控制点而终止于另一个已知控制点。
已知控制点上可以有一条或几条定向边与之相连接,也可以没有定向与之相连接。
图1附合导线
(2)闭合导线
如图2所示,由一个已知控制点出发,最终又回到这一点,形成一个闭合的多边形。
在闭合导线的已知控制点上至少应该有一条定向边与之相连接。
由于闭合导线是一种可靠性极差的控制网图形,在实际测量工作中应避免单独使用。
图2闭合导线
(3)支导线
如图3所示,从一个已知控制点出发,既不附合于另一个已知控制点,也不闭合于原来的起始控制点。
由于支导线缺乏检核条件,故一般只限于地形测量中的图根导线中采用。
图3支导线
2.2导线的观测
导线的观测包括转折角的观测和导线边的观测以及导线点高程的观测。
2.2.1转折角的观测
转折角的观测一般采用测回法进行。
当导线点上应观测的方向数多于2个时,应采用方向观测法进行。
各测回间应按规定进行水平度盘配置。
各等级导线测量水平角观测的技术要求见表1:
表1各等级导线测量水平角观测的技术要求
在进行国家等级导线转折角观测时,应以奇数测回和偶数测回分别观测导线前进方向的左角和右角;左角和右角分别取中数后,再计算圆周角闭合差
,
值对于三、四等导线应分别不超过±3.5″和±5.0″。
在进行一、二级和三级导线转折角观测时,一般应观测导线前进方向的左角。
对于闭合导线,若按逆时针方向进行观测,则观测的导线角既是闭合多边形的内角,又是导线前进方向的左角。
对于支导线,应分别观测导线前进方向的左角和右角,以增加检核条件。
当观测短边之间的转折角时,测站偏心和目标偏心对转折角的影响将十分明显。
因此,应对所用仪器、觇牌和光学对中器进行严格检校,并且要特仔细进行对中和精确照准。
2.2.2导线边长观测
导线边长可采用电磁波测距仪测量,也可采用全站仪在测取导线角的同时测取导线边的边长。
导线边长应对向观测,以增加检核条件。
电磁波测距仪测量的通常是斜距,还需观测竖直角,用以将倾斜距离改变为水平距离,必要时还应将其归算到椭球面上和高斯平面上。
2.2.3三联脚架法导线观测
三联脚架法通常使用三个既能安置全站仪又能安置带有觇牌的基座和脚架,基座应有通用的光学对中器。
如图4所示,将全站仪安置在测站i的基座中,带有觇牌的反射棱镜安置在后视点i-1和前视点i+1的基座中,进行导线测量。
迁站时,导线点i和i+1的脚架和基座不动,只取下全站仪和带有觇牌的反射棱镜,在导线点i+1上安置全站仪,在导线点i的基座上安置带有觇牌的反射棱镜,并将导线点i-1上的脚架迁至导线点i+2处并予以安置,这样直到测完整条导线为止。
在观测者精心安置仪器的情况下,三联脚架法可以减弱仪器和目标对中误差对测角和测距的影响,从而提高导线的观测精度,减少了坐标传递误差。
i-1ii+1i+2
图4三联脚架法导线观测
在城市或工业区进行导线测量时,可在夜间进行作业,以避免白天作业时行人、车辆的干扰,夜间作业,空气稳定、仪器振动小,并可避免太阳暴晒,从而可提高观测成果的精度。
2.3导线测量的近似平差计算
导线测量的目的是获得各导线点的平面直角坐标计算的起始数据是已知点坐标、已知坐标方位角,观测数据为观测角值和观测边长。
通常情况下,导线平差应进行严密平差,但对于二级及其以下等级的图根导线允许对以单一导线、单结点导线网采用近似平差方法进行计算。
导线近似平差的基本思路是将角度误差和边长误差分别进行平差计算,先进行角度闭合差的分配,在此基础在进行坐标闭合差的分配,通过调整坐标闭合差,以达到角度的剩余误差和边长误差的目的。
在进行导线测量平差计算之前,首先要按照规范要求对外业观测成果进行检查和验算,确保观测成果无误并符合限差要求,然后对边长进行加常数改正、乘常数改正、气象改正和倾斜改正(改正方法见《数字测图原理与方法》第五章),对角度和边长进行归心改正(有偏心观测时),以取消系统误差的影响[2]。
2.3.1附合导线的计算
如下图5为附合导线,其坐标平差计算步骤如下:
图5附合导线
(1)方位角计算
(2-1)
判断
或<0,
以便判断所在相应象限,加上或减去180度,推算出每条导线边的坐标方位角。
(2)由地面实测点的转角依据公式计算其角度闭合差
用
,依次加减,得出最后的
方位角,用计算的方位角
=闭合差值
。
(3)将角度闭合差除以测边数分配到各观测角中
角度闭合差调整中,观测角为左角时反符号平均分配到各观测角中,观测角为右角时,则按闭合差同符号分配到测角,如有小数,按长边少分,短边多分原则。
(4)用调整后的观测角计算方位角
(5)坐标增量计算
(2-2)
(6)测站测出各边的距离,用调整后的方位角进行计算各点计算坐标
(7)计算导线点坐标
闭合差为:
=计算终点X坐标-设计终点X坐标
=计算终点Y坐标-设计终点Y坐标
将闭合边长差按路线边长与总边长的比例反向分配到坐标增量后计算各点坐标。
2.3.2闭合导线的计算
如图6所示为闭合导线,闭合导线的精度评定与具有两个连接角的附和导线精度评定相同,可以采用角度闭合差和导线全长相对闭合差来评定,闭合导线的可靠性较差,在实际测量中避免单独使用。
由于角度观测值存在误差,使得多边形内角和的计算值不等于其理论值,而产生角度闭合差,即
图6闭合导线
(1)角度闭合差计算
(2-3)
,n为实测内角个数
应进行重测,如果
则可进行平差计算。
(2)角度闭合差改正
(反号平均分配)(2-4)
(3)计算改正后的角度
(2-5)
(4)推算方位角
公式为:
(2-6)
判断△x>或<0,△y>或<0以便判断所在相应象限,加上或减去180度,推算出每条导线边的坐标方位角。
(5)计算坐标增量
(2-7)
(6)坐标增量闭合差
(2-8)
(7)坐标增量闭合差的分配
坐标改正数的计算:
(2-9)
计算改正后的坐标增量:
(2-10)
(8)计算坐标
(2-11)
2.3.3支导线的计算
以下图7为例,支导线计算步骤如下:
图7支导线
(1)坐标方位角推算
设直线MA的坐标方位角已知为
,按方位角推算公式:
计算导线边的坐标方位角。
(2)坐标增量的计算
由各边的坐标方位角和边长,按公式
、
,计算坐标增量。
(3)导线点坐标计算
按公式
、
,计算各导线点坐标[3]。
3.基于Matlab的导线计算程序设计
3.1计算程序概述
3.1.1计算程序特点
相对于手工计算,坐标计算程序计算的主要特点是计算速度快、精度高、数据处理自动化,从而把人从繁重的计算工作中解放出来。
从程序设计的角度看,程序设计与平差计算相对独立。
在平差手工计算时,我们总是面对需要计算的具体问题,所以其数据是特定的,计算过程由人实时控制;在计算机程序计算中,在程序设计时数据是抽象的,必须考虑到实际计算中问题的多样性,以及数据计算过程的自动化,所以在程序设计时必须考虑需要处理的所有问题的普遍性和规律性。
另外,相对于手工计算,在程序计算时,选择平差方法的依据不同。
在手工计算时,我们通常希望尽量降低计算工作量。
当必要观测数t大于多余观测数r时,我们可以选择条件平差;当必要观测数t小于多余观测数r时,我们可以选择间接平差,这样,可以降低平差计算量。
然而,在计算机程序计算时,由于计算机计算的快速高效性,我们不是很关心计算量的问题,而把主要精力集中于方法实现的现实性方面,也就是要求该方法具有较强的规律性,便于程序设计的技术实现。
在坐标计算程序设计中,使用间接平差,对于一般控制网,误差方程形式统一、规律性强、便于程序设计;而使用条件平差,误差方程形式多样、规律性差,不利于程序设计。
所以,在本课程中,我们主要使用间接平差方法进行程序设计。
总之,我们在选择数学模型的时候,一定要考虑算法同计算机程序设计的特点相统一。
3.1.2计算程序的基本要求
坐标计算程序设计与其它程序设计相同,应当满足一定的要求:
(1)程序逻辑结构简单,清晰易读,符合结构化程序设计要求,便于扩展;
(2)运算速度快,占用内存小,内外存之间的交换不宜过于频繁;
(3)数学模型及计算方法正确、先进,计算结果精度高;
(4)适应性强,便于移植,充分考虑各种可能形式,尽量满足不同要求与需要。
3.1.3计算程序的设计步骤
(1)结构总体设计;
(2)数据结构设计;
(3)确定软件各组成部分的算法及数据组织;
(4)选定某种表达式来描述各种算法;
(5)程序编写;
(6)程序调试。
3.1.4坐标计算处理过程
(1)数据输入;
(2)角度闭合差计算及分配;
(3)方位角推算;
(4)坐标增量计算;
(5)坐标增量闭合差分配;
(6)坐标计算。
3.2附合导线计算程序
附合导线包括一个连接角的附合导线、两个连接角的附合导线和无连接角的附合导线等,依据本文介绍的附合导线计算方法和基本公式,依据matlab语言对附合导线进行编程,主要的程序代码如下(具体程序代码见附录1):
%观测数据输入
n=input('请输入导线边数');
string1=(char(('请输入第')',a,('条导线边长')'))';
string2=(char(('请输入第')',s,('个转折角')'))';
%起算数据输入
%起算方位角的计算
%角度闭合差计算
fb=fwjAB-fwjCD+sum(jiao1)-n*180;
%各观测角改正后的角度
jiao2=jiao1+(fb/6)*(-1);
%真方位角的计算
fwjz(k)=fwjAB+jiao2(k);
fwjz(k)=fwjz(k-1)+jiao2(k)-180;
%坐标闭合差计算
xz(i)=bian(i)*cosd(fwjz(i));
yz(i)=bian(i)*sind(fwjz(i));
fx=xA+sum(xz)-xC;
fy=yA+sum(yz)-yC;
%坐标闭合差分配
vx(i)=(-1)*fx/sum(bian)*bian(i);
vy(i)=(-1)*fy/sum(bian)*bian(i);
%坐标计算
x
(1)=xA+xz
(1)+vx
(1)
y
(1)=yA+yz
(1)+vy
(1);
x(i)=x(i-1)+xz(i)+vx(i);
y(i)=y(i-1)+yz(i)+vy(i);
3.3闭合导线计算程序
闭合导线就是已知一条边,测量若干个边长和后又闭合到已知边的导线测量方法。
通过计算平差后,可计算得到经过的未知点的平面坐标。
依据本章介绍的闭合导线计算方法和基本公式,依据matlab语言对闭合导线进行编程,主要的程序代码如下(具体程序代码见附录2):
%观测数据的输入
n=input('请输入闭合导线的点数');
string1=(char(('请输入第')',a,('条导线的边长:
')'))';
string2=(char(('请输入第')',b,('个转折角:
')'))';
%起算数据的输入
string3=(char('请输入起始已知方向的起算方位角'));
%角度闭合差的计算
fb=sum(jiao2)-(n-2)*180;
%真方位角计算
fwjz
(1)=fwj2+jiao2
(1)+v
(1)-180;
%坐标闭合差计算
xzq=cosd(fwj2)*bian
(1);
yzq=sind(fwj2)*bian
(1);
xz(i)=cosd(fwjz1(i))*bian(i+1);
yz(i)=sind(fwjz1(i))*bian(i+1);
fx=xzq+sum(xz);
fy=yzq+sum(yz);
fs=sqrt(fx^2+fy^2);
k=fs/sum(bian);
%坐标计算
X
(1)=x+xzq+vx
(1);
Y
(1)=y+yzq+vy
(1);
X(i)=X(i-1)+xz(i-1)+vx(i);
Y(i)=Y(i-1)+yz(i-1)+vy(i);
3.4支导线计算程序
由已知控制点出发,不附合、不闭合于任何已知点的导线。
依据本章介绍的支导线计算方法和基本公式,依据matlab语言对支导线进行编程,主要的程序代码如下(具体程序代码见附录3):
%观测数据输入
n=input('pleasethe待定点个数:
');
s1=char('pleaseinputthe边长ofa:
');
s2=char('pleaseinputthe转折角ofa:
');
jiao2(i)=degree1+minute1/60+second1/3600;
%已知数据输入
%方位角推算
fwj(j)=f0+jiao2(j)-180;
fwj(j)=fwj(j-1)+jiao2(j)-180;
%坐标增量计算
xzl(k)=S(k)*cosd(fwj(k));
yzl(k)=S(k)*sind(fwj(k));
%坐标推算
x(l)=x0+xzl(l);
y(l)=y0+yzl(l);
x(l)=x(l-1)+xzl(l);
y(l)=y(l-1)+yzl(l);
4.三种导线计算实例
4.1附合导线算例
利用现实中获得的一组附合导线数据,输入到所设计的matlab平差程序进行实现,如下图8所示:
图8附合导线
如上图8所示,已知两控制点平面坐标分别为:
B(2507.69,1215.63)、C(2166.72,1757.29),其中坐标方位角
=237°59′30″,各观测角数据如下:
∠1=99°01′00″,∠2=167°45′36″,∠3=123°11′24″,∠4=189°20′36″,∠5=179°59′18″,∠C=129°27′24″,其导线各边长分别为:
S12=225.85mS23=139.03m,S34=172.57m,S45=100.07m,S5C=102.48m.
依据本文程序设计对上述数据进行平差操作,输出如下成果截图:
(1)基于Matlab的附合导线程序输入界面如下图9所示:
图9程序设计界面
(2)结果输出界面如下图10所示:
图10结果输出界面
(3)根据程序输出的平差结果,整理得下表2:
表2具有两个连接角的附合导线计算
上表为相应实例基于Matlab程序设计的输出结果,误差均在限差之内。
4.2闭合导线算例
利用一组由全站仪观测的闭合导线的数据,对matlab平差程序进行实现,如下图11所示:
图11闭合导线
已知1点坐标为(10.00,100.00),S12=50.340,S23=91.515,S34=36.863,S45=51.860,S51=41.999。
α12=0°00′00″。
各观测内角分别为:
∠1=89°58′53″,∠2=91°9′26″,∠3=89°19′25″,∠4=105°37′40″,∠5=163°53′47″。
依据本文程序设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 推荐Matlab的导线网坐标计算 精品 推荐 Matlab 导线 坐标 计算