基于matlab的测量导线描绘_第1页
基于matlab的测量导线描绘_第2页
基于matlab的测量导线描绘_第3页
基于matlab的测量导线描绘_第4页
基于matlab的测量导线描绘_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于matlab的测量导线描绘 作者: 日期:2 测绘学院 学号:2009301610208 夏少波 手机: 基于MATLAB的测量导线描绘摘要: 本文从导线的描绘出发,提出了该问题的MATLAB解决方法。给出了数据的处理结果和图表。并且,设计了二维和三维的代码描述。其中对待处理的数据有一些优化,但计算方法和计算的逻辑是没有问题的。最后,MATLAB对这个问题的解决也较为令人满意。关键字: 控制测量 导线 代码 运行结果 MATLAB任何测量工作都会产生误差,而误差在绝对意义上是不可避免的,所以在测量工作中必须采用一定的方法来控制误差的范围,以期达到工作需求。测量工作中遵循“先整体后局部,先控

2、制后碎部”的原则。简而言之就是在工作区域内建立一定精度的由一定数目的已知坐标点构成的几何图形,然后在几何图形内进行测量。在测量过程中,我们可以通过各个已知点的坐标来验算测得的未知点的坐标。这样通过不断地检核、测量、检核,成果的误差就可以控制在一定范围内。其中,已知点被称作“控制点”,几何图形被称为“控制网”,这种测量方法被称为“控制测量”。一般意义上的控制测量可以分为“平面控制测量”和“高程控制测量”。平面控制测量是基平面坐标系X-Y,而高程控制测量是基于高程H的。目前,随着测绘技术的发展,也出现了把两种控制测量结合起来的“三维控制测量”。控制网根据其精度从高到低大致可以分为一、二、三、四等,

3、精度越高的点数目越少。点数不够自然无法形成有效地控制网。因此,测量工作中需要通过已知的几个点,“一生二,二生三”,绘出一个可用于实际工程的控制网。“一生二,二生三”的过程需要已知点前后通视(即互相看得见),然而,在城市中,由于建筑物较多,视线不好,往往会出现已知点之间无法通视的现象。所以就引入了导线测量(traverse survey)。导线测量又有很多分类,在此就不在赘述了。下面来介绍导线测量中的附和导线。所谓附和导线就是:“导线起始于一个已知控制点而终至于另一个已知控制点”。通过测量导线上未知点与已知控制点坐标的对比、计算,进行平差(控制误差的一种手段),得出一条导线上的各个待测点的坐标。

4、这个过程就是导线测量的主体步骤了。导线示意图如下根据导线示意图,这里有五点需要说明:一、 测绘中,坐标系很多,一般导线测量使用的是“平面直角坐标系”,之所以打上了双引号,是因为,测量工作中的坐标系是以正北方向(竖轴)为X方向,横轴为Y方向,极坐标中顺时针旋转方向为正方向。二、 图中2、3等点要安放仪器进行测量,称这些点为测站。三、 A、B、C、D为已知点。P2、P3等为待测点。导线测量中需要计算出各个点的坐标。四、 关于P1左、P2左等角度,为测绘中所谓的左角。所谓的左角可以通过导线的前进方向来确定。比如,在这张图中,测量的顺序为A-B-C-D,那么前进方向即为A-B-C-D,而前进方向的左手

5、边的角度就是左角了(右角亦然,并不规定一定要测哪个角,计算方法略有不同而已)。这些角一般称作转折角。五、 平面的导线控制测量需要在一测站测相邻的左右测站之间的夹角(如图中的P1),该测站到前进方向上的下一测站的距离(如图中的D(1-2),也称作边长)。如果把高程算进去,还需要获得两测站之间的高差。而获得高差数据的方法很多,一般可以通过水准测量或三角高程测量获得。在这里介绍一下三角高程的基本原理。三角高程测量的基本原理就是利用三角形各边角关系来获得所需数据。如图二;已知A、B两点的水平距离D,和一个夹角,通过计算D×tan(),再通过加减测量仪器高就可以获得A、B两点的高程差。当然实际

6、运作中还要考虑地球曲率、大气温度等误差。在本文中,我对模型作了简化,对仪器高和地球曲率等因素做了默认设置。图二以上为本文要讨论的问题背景做了一个比较完整的描述下面进入问题的主体。一、 提出问题有一测量小组通过查询获得了三个已知点的坐标,又通过野外测量,做了导线,并获得了导线中的转折角和边长,同时他们也获得了各个测站的角。数据如下:A列是边长, B列是左角值 A列是角值现在要求获得各个待测点的坐标,并描绘出导线的形状,对比已知点得出测量值与实际获得坐标值的偏差。二、 对问题的分析和方案的产生现在获得的数据已经可以画出导线了。问题是坐标系是不同的,那么可以进行转换。MATLAB数学坐标系的Y轴是正

7、北方向,那么我们规定:Y轴北方向,X轴为东方向。化为极坐标时,顺时针为角的方向。 确定坐标系后,我们可以根据已知坐标把做边长和转折角转化为坐标值。计算方法: 1=2+(转折角)180°X1=X2D(边长) ×sin(1);Y1=Y2D(边长) ×cos(1);注:此处的坐标转化考虑到坐标系的转化,故sin、cos互换了。 通过以上计算获得了这些数据还是不够的。还需要用户输入已知点的坐标来对比测量结果。同时为了增加代码的通用性,可以由用户输入所需处理的文件名称,以及初始坐标值。同时,还可以通过用户选择,来实现计算和描绘平面的导线或者是三维的导线。通过用户选择那个函数

8、,调用了二维描述和三维描述这两个函数。从而实现整个功能。 如上所示,整个框架已经构成了。三、 描述解决方案首先给出可供用户选择的函数:function begin ()%这个函数给了用户选择。2D or 3D?input('welcome to use my program£¡press Enter to star£¡')N = input('choose 1 for 2D,choose 2 for 3D')switch(N) case 1 daoxian(); case 2 gaocheng(); end再给出描画二维导

9、线的函数描述:function daoxian()% this function is for 2D FILENAME = input('what is the name of date file?')%获取用户所要处理的文件名X0 =input('input the x:')Y0 =input('input the y:')%用户 输入 已知坐标。Angle = atan(Y0/X0); %用户输入已知的坐标点后,进行角度的转化,使之能在坐标系中正常实现。A=xlsread(FILENAME); %获取用户所要处理的文件内容L=A(:,1);

10、L=L' CT=A(:,2); CT=CT'%以上是对获取数据的处理,使之符合矩阵运算。GT=;CT(1)=Angle;CT=(CT./(360)*2*pi;%把一般测得的360制角转化为2Pi制 X=0,X0,0,0,0,0,0; Y=0,Y0,0,0,0,0,0;%初始化X,Y GT(3)=CT(1)+CT(2)-pi;I=4;for k=1:4 %转化各个转角,使结果符合坐标系的运算GT(I)=CT(I-1)+GT(I-1)-pi; I=I+1;endfor I=1:7if GT(I)<0 %对小于0度的角进行转换GT(I)=GT(I)+2*pi;endif GT(

11、I)>2*pi %对大于360度的角进行转换 GT(I)=GT(I)-2*pi;endendGT(1)=0;GT(2)=0;I=3;for J=1:5 %核心计算,获得坐标。X(I)=X(I-1)+L(I-1).*sin(GT(I);Y(I)=Y(I-1)+L(I-1).*cos(GT(I);I=I+1;endOUTPUT = X' ,Y' % 输出数据save OUTPUT %保存数据。plot(X,Y,'b - O');%画图。axis('equal');xlabel('X');ylabel('Y,北方向'

12、;);title('2D-map'); %以上为坐标的优化grid on;hold on;% 对比已知点,求出坐标差,并描点。 CONx = input('please enter the x of control point:');CONy = input('please enter the y of control point:'); plot(CONx,CONy,'r o'); %描出用于检核的点。 delx =X(7)- CONx %输出相差X,Y坐标大小。dely =Y(7)- CONy函数的描述和解释代码的后面已经阐述

13、,现在直接给出三维的函数描述:function gaocheng()%This function is for 3DFILENAME1 = input('what is the name of lengt-hdate file?')%获得用户所需要处理的文件名。FILENAME2 = input('what is the name of high-date file?')X0 =input('input the x:')%获得初始的起算坐标Y0 =input('input the y:')Z0 =input('input

14、the z:')Angle = atan(Y0/X0); %计算出起算的两点间在坐标系中的夹角。A=xlsread(FILENAME1);%获得用户提供的数据L=A(:,1); L=L' CT=A(:,2); CT=CT' %以上是对获取数据的处理,使之符合矩阵运算。GT=;CT(1)=Angle; %用户输入已知的坐标点后,进行角度的转化,使之能在坐标系中正常实现。CT=(CT./(360)*2*pi;%转化角度 X=0,X0,0,0,0,0,0;%初始化坐标值 Y=0,Y0,0,0,0,0,0;CT(1)=Angle; GT(3)=CT(1)+CT(2)-pi;I=

15、4;for k=1:4 %计算获得可计算的坐标方位角GT(I)=CT(I-1)+GT(I-1)-pi; I=I+1;endfor I=1:7if GT(I)<0 %对小于0度的角进行转换GT(I)=GT(I)+2*pi;endif GT(I)>2*pi %对大于360度的角进行转换 GT(I)=GT(I)-2*pi;endend GT(1)=0;GT(2)=0;I=3;for J=1:5 %核心计算,获得坐标值。X(I)=X(I-1)+L(I-1).*sin(GT(I);Y(I)=Y(I-1)+L(I-1).*cos(GT(I);I=I+1;endHT=xlsread(FILENA

16、ME2);% 获得用户提供的高程角。HT=HT'HT=(HT./(360)*2*pi;% 角转化;LT=;for k=1:5 LT(k)=L(k+1);endT=LT.*tan(HT);%通过tan函数获得H的初始值。Z=;Z(1)=0;Z(2)=Z0;for k=3:7 %获得H的值。Z(k)=Z(k-1)+T(k-2); end OUTPUT = X' ,Y',Z' %输出计算结果save OUTPUT;plot3(X,Y,Z,'k - O'); %画出图像。axis('equal');xlabel('X');

17、ylabel('Y,北方向');zlabel('H,高程');grid on;title('3D-map');%以上为坐标的优化hold on;%获得已知点,进行比较,描绘,输出结果CONx = input('please enter the x of control point:');CONy = input('please enter the y of control point:');CONz = input('please enter the z of control point:');pl

18、ot3(CONx,CONy,CONz,'r o') %描出用于检核的点。delx=X(7)- CONx % 输出相差的坐标值dely=Y(7)- CONydelyz=Z(7)- CONz现在整个函数的实现已经给出来了。其中,function begin ()放在一个M文件里,function daoxian()放在一个M文件里,function gaocheng()放在一个M文件里。其实,第2D和3D就差了一个坐标元素。主体函数还是差不多的。不过,为了表达清楚,我还是把它们都写出来了。我在写这些函数的时候,遇到了一些矩阵数组计算的小问题,最后虽然得到了解决,但我一直怀疑是不是有

19、更好的描述方法。四、 运行MATLAB,获得结果首先,我要说明的是,本来我是想在word里直接运行代码的,但是,由于不同的M文件,这样的表达,我觉得不是很清晰(可能我方法不对),所以就选择了截图运行过程的方法。运行时首先运行begin函数,选1,再按要求输入所要求调用的文件名:导线数据.xlsl,再输入起算点的X,Y坐标,此处是100,200。运行后,再根据提示输入控制点的坐标进行检核,这里是(-36,350)。整个输入过程就结束了。运行过程如下:启动界面下图显示的是输出的X,Y的坐标值下图显示的delx,dely是与控制点相差的数值下图显示的是导线的图像,其中红点为检核所用的控制点(此处几乎

20、重合)现在来看看三维导线的运行。首先调用begin函数,选2,按要求输入文件名,再输入起算点的坐标,这里是(100,200,300);运行如下即输出了计算结果,然后按要求说如已知控制点的坐标用于检核。这里输入(170,390,640),则其输出了测算点与控制点差值。结果如下:最后我们可以看一下三维图像的运行结果(如下图),注意,红点是用于检核的已知坐标的点,不得不提一下的是,实际操作中,精度往往比较高,这里为了突出误差,便于观察和理解图像,把误差放大了。 运行到这里可以说所有的结果都获得了,问题得到了解决。五、 总结这个问题的解决其实很不完美。首先,这个模型不是实际的模型,我对其中的数据进行了优化(如角度和长度的位数限制),并且祛除了一些比较复杂的能够减少误差的计算,只保留基本的几种思想方法,对导线的测量进行了描绘。但是问题的全貌,和数据的主要处理方法都到位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论