基于matlab的測量導(dǎo)線描繪_第1頁
基于matlab的測量導(dǎo)線描繪_第2頁
基于matlab的測量導(dǎo)線描繪_第3頁
基于matlab的測量導(dǎo)線描繪_第4頁
基于matlab的測量導(dǎo)線描繪_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于matlab的測量導(dǎo)線描繪 作者: 日期:2 測繪學(xué)院 學(xué)號:2009301610208 夏少波 手機: 基于MATLAB的測量導(dǎo)線描繪摘要: 本文從導(dǎo)線的描繪出發(fā),提出了該問題的MATLAB解決方法。給出了數(shù)據(jù)的處理結(jié)果和圖表。并且,設(shè)計了二維和三維的代碼描述。其中對待處理的數(shù)據(jù)有一些優(yōu)化,但計算方法和計算的邏輯是沒有問題的。最后,MATLAB對這個問題的解決也較為令人滿意。關(guān)鍵字: 控制測量 導(dǎo)線 代碼 運行結(jié)果 MATLAB任何測量工作都會產(chǎn)生誤差,而誤差在絕對意義上是不可避免的,所以在測量工作中必須采用一定的方法來控制誤差的范圍,以期達到工作需求。測量工作中遵循“先整體后局部,先控

2、制后碎部”的原則。簡而言之就是在工作區(qū)域內(nèi)建立一定精度的由一定數(shù)目的已知坐標(biāo)點構(gòu)成的幾何圖形,然后在幾何圖形內(nèi)進行測量。在測量過程中,我們可以通過各個已知點的坐標(biāo)來驗算測得的未知點的坐標(biāo)。這樣通過不斷地檢核、測量、檢核,成果的誤差就可以控制在一定范圍內(nèi)。其中,已知點被稱作“控制點”,幾何圖形被稱為“控制網(wǎng)”,這種測量方法被稱為“控制測量”。一般意義上的控制測量可以分為“平面控制測量”和“高程控制測量”。平面控制測量是基平面坐標(biāo)系X-Y,而高程控制測量是基于高程H的。目前,隨著測繪技術(shù)的發(fā)展,也出現(xiàn)了把兩種控制測量結(jié)合起來的“三維控制測量”??刂凭W(wǎng)根據(jù)其精度從高到低大致可以分為一、二、三、四等,

3、精度越高的點數(shù)目越少。點數(shù)不夠自然無法形成有效地控制網(wǎng)。因此,測量工作中需要通過已知的幾個點,“一生二,二生三”,繪出一個可用于實際工程的控制網(wǎng)?!耙簧钡倪^程需要已知點前后通視(即互相看得見),然而,在城市中,由于建筑物較多,視線不好,往往會出現(xiàn)已知點之間無法通視的現(xiàn)象。所以就引入了導(dǎo)線測量(traverse survey)。導(dǎo)線測量又有很多分類,在此就不在贅述了。下面來介紹導(dǎo)線測量中的附和導(dǎo)線。所謂附和導(dǎo)線就是:“導(dǎo)線起始于一個已知控制點而終至于另一個已知控制點”。通過測量導(dǎo)線上未知點與已知控制點坐標(biāo)的對比、計算,進行平差(控制誤差的一種手段),得出一條導(dǎo)線上的各個待測點的坐標(biāo)。

4、這個過程就是導(dǎo)線測量的主體步驟了。導(dǎo)線示意圖如下根據(jù)導(dǎo)線示意圖,這里有五點需要說明:一、 測繪中,坐標(biāo)系很多,一般導(dǎo)線測量使用的是“平面直角坐標(biāo)系”,之所以打上了雙引號,是因為,測量工作中的坐標(biāo)系是以正北方向(豎軸)為X方向,橫軸為Y方向,極坐標(biāo)中順時針旋轉(zhuǎn)方向為正方向。二、 圖中2、3等點要安放儀器進行測量,稱這些點為測站。三、 A、B、C、D為已知點。P2、P3等為待測點。導(dǎo)線測量中需要計算出各個點的坐標(biāo)。四、 關(guān)于P1左、P2左等角度,為測繪中所謂的左角。所謂的左角可以通過導(dǎo)線的前進方向來確定。比如,在這張圖中,測量的順序為A-B-C-D,那么前進方向即為A-B-C-D,而前進方向的左手

5、邊的角度就是左角了(右角亦然,并不規(guī)定一定要測哪個角,計算方法略有不同而已)。這些角一般稱作轉(zhuǎn)折角。五、 平面的導(dǎo)線控制測量需要在一測站測相鄰的左右測站之間的夾角(如圖中的P1),該測站到前進方向上的下一測站的距離(如圖中的D(1-2),也稱作邊長)。如果把高程算進去,還需要獲得兩測站之間的高差。而獲得高差數(shù)據(jù)的方法很多,一般可以通過水準(zhǔn)測量或三角高程測量獲得。在這里介紹一下三角高程的基本原理。三角高程測量的基本原理就是利用三角形各邊角關(guān)系來獲得所需數(shù)據(jù)。如圖二;已知A、B兩點的水平距離D,和一個夾角,通過計算D×tan(),再通過加減測量儀器高就可以獲得A、B兩點的高程差。當(dāng)然實際

6、運作中還要考慮地球曲率、大氣溫度等誤差。在本文中,我對模型作了簡化,對儀器高和地球曲率等因素做了默認設(shè)置。圖二以上為本文要討論的問題背景做了一個比較完整的描述下面進入問題的主體。一、 提出問題有一測量小組通過查詢獲得了三個已知點的坐標(biāo),又通過野外測量,做了導(dǎo)線,并獲得了導(dǎo)線中的轉(zhuǎn)折角和邊長,同時他們也獲得了各個測站的角。數(shù)據(jù)如下:A列是邊長, B列是左角值 A列是角值現(xiàn)在要求獲得各個待測點的坐標(biāo),并描繪出導(dǎo)線的形狀,對比已知點得出測量值與實際獲得坐標(biāo)值的偏差。二、 對問題的分析和方案的產(chǎn)生現(xiàn)在獲得的數(shù)據(jù)已經(jīng)可以畫出導(dǎo)線了。問題是坐標(biāo)系是不同的,那么可以進行轉(zhuǎn)換。MATLAB數(shù)學(xué)坐標(biāo)系的Y軸是正

7、北方向,那么我們規(guī)定:Y軸北方向,X軸為東方向?;癁闃O坐標(biāo)時,順時針為角的方向。 確定坐標(biāo)系后,我們可以根據(jù)已知坐標(biāo)把做邊長和轉(zhuǎn)折角轉(zhuǎn)化為坐標(biāo)值。計算方法: 1=2+(轉(zhuǎn)折角)180°X1=X2D(邊長) ×sin(1);Y1=Y2D(邊長) ×cos(1);注:此處的坐標(biāo)轉(zhuǎn)化考慮到坐標(biāo)系的轉(zhuǎn)化,故sin、cos互換了。 通過以上計算獲得了這些數(shù)據(jù)還是不夠的。還需要用戶輸入已知點的坐標(biāo)來對比測量結(jié)果。同時為了增加代碼的通用性,可以由用戶輸入所需處理的文件名稱,以及初始坐標(biāo)值。同時,還可以通過用戶選擇,來實現(xiàn)計算和描繪平面的導(dǎo)線或者是三維的導(dǎo)線。通過用戶選擇那個函數(shù)

8、,調(diào)用了二維描述和三維描述這兩個函數(shù)。從而實現(xiàn)整個功能。 如上所示,整個框架已經(jīng)構(gòu)成了。三、 描述解決方案首先給出可供用戶選擇的函數(shù):function begin ()%這個函數(shù)給了用戶選擇。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再給出描畫二維導(dǎo)

9、線的函數(shù)描述: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:')%用戶 輸入 已知坐標(biāo)。Angle = atan(Y0/X0); %用戶輸入已知的坐標(biāo)點后,進行角度的轉(zhuǎn)化,使之能在坐標(biāo)系中正常實現(xiàn)。A=xlsread(FILENAME); %獲取用戶所要處理的文件內(nèi)容L=A(:,1);

10、L=L' CT=A(:,2); CT=CT'%以上是對獲取數(shù)據(jù)的處理,使之符合矩陣運算。GT=;CT(1)=Angle;CT=(CT./(360)*2*pi;%把一般測得的360制角轉(zhuǎn)化為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 %轉(zhuǎn)化各個轉(zhuǎn)角,使結(jié)果符合坐標(biāo)系的運算GT(I)=CT(I-1)+GT(I-1)-pi; I=I+1;endfor I=1:7if GT(I)<0 %對小于0度的角進行轉(zhuǎn)換GT(I)=GT(I)+2*pi;endif GT(

11、I)>2*pi %對大于360度的角進行轉(zhuǎn)換 GT(I)=GT(I)-2*pi;endendGT(1)=0;GT(2)=0;I=3;for J=1:5 %核心計算,獲得坐標(biāo)。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' % 輸出數(shù)據(jù)save OUTPUT %保存數(shù)據(jù)。plot(X,Y,'b - O');%畫圖。axis('equal');xlabel('X');ylabel('Y,北方向'

12、;);title('2D-map'); %以上為坐標(biāo)的優(yōu)化grid on;hold on;% 對比已知點,求出坐標(biāo)差,并描點。 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坐標(biāo)大小。dely =Y(7)- CONy函數(shù)的描述和解釋代碼的后面已經(jīng)闡述

13、,現(xiàn)在直接給出三維的函數(shù)描述: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:')%獲得初始的起算坐標(biāo)Y0 =input('input the y:')Z0 =input('input

14、the z:')Angle = atan(Y0/X0); %計算出起算的兩點間在坐標(biāo)系中的夾角。A=xlsread(FILENAME1);%獲得用戶提供的數(shù)據(jù)L=A(:,1); L=L' CT=A(:,2); CT=CT' %以上是對獲取數(shù)據(jù)的處理,使之符合矩陣運算。GT=;CT(1)=Angle; %用戶輸入已知的坐標(biāo)點后,進行角度的轉(zhuǎn)化,使之能在坐標(biāo)系中正常實現(xiàn)。CT=(CT./(360)*2*pi;%轉(zhuǎn)化角度 X=0,X0,0,0,0,0,0;%初始化坐標(biāo)值 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 %計算獲得可計算的坐標(biāo)方位角GT(I)=CT(I-1)+GT(I-1)-pi; I=I+1;endfor I=1:7if GT(I)<0 %對小于0度的角進行轉(zhuǎn)換GT(I)=GT(I)+2*pi;endif GT(I)>2*pi %對大于360度的角進行轉(zhuǎn)換 GT(I)=GT(I)-2*pi;endend GT(1)=0;GT(2)=0;I=3;for J=1:5 %核心計算,獲得坐標(biāo)值。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;% 角轉(zhuǎn)化;LT=;for k=1:5 LT(k)=L(k+1);endT=LT.*tan(HT);%通過tan函數(shù)獲得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' %輸出計算結(jié)果save OUTPUT;plot3(X,Y,Z,'k - O'); %畫出圖像。axis('equal');xlabel('X');

17、ylabel('Y,北方向');zlabel('H,高程');grid on;title('3D-map');%以上為坐標(biāo)的優(yōu)化hold on;%獲得已知點,進行比較,描繪,輸出結(jié)果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 % 輸出相差的坐標(biāo)值dely=Y(7)- CONydelyz=Z(7)- CONz現(xiàn)在整個函數(shù)的實現(xiàn)已經(jīng)給出來了。其中,function begin ()放在一個M文件里,function daoxian()放在一個M文件里,function gaocheng()放在一個M文件里。其實,第2D和3D就差了一個坐標(biāo)元素。主體函數(shù)還是差不多的。不過,為了表達清楚,我還是把它們都寫出來了。我在寫這些函數(shù)的時候,遇到了一些矩陣數(shù)組計算的小問題,最后雖然得到了解決,但我一直懷疑是不是有

19、更好的描述方法。四、 運行MATLAB,獲得結(jié)果首先,我要說明的是,本來我是想在word里直接運行代碼的,但是,由于不同的M文件,這樣的表達,我覺得不是很清晰(可能我方法不對),所以就選擇了截圖運行過程的方法。運行時首先運行begin函數(shù),選1,再按要求輸入所要求調(diào)用的文件名:導(dǎo)線數(shù)據(jù).xlsl,再輸入起算點的X,Y坐標(biāo),此處是100,200。運行后,再根據(jù)提示輸入控制點的坐標(biāo)進行檢核,這里是(-36,350)。整個輸入過程就結(jié)束了。運行過程如下:啟動界面下圖顯示的是輸出的X,Y的坐標(biāo)值下圖顯示的delx,dely是與控制點相差的數(shù)值下圖顯示的是導(dǎo)線的圖像,其中紅點為檢核所用的控制點(此處幾乎

20、重合)現(xiàn)在來看看三維導(dǎo)線的運行。首先調(diào)用begin函數(shù),選2,按要求輸入文件名,再輸入起算點的坐標(biāo),這里是(100,200,300);運行如下即輸出了計算結(jié)果,然后按要求說如已知控制點的坐標(biāo)用于檢核。這里輸入(170,390,640),則其輸出了測算點與控制點差值。結(jié)果如下:最后我們可以看一下三維圖像的運行結(jié)果(如下圖),注意,紅點是用于檢核的已知坐標(biāo)的點,不得不提一下的是,實際操作中,精度往往比較高,這里為了突出誤差,便于觀察和理解圖像,把誤差放大了。 運行到這里可以說所有的結(jié)果都獲得了,問題得到了解決。五、 總結(jié)這個問題的解決其實很不完美。首先,這個模型不是實際的模型,我對其中的數(shù)據(jù)進行了優(yōu)化(如角度和長度的位數(shù)限制),并且祛除了一些比較復(fù)雜的能夠減少誤差的計算,只保留基本的幾種思想方法,對導(dǎo)線的測量進行了描繪。但是問題的全貌,和數(shù)據(jù)的主要處理方法都到位

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論