![附合導(dǎo)線平差程序設(shè)計(jì)報(bào)告材料_第1頁](http://file4.renrendoc.com/view/db169abbe664d9f557a664b6ddfe1693/db169abbe664d9f557a664b6ddfe16931.gif)
![附合導(dǎo)線平差程序設(shè)計(jì)報(bào)告材料_第2頁](http://file4.renrendoc.com/view/db169abbe664d9f557a664b6ddfe1693/db169abbe664d9f557a664b6ddfe16932.gif)
![附合導(dǎo)線平差程序設(shè)計(jì)報(bào)告材料_第3頁](http://file4.renrendoc.com/view/db169abbe664d9f557a664b6ddfe1693/db169abbe664d9f557a664b6ddfe16933.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
SOUTHWESTPETROLEUMUNIVERSITY《測(cè)量平差程序》課程設(shè)計(jì)(報(bào)告)學(xué)生姓名:羅正材學(xué)號(hào):1108030128專業(yè):2011級(jí)測(cè)繪工程指導(dǎo)教師:―東升—目錄TOC\o"1-5"\h\z一、冃U言 3\o"CurrentDocument"二、 平差程序的基本要求 3\o"CurrentDocument"三、 平差程序模塊化 3\o"CurrentDocument"四、 平差中的重要函數(shù) 4五、 結(jié)論 7\o"CurrentDocument"六、 部分源代碼 7、、、 ■刖言隨著測(cè)繪科學(xué)技術(shù)的不斷發(fā)展,在測(cè)量數(shù)據(jù)的處理中產(chǎn)生很多種平差的方法。在本文
中,附合導(dǎo)線近似平差程序是利用 C++編程實(shí)現(xiàn)的,我們需要將導(dǎo)線網(wǎng)的已知數(shù)據(jù)信息按照特定的規(guī)則輸入到.txt文本中,利用C++程序讀取文本數(shù)據(jù)信息后, 對(duì)其進(jìn)行一系列的平差計(jì)算,最終獲得平差后的結(jié)果,并以 .txt文本的形式輸出且保存,這樣就可為測(cè)量工作提供一定的參考,還能為測(cè)繪數(shù)據(jù)的管理帶來幫助。二、平差程序的基本要求平差程序設(shè)計(jì)與其它程序設(shè)計(jì)相同,應(yīng)當(dāng)滿足一定的要求。(1) 程序邏輯結(jié)構(gòu)簡(jiǎn)單,清晰易讀,符合結(jié)構(gòu)化程序設(shè)計(jì)要求,便于擴(kuò)展;(2) 運(yùn)算速度快,占用內(nèi)存小,內(nèi)外存之間的交換不宜過于頻繁;(3) 數(shù)學(xué)模型及計(jì)算方法正確、先進(jìn),計(jì)算結(jié)果精度高;(4) 適應(yīng)性強(qiáng),便于移植,充分考慮各種可能形式,盡量滿足不同要求與需要;(5) 方便用戶,操作簡(jiǎn)便。數(shù)據(jù)輸入與用戶作業(yè)方式與習(xí)慣相統(tǒng)一,輸出明了、齊全;盡量減少手工處理工作量,操作簡(jiǎn)便;人機(jī)交互性要強(qiáng)。上述要求,既體現(xiàn)在平差程序的總體設(shè)計(jì)中,也貫穿于平差程序設(shè)計(jì)的各個(gè)環(huán)節(jié)中。三、平差程序模塊化
四、平差中的重要函數(shù)(一)、角度制與弧度制的相互轉(zhuǎn)化C/C++程序設(shè)計(jì)中,關(guān)于角度的計(jì)算以弧度制為單位, 而在測(cè)量以及具體工作中我們通常習(xí)慣以角度制為單位。這樣,在數(shù)據(jù)處理中,經(jīng)常需要在角度制與弧度制之間進(jìn)行相互轉(zhuǎn)化。這里,我們利用C/C++數(shù)學(xué)函數(shù)庫math.h中的相關(guān)函數(shù)完成這兩種功能。這里,我們使用double類型數(shù)據(jù)表示角度制數(shù)和弧度制數(shù)。 例如:123度44分58.445秒,用double類型表示為123.4458445,其中分、秒根據(jù)小數(shù)位確定。在角度制與弧度制的轉(zhuǎn)化中,涉及如下圖 2所示的兩個(gè)環(huán)節(jié)。圖2圖2角度化弧度函數(shù)doubled_h(doubleangle)//角度化弧度doubled_h(doubleangle)//角度化弧度{doublea,b;angle=modf(angle,&a);//a為提取的度值(angle=modf(angle*100.0,&b);//bangle=modf(angle,&a);//a為提取的度值(angle=modf(angle*100.0,&b);//b(小數(shù))int類型),angle為分秒值(小數(shù))為提取的分值(int類型),angle為秒值return(a+b/60.0+angle/36.0)*(PI+3.0E-16)/180.0;}弧度化角度函數(shù)doubleh_d(doubleangle)//弧度化角度
doubleh_d(doubleangle)//弧度化角度{doublea,b,c;angle=modf(angle*180.0/(PI-3.0E-16),&a);angle=modf(angle*60.0,&b);angle=modf(angle*60.0,&c);returna+b*0.01+c*0.0001+angle*0.0001;}其中,函數(shù)modf(angle,&a)為C語言數(shù)學(xué)庫函數(shù),返回值有兩個(gè),以引用類型定義的a返回angle的整數(shù)部分,函數(shù)直接返回值為 angle的小數(shù)部分。(二)近似坐標(biāo)計(jì)算在平面網(wǎng)間接平差計(jì)算中,近似坐標(biāo)計(jì)算是非常重要的一項(xiàng)基礎(chǔ)工作。 近似坐標(biāo)是否計(jì)算成功是間接平差是否可以進(jìn)行的必要條件。1.兩方向交會(huì)已知條件:兩個(gè)點(diǎn)的近似坐標(biāo),這兩個(gè)點(diǎn)到未知點(diǎn)的方位角,如圖 3所示E圖3E圖3兩方向交會(huì)根據(jù)圖4.2,設(shè)人=tgr,k^tg2,則很容易寫出k1k2ypk1k2yp-yAXp_Xa整理該式,得兩方向交會(huì)的的計(jì)算公式y(tǒng)P-yBXP_Xb(4.1)對(duì)(4.1)式計(jì)算,即可得到未知點(diǎn)的近似坐標(biāo)。應(yīng)用中需要注意的是,若兩方向值相同或相反,則該式無解。程序中,定義該問題的函數(shù)為: intxy0ang(obser&a1,obser&a2)2.三邊交會(huì)如圖4所示,為排除兩邊長(zhǎng)交會(huì)的二義性,給出如下三邊交會(huì)的模型, 已知條件:三個(gè)點(diǎn)的近似坐標(biāo),這三個(gè)點(diǎn)到未知點(diǎn)的距離測(cè)量值。圖4三邊交會(huì)對(duì)每條邊長(zhǎng)測(cè)量值,可列出邊長(zhǎng)條件<222TOC\o"1-5"\h\zSi=(xp-xa)+(yp-『a) (a)2 2 2“S2=(Xp-Xb) +(ypTb) (b)2 2 2§3=(xp—Xc)+(yp—yc) (c)計(jì)算上式中(玄)與(b)和(c)三式的差,消去未知參數(shù)的平方項(xiàng),整理得三邊交會(huì)的計(jì)算公式Xa—XbXa—Xbya--yB|,ZXp 'W—XcyA--yc丿<yP丿廠。2 2 2 丄2丄2_Xb_yB_Si*Xa*yA2-xC-yC-SixAyA2(4.2)對(duì)(4.2)式計(jì)算,即可得到未知點(diǎn)的近似坐標(biāo)。應(yīng)用中需要注意的是,若三點(diǎn)位于同一條直線,則該式無解。程序中,定義該問題的函數(shù)為: intxyOdist(obser &a,obser&b,obser&c)。坐標(biāo)正算使用測(cè)量正算公式計(jì)算控制網(wǎng)的近似坐標(biāo)。程序中,定義該問題的函數(shù)為:intzheng(obser&a)角度后方交會(huì)使用測(cè)量后方交會(huì)計(jì)算公式計(jì)算控制網(wǎng)的近似坐標(biāo)。 程序中,定義該問題的程序函數(shù)為:inthouj(obser&a,obser&b,obser&c)測(cè)角網(wǎng)無定向?qū)Ь€計(jì)算無定向?qū)Ь€,主要應(yīng)用于計(jì)算已知控制點(diǎn)不相鄰的三角網(wǎng)的近似坐標(biāo)。 基本思想為:先由一個(gè)已知點(diǎn)開始,假設(shè)一條邊的邊長(zhǎng)與方位角, 根據(jù)三角網(wǎng)的角度觀測(cè)值推算其它邊的邊長(zhǎng)與方位角,然后,由任一導(dǎo)線計(jì)算,直到計(jì)算至另一個(gè)已知點(diǎn)為止。假設(shè)導(dǎo)線的起點(diǎn)為A,終點(diǎn)為B。這時(shí),計(jì)算出的 B點(diǎn)坐標(biāo)必然與已知坐標(biāo)不同,設(shè)A與B的已知坐標(biāo)為(XA,yA,XB,yB),B點(diǎn)的計(jì)算坐標(biāo)為b'(Xb』b),則用這些數(shù)據(jù)可以計(jì)算邊長(zhǎng)的放大系數(shù)k和假設(shè)方位角的改正數(shù)da(Xb-Xa)2(yB-yA)2(Xb-Xa)2(yB-yA)2d;..=afa(A,B)_afa(A,B)其中,afa(A,B)為計(jì)算方位角的函數(shù)。這時(shí),對(duì)網(wǎng)中的假設(shè)邊長(zhǎng)和所有由假設(shè)邊長(zhǎng)推算的近似邊長(zhǎng)進(jìn)行 k倍的放大,對(duì)假設(shè)方位角和所有由假設(shè)方位角推算的近似方位角進(jìn)行方位角改正。 然后應(yīng)用坐標(biāo)正算法可以計(jì)算三角網(wǎng)中所有點(diǎn)的近似坐標(biāo)。五、 結(jié)論:C++在導(dǎo)線平差中的應(yīng)用在’導(dǎo)線網(wǎng)的間接平差程序設(shè)計(jì)與實(shí)現(xiàn)’中,通過使用C++編程,采用測(cè)量平差中的間接平差的方法,實(shí)現(xiàn)了導(dǎo)線網(wǎng)的間接平差,最終得到了導(dǎo)線網(wǎng)中待定數(shù)據(jù)。 在‘導(dǎo)線網(wǎng)平差的程序應(yīng)用’中,利用已經(jīng)編好的導(dǎo)線網(wǎng)間接平差程序, 對(duì)邊角網(wǎng)、三角網(wǎng)的實(shí)例進(jìn)行了平差,最終得到導(dǎo)線網(wǎng)的待定數(shù)據(jù)以及相關(guān)的精度評(píng)定,通過對(duì)這些平差結(jié)果的檢查,最后,認(rèn)為此導(dǎo)線網(wǎng)的間接平差程序可以為測(cè)量的平差工作提供一些服務(wù)。 雖然此程序可以完成導(dǎo)線網(wǎng)平差一些工作,但是它還有很多的不足地方需要改進(jìn)以及完善。平差程序的實(shí)現(xiàn)定義了五個(gè)結(jié)構(gòu)體 (間接平差結(jié)構(gòu)、平面網(wǎng)、平面點(diǎn)、測(cè)站、觀測(cè)值)通過一系列的函數(shù)將這五個(gè)結(jié)構(gòu)體聯(lián)系起來,最終完成平差任務(wù)。下面闡述一下導(dǎo)線網(wǎng)的間接平差程序?qū)崿F(xiàn)的基本流程:以DAT文件的形式輸入導(dǎo)線網(wǎng)中的已知控制點(diǎn)、測(cè)站信息、觀測(cè)值、 測(cè)角中誤差、測(cè)距加、乘常數(shù)等所有的已知數(shù)據(jù), 并且這些數(shù)據(jù)的輸入必須符合前面所提到的數(shù)據(jù)輸入格式;運(yùn)用程序讀取輸入數(shù)據(jù)文件,通過相應(yīng)的函數(shù)求得待定點(diǎn)的近似坐標(biāo);通過相應(yīng)函數(shù),求取間接平差的結(jié)構(gòu):誤差方程系數(shù)陣 A、觀測(cè)權(quán)陣P、誤差方程常數(shù)項(xiàng)I;通過間接平差函數(shù),實(shí)現(xiàn)對(duì)已經(jīng)得到的間接平差結(jié)構(gòu)的平差工作。最后,以DAT文件的格式輸出并保存平差處理結(jié)果, 為以后的測(cè)量工作提供參考。六、 部分源代碼://"度分秒”化成弧度doubleDMStoRAD(doubledms){intd,m,f;doubles;f=dms>=0?1:-1;//0.001秒=弧度dms+=f*0.0000001;d=(int)dms;dms=(dms-d)*100.0;m=(int)dms;s=(dms-m)*100.0;return(d+m/60.0+s/3600.0)*_TORAD-//弧度轉(zhuǎn)“度分秒”doubleRADtoDMS(doublerad){intf=rad>=0?1:-1;// 符號(hào)+—//加0.001秒(用弧度表示),化為度rad=(rad+rad=(rad-d)*60.0;intm=(int)rad;doubles=(rad-m)*60.0;returnd+m/100.0+s/10000.0-f*0.0000001;}//讀入已知點(diǎn)的坐標(biāo)voidReadKnwData(FILE*in,DyArray*array){charbuffer[256];doubledx,dy;SurPntpnt;while(!feof(in)){fgets(buffer,sizeof(buffer),in);if(sscanf(buffer,"%s%lf%lf",,&pnt.x,&pnt.y)==3){Add(array,pnt);}elsebreak;}dx=array->elem[1].x-array->elem[0].x;dy=array->elem[1].y-array->elem[0].y;adj.azi0=atan2(dy,dx)+(dy<0?1:0)*_2PI;//alfa-0dx=array->elem[3].x-array->elem[2].x;dy=array->elem[3].y-array->elem[2].y;adj.azin=atan2(dy,dx)+(dy<0?1:0)*_2PI;//alfa-nadj.x1=array->elem[1].x;adj.y1=array->elem[1].y;adj.xn=array->elem[2].x;adj.yn=array->elem[2].y;Destroy(array);//}//觀測(cè)值信息寫到動(dòng)態(tài)數(shù)組voidReadObsValue(FILE*in,DyArray*array){charbuffer[256];doubledirO,dir1,distO,dist1;SurPntpnt;// 用于臨時(shí)保存點(diǎn)的坐標(biāo)while(!feof(in)){fgets(buffer,sizeof(buffer),in);if(feof(in))return;if(sscanf(buffer,"%s%s%lf%lf%s%lf%lf",,,&dirO,&dist0,,&dir1,&dist1)==7){pnt.dir0.dv=DMStoRAD(dirO);pnt.dirO.dist=distO;pnt.dir1.dv=DMStoRAD(dir1);pnt.dir1.dist=dist1;pnt.b=pnt.dir1.dv-pnt.dirO.dv+(pnt.dir1.dv-pnt.dirO.dv< 0?1:0)*_2PI;Add(array,pnt);// 觀測(cè)值信息寫到動(dòng)態(tài)數(shù)組}elsebreak;//退出讀觀測(cè)值的循環(huán)}}//求角度閉合差fbvoidFb(DyArray*array){doublesumb=0.0;//beta求和for(inti=0;i<array->length;i++){sumb+=array->elem[i].b;}adj.fb=adj.aziO+sumb-_PI*array->length-adj.azin;adj.v=-adj.fb/array->length;adj.fb=adj.fb/_PI*180*3600;adj.fr=2*8*sqrt(array->length);if(abs(adj.fb)>=adj.fr)strcpy(adj.judge," 方位角閉合差超限了 rj;elsestrcpy(adj.judge," 方位角閉合差沒超限”);}//角度改正voidCorrectAngle(DyArray*array){for(inti=0;i<array->length;i++){array->elem[i].b+=adj.v;}adj.v=adj.v/_PI*180*3600;}//推算方位角voidDirect(DyArray*array){SurPntpnt;//第一個(gè)未知邊pnt.dir1.alfa=adj.azi0+array->elem[0].b-_PI;pnt.dir1.dist=(array->elem[0].dir1.dist+array->elem[1].dir0.dist)/2;pnt.dir1.dx=pnt.dir1.dist*cos(pnt.dir1.alfa);pnt.dir1.dy=pnt.dir1.dist*sin(pnt.dir1.alfa);AddDir(array,pnt,O);for(inti=1;i<array->length_1;i++){pnt.dir1.alfa=array->elem[i-1].dir1.alfa+array->elem[i].b-_PI;pnt.dir1.dist=(array->elem[i].dir1.dist+array->elem[i+1].dir0.dist)/2;pnt.dir1.dx=pnt.dir1.dist*cos(pnt.dir1.alfa);
pnt.dir1.dy=pnt.dir1.dist*sin(pnt.dirl.alfa);AddDir(array,pnt,i);}for(i=0;i<array->length_1;i++){array->elem[i].dir1.alfa=RADtoDMS(array->elem[i].dir1.alfa);//alfa角度}}//坐標(biāo)增量改正voidCorrectDirect(DyArray*array){doublesumx=0.0;doublesumy=0.0;doublesums=0.0;for(inti=0;i<array->length_1;i++){sumx+=array->elem[i].dir1.dx;sumy+=array->elem[i].dir1.dy;sums+=array->elem[i].dir1.dist;}adj.fx=adj.x1+sumx-adj.xn;adj.fy=adj.y1+sumy-adj.yn;adj.fs=sqrt(adj.fx*adj.fx+adj.fy*adj.fy);adj.f=int(sums/adj.fs);〃 導(dǎo)線全長(zhǎng)相對(duì)閉合差分母for(i=0;i<array->length_1;i++){array->elem[i].dir1.dx-=adj.fx*array->elem[i].dir1.dist/sums;//改正array->elem[i].dir1.dy-=adj.fy*array->elem[i].dir1.dist/sums;}}//解算近似平差坐標(biāo)voidCoordinate(DyArray*array){轉(zhuǎn)為坐標(biāo)增量SurPntpnt;轉(zhuǎn)為坐標(biāo)增量array->elem[0].x=adj.x1;array->elem[0].y=adj.y1;for(inti=0;i<array->length_2;i++){〃strcpy(,array->elem[i+1].name);pnt.x=array->elem[i].x+array->elem[i].dir1.dx;〃pnt.y=array->elem[i].y+array->elem[i].dir1.dy;AddCor(array,pnt,i+1);}}//輸出voidPrint(DyArray*array,FILE*out){doubled,m,s;fprintf(out," 方位角閉合差fb=%.0lf秒%s角度改正v=%.0lf秒\n",adj.fb,adj.judge,adj.v);fprintf(out, "坐標(biāo)增量閉合差fx=%.0lfmmfy=%.0lfmmfs=%.0lfmm\n", adj.fx*1OOO,adj.fy*1000,adj.fs*1000);fprintf(out," 導(dǎo)線全長(zhǎng)相對(duì)閉合差 fs/ES=1/%d\n\n",adj.f);fprintf(out," 坐標(biāo)方位角\n");for(inti=0;i<array->length-1;i++){d=array->elem[i].dir1.alfa;m=(d-(int)d)*100;s=(m-(int)m)*100;fprintf(out,"a%s-%s=%.0lf°%.0lf'%.0lf"\n", array->elem[i].name,array->elem[i+1].name,d,m,s);}fprintf(out,"\n 近似平差坐標(biāo)\n");for(i=1;i<array->length_1;i++){fprintf(out, "
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年春八年級(jí)歷史下冊(cè) 第7課 改革開放的起步說課稿1(pdf) 川教版
- 2023三年級(jí)數(shù)學(xué)上冊(cè) 三 富饒的大海-三位數(shù)乘一位數(shù) 信息窗2 三位數(shù)乘一位數(shù)(進(jìn)位)的筆算乘法第2課時(shí)說課稿 青島版六三制
- 11《十六年前的回憶》(說課稿)-2023-2024學(xué)年統(tǒng)編版語文六年級(jí)下冊(cè)
- 2023七年級(jí)數(shù)學(xué)下冊(cè) 第一章 整式的乘除2 冪的乘方與積的乘方第1課時(shí) 冪的乘方說課稿 (新版)北師大版
- 2024年高中化學(xué) 第四章 生命中的基礎(chǔ)有機(jī)化學(xué)物質(zhì) 第二節(jié) 糖類說課稿 新人教版選修5
- 15《真理誕生于一百個(gè)問號(hào)之后》說課稿2023-2024學(xué)年 統(tǒng)編版語文六年級(jí)下冊(cè)
- 2024-2025學(xué)年高中語文 第四課 第3節(jié) 每年一部新詞典-新詞語說課稿2 新人教版選修《語言文字應(yīng)用》
- 永久性租房合同(2篇)
- 二零二五年度零星施工合同范本綠色節(jié)能建筑材料版3篇
- 二零二五年度民房水電設(shè)施安全風(fēng)險(xiǎn)評(píng)估合同
- 文檔協(xié)同編輯-深度研究
- 七年級(jí)數(shù)學(xué)新北師大版(2024)下冊(cè)第一章《整式的乘除》單元檢測(cè)習(xí)題(含簡(jiǎn)單答案)
- 2024-2025學(xué)年云南省昆明市盤龍區(qū)高一(上)期末數(shù)學(xué)試卷(含答案)
- 五年級(jí)上冊(cè)寒假作業(yè)答案(人教版)
- 2024年財(cái)政部會(huì)計(jì)法律法規(guī)答題活動(dòng)題目及答案一
- 2025年中考語文復(fù)習(xí)熱搜題速遞之說明文閱讀(2024年7月)
- 【企業(yè)作業(yè)成本在上海汽車集團(tuán)中的應(yīng)用研究案例7300字(論文)】
- 《民航服務(wù)溝通技巧》教案第6課巧妙化解沖突
- 化學(xué)用語專項(xiàng)訓(xùn)練
- 《了凡四訓(xùn)》課件
- 風(fēng)險(xiǎn)矩陣法(詳細(xì))
評(píng)論
0/150
提交評(píng)論