第一篇:大地測量上機實習報告
題目: 大地測量學上機實習
學 號:
姓 名: 班 級:
專 業: 測繪工程 課程名稱: 大地測量學基礎 課程老師:
大地測量學上機實習報告
一、實習目的:
了解大地測量學的定義以及作用,讓同學們充分了解大地測量學在現代社會的重要地位及其廣泛的應用,讓同學們體驗大地測量的一些解題計算方法與運用。也讓同學們對于復雜的測繪計算如何用計算機通過編程來解決,同時對于坐標轉化和高斯投影的處理方法進行一定的了解。
二、實習任務:
1、2、空間坐標轉換編程; 高斯投影正算編程;
3、高斯投影反算編程;
三、實習時間與地點:
地點:核工樓410教室;
時間:每周四上午一二節課,共三周;
四、實習儀器:
電腦,C++編程軟件;
5、實習步驟: 5.1實驗方法步驟
1、先了解書本上關于大地主題解算的步驟;
2、根據公式用VC編寫程序
3、對編寫的程序代碼進行調試運行 5.1.1大地坐標空間直角坐標系轉換
X?(N?H)cosBcosL?1)空間大地坐標系向空間直角坐標系的轉換公式為:Y?(N?H)cosBsinL??Z?[N(1?e2)?H]sinB??式中,N?a,a為橢球的長半軸,N為橢球的卯酉圈曲率半徑a=6378.137km W W?1?e2sin2B,e2?a2?b2a2,e為橢球的第一偏心率,b=6356.7523141km。
2)程序代碼 #include
a=a/180*PI;return a;} void deg(double d,int *d1,int *d2,double *d3){d=d/PI;*d1=(int)d;*d2=(int)((d-*d1)*60);*d3=((d-*d1)*60-*d2)*60;} void X1(double a1,double e){double l,b,h,x,y,z,a,b1,c,n,w;printf(“please input L:n”);scanf(“%lf%lf%lf”,&a,&b1,&c);l=rad(a,b1,c);
b為橢球的短半軸 printf(“please input B:n”);scanf(“%lf%lf%lf”,&a,&b1,&c);b=rad(a,b1,c);printf(“please input H:n”);scanf(“%lf”,&h);w=sqrt((1-e*e*sin(b)*sin(b)));n=a1/w;x=(n+h)*cos(b)*cos(l);y=(n+h)*cos(b)*sin(l);z=(n*(1-e*e)+h)*sin(b);printf(“X=%fnY=%fnZ=%fn”,x,y,z);} void X2(double a1,double e){double l,b,h,x,y,z,n,w,m,g,m1,g1,l3,b3;int l1,l2,b1,b2;printf(“please input X:n”);scanf(“%lf”,&x);printf(“please input Y:n”);scanf(“%lf”,&y);printf(“please input Z:n”);scanf(“%lf”,&z);l=atan2(y,x);do{m=(z+a1*e*e*g/sqrt(1+g*g-e*e*g*g))/sqrt(x*x+y*y);m1=atan(m);g1=atan(g);m1=m1/PI*180*3600;g1=g1/PI*180*3600;g=m;} while(sqrt((m1-g1)*(m1-g1))>0.0001);b=atan(m);w=sqrt(1-e*e*sin(b)*sin(b));n=a1/w;h=sqrt(x*x+y*y)/cos(b)-n;deg(l,&l1,&l2,&l3);deg(b,&b1,&b2,&b3);printf(“L=%d°%d'%2.6f''nB=%d°%d'%2.6f''nH=%5.6fmn”,l1,l2,l3,b1,b2,b3,h);} void f(int a){double a1,e,e2;int b,c;printf(“please input L,B,H→X,Y,Z:請輸入1 或 X,Y,Z→L,B,H:請輸入2n”);scanf(“%d”,&b);printf(“請選擇參考橢球面:n克拉索夫斯基橢球(請輸入1)n或 IUGG 1975橢球(請輸入2)n或 CGCS 2000橢球(請輸入3)n或WGS-84橢球體(請輸入4)”);scanf(“%d”,&c);if(c==1){a1=6378245.0000,e2=0.00669342162297;} else if(c==2){a1=6378140.0000,e2=0.00669438499959;} else if(c==3){a1=6378137.0000,e2=0.00669438002290;} else if(c==4){a1=6378137.0000,e2=0.00669437999013;};e=sqrt(e2);if(b==1)X1(a1,e);else if(b==2)X2(a1,e);} main(){int a=1;do {f(a);printf(“A,B,0n”);scanf(“%d”,&a);} while(a);} 調試運行:
5.1.2高斯投影正算
1)由第二條件知 : 位于中央子午線上的點,投影后的縱坐標 x 應等于投影前從赤道量至該點的子午線弧長 X,即(8-33)式第一式中,當 有:
顧及(對于中央子午線)
時
得:
依次求得
并代入(8-33)式,得到高斯投影正算公式
2)程序代碼: #include
x=X+(N/(2*p*p))*sin(B)*cos(B)*l*l+(N/(24*p*p*p*p))*sin(B)*cos(B)*cos(B)*cos(B)*(5-t*t+9*n)*l*l*l*l;y=(N/p)*cos(B)*l+(N/(6*p*p*p))*cos(B)*cos(B)*cos(B)*(1-t*t+n)*l*l*l+(N/(120*p*p*p*p*p))*cos(B)*cos(B)*cos(B)*cos(B)*cos(B)*(5-18*t*t+t*t*t*t)*l*l*l*l*l;printf(“x=%lfny=%lfn”,x,y);return 0;} 運行調試結果:
5.1.3高斯投影反算 公式
B?Bf??tftf2MfNf5fy2?tf24MfN3f?5?3t2f224??2?9?tyfff?720MfNNfy61?90t2t4y6f?45f??l?yy322?1?2t??ffcosBf6N3cosBff???y5?120N5fcosBf2)程序代碼: #include
?5?28t2f2?24t4?2?2f?6f?8ftf#define PI 3.14***932 #define P 206264.806247096355 void main(){ long double RadianToAngle(long double alfa);long double Bf(long double a,long double b,long double x);void GSFS(long double a,long double b,long double Bf,long double y,long double *B,long double *l);long double a,b,x,y,L0;long double FSB,FSL;long double *pointer_B,*pointer_L;long double DH;pointer_B=&FSB;pointer_L=&FSL;a=6378140.0000000000;b=6356755.2881575287;printf(“請輸入x坐標和y坐標:(輸入時x坐標和y坐標之間用逗號隔開)n”);scanf(“%lf,%lf”,&x,&y);FSB=Bf(a,b,x);DH=floor(y/1000000);y=y-DH*1000000-500000;GSFS(a,b,FSB,y,pointer_B,pointer_L);FSB=RadianToAngle(FSB);FSL=RadianToAngle(FSL);L0=DH*6-3;printf(“nt===========================計算結果===========================n”);printf(“nttB=%-20.10lfttL=%-20.10lfn”,FSB,DH*6-3+FSL);printf(“nt===============n”);} long double RadianToAngle(long double alfa){ long double alfa1,alfa2;alfa=alfa*180./PI;alfa1=floor(alfa)+floor((alfa-floor(alfa))*60.)/100.;alfa2=(alfa*60.-floor(alfa*60.))*0.006;alfa1+=alfa2;return(alfa1);} long double Bf(long double a,long double b,long double x){ long double e,m0,m2,m4,m6,m8;long double a0,a2,a4,a6,a8;long double B,FB,Bn1,Bn;int n=0;e=(sqrt(a*a-b*b))/a;m0=a*(1-e*e);m2=3.0/2.0*e*e*m0;m4=5.0/4.0*e*e*m2;m6=7.0/6.0*e*e*m4;m8=9.0/8.0*e*e*m6;a0=m0+m2/2.0+3.0/8.0*m4+5.0/16.0*m6+35.0/128.0*m8;a2=m2/2.0+m4/2.0+15.0/32.0*m6+7.0/16.0*m8;a4=m4/8.0+3.0/16.0*m6+7.0/32.0*m8;a6=m6/32.0+m8/16.0;a8=m8/128.0;B=x/a0;FB=a2/2.0*sin(2*B)-a4/4.0*sin(4*B)+a6/6.0*sin(6*B)-a8/8.0*sin(8*B);do { Bn=B;B=(x+FB)/a0;FB=a2/2.0*sin(2*B)-a4/4.0*sin(4*B)+a6/6.0*sin(6*B)-a8/8.0*sin(8*B);Bn1=B;} while(fabs((Bn1-Bn)*P)>=0.000000000001);return(B);} void GSFS(long double a,long double b,long double Bf,long double y,long double *B,long double *l){ long double e,e1,V,t,u2;long double n0,n2,n4,n6,n8,sin2B,sin4B,sin6B,sin8B,N;e=(sqrt(a*a-b*b))/a;e1=(sqrt(a*a-b*b))/b;V=sqrt(1+e1*e1*cos(Bf)*cos(Bf));t=tan(Bf);u2=e1*e1*cos(Bf)*cos(Bf);n0=a;n2=1.0/2.0*e*e*n0;n4=3.0/4.0*e*e*n2;n6=5.0/6.0*e*e*n4;n8=7.0/8.0*e*e*n6;sin2B=pow(sin(Bf),2);sin4B=pow(sin(Bf),4);sin6B=pow(sin(Bf),6);sin8B=pow(sin(Bf),8);N=n0+n2*sin2B+n4*sin4B+n6*sin6B+n8*sin8B;
*B=Bf-1.0/2.0*V*V*t*((y/N)*(y/N)-1.0/12.0*(5+3*t*t+u2-9*u2*t*t)*pow((y/N),4)+1.0/360.0*(61+90*t*t+45*pow(t,4))*pow((y/N),6));*l=1.0/cos(Bf)*((y/N)-1.0/6.0*(1+2*t*t+u2)*pow((y/N),3)+1.0/120.0*(5+28*t*t+24*pow(t,4)+6*u2+8*u2*t*t)*pow(y/N,5));} 3)運行結果:
7、實習總結:
通過這次大地坐標轉換及高斯投影正反算程序代碼編寫設計的上機操作學習,我更加了解了如何運用計算機編程去處理復雜的測繪計算,并且也知道了對于編程時遇到的一般問題該如何解決,對于坐標轉換和高斯正反算的一些理念也有一定的了解。本次實習,利用計算機編程來實現測量數據的處理,讓我對坐標系之間的轉化,高斯投影正反算的原理以及計算過程有了更深刻的理解和記憶,感覺受益匪淺。不過在本次實習期間,也出現了一些小問題。在編寫程序的時候,略顯生疏,花費了較多的時間,以后有待提高;對于計算公式中的有的字母,忘記其所代表的具體意義,不過最終通過復習,搞明白每一個字母的含義。
實習就是一個理論與實踐相結合的過程,希望自己能在這一方面有更大的進步!
第二篇:大地測量實習報告
控制測量實習心得
通過測量實習,首先我學到了很多,比如對儀器的操作更加熟練,加強了對所學 知識的理解和掌握,很大程度上提高了動手和動腦的能力。書上得來終覺淺,絕知此事要躬行。在實習中,面對的是實實在在的任務,來不得半點推委和逃避,野外作業也沒有給你回去翻書的時間,一切都必須在現場解決。因此,這讓我深 深明白理論知識的重要,在學校余下的時間里,我要安心把所學的理論知識進行 梳理和回顧,做到胸中有溝壑,一目了然。為以后實際的工作打下堅實的基礎。其次,拓展了與人交際、合作的能力。我深感一次測量工作的圓滿完成,單靠一 個人的力量和構思是遠遠不夠的,只有小組的合作和團結才能快速而高效。因此,在以后的工作中自己在不斷加強業務能力的同時,要學會和同伴和睦相處,學會 包容,學會忍受。再次,通過實習我也認識到虛心求教的重要性。在工作中,同伴有的只是中專或 者中學學歷,他們沒有受過高等教育,在理論知識上他們往往有些欠缺,但是他 們豐富的經驗卻是一種寶貴的財富,這種財富在課本上是學習不到的。因此,在 以后的工作中需要向常年工作在一線的測繪工作人員學習,不能擺架子,耍脾氣。虛心求教,認真學習,堅持理論和實際相結合,使自己更快的成為一名合格的工 程人員 一次測量實習要完整的做完,單單靠一個人的力量和構思是遠遠不夠的,只 有小組的合作和團結才能讓實習快速而高效的完成。而這些,就是在測量之外所 收獲的了。小組成員的合作很重要,實習小組的氣氛很大程度上影響實驗的進度。此次外業實習的每個步驟都以了然于胸,對于書本上的知識已基本掌握,這樣來 講,也就沒有太多的遺憾了。測量也是一項務實求真的工作,半點馬虎都不行,在測量實習中必須保持數據的原始性,這也是很重要的。為了確保計算的正確性和有效性,必須得反復核對各個測點的數據是否正確。我在測量中不可避免的犯下一些錯誤,比如讀數不夠準確,氣泡沒居中等等,都會引起一些誤差。因此,我在測量中內業計算和測量同時進行,這樣就可以及時發現錯誤,及時糾正,同時也避免了很多不必要的麻煩,節省了時間,也提高了工作效率。測量也是一項精確的工作,通過測量學的學習和實習,在我的腦海中形成了一個基本的測量學的輪廓。測量學內容主要包括測定和測設兩個部分,要完成的任務在宏觀上是進行精密控制,從微觀方面講,測量學的任務為按照要求測繪各種比例尺地形圖;為各個領域提供定位和定向服務,建立工程控制網,輔助設備安裝,檢測建筑物變形的任務以及工程竣工服務等。而這一任務是所有測量學的三個基本元素的測量實現的:角度測量、距離測量、高程測量。對于水準測量我還有幾點注意要說:1 標尺要立直,盡量避免晃動,有晃動時,應該選擇數據最小的時候進行讀取。在讀數前一定將水準儀視野的水準氣泡調平,否則造成的誤差會很大。2 當用經緯儀測量角度時,如果目標較小,最好使 單線與目標重合,如果目標有一定寬度,可以用雙絲夾住目標。3 在測量時候一 定要小心,因為稍微碰了一下儀器,就要重新調整對中水平,否則就會導致數據 錯誤,也可能導致儀器的損壞。4 在讀取數據時,每位成員都要細心,既要看得 準,還要果斷,不能猶豫不決,任何人的一個小錯誤都有可能導致最終的成果的。
在這次實習中,我學到了測量的實際能力,更有面對困難的忍耐力。首先,是熟悉了水準儀、、全站儀的用途,熟練了水準儀、全站儀的使用方法,掌握了儀器的檢驗和校正的方法;其次,在對數據的檢查和校正的過程中,明白了各種測量誤差的來源,其主要有三方面:儀器誤差、外界影響誤差(如溫度、大氣折射等)、觀測誤差。了解如何避免測量結果誤差,最大限度的就是減少誤差的出現,即要做到:
1、在儀器選擇上要選擇精度較高的合適儀器。
2、提高自身的測量水平,降低誤差。
3、通過各種處理數據的數學方法如:多次測量取平均數等來減少誤差。除此之外,還應掌握一套科學的測量方法,在測量中要遵循一定的測量
原則,如“從整體帶局部”、“先控制后碎步”、“由高級到低級”的工作原則,并做到步步有檢核。這樣做不但可以防止誤差的積累,及時發現錯誤,更可以提高測量的效率。通過工程實踐,學會了數字化地形圖的繪制和碎步的測量等課堂上無法做到的東西,很大程度上提高了動手和動腦的能力。我覺的不管什么時候,自己都應該去伸手去拿,而不是等著別人拿東西給你。不是有句話說機會總是給又準備的人嗎。我們在平常就應該讓自己全面的發展。利用可以利用的一切資源,去發掘自己的潛力,讓知識武裝自己。只有這樣你才能成為一個強者。實習的結束,只是一個時期的結束。自己學到的體會到的會對將來自己的學習工作生活起到積極的作用。學習是一個沒有盡頭的事情。只有去堅持,不懈的努力,你才會收獲自己想要的。
兩周以來,我們都堅守在自己的“陣地”,觀測、記錄、計算、描點.....我們分工合作,力求更好地完成任務。在測量過程中,我們也有遇到了很多問題,疑難以及困難。通過老師的提點以及我們的認真地對待還是很好的克服了。非常感謝這一次實習,為我們提供了一個共同學習,共同進步,團結合作完成一項項目的機會,我從中受益頗多。
我們在實習過程中,不可避免的遇到了一些困難,在我們實習之初,我還有點擔心測不好,擔心只有三個星期的測量時間,自己不能按時的完成任務,但是,經過我們小組的反復測量,我們的團結、默契,克服了測量中的種種問題,終于按時完成了任務。在測量實習的過程中,我們也遇到了各種各樣的困難。比如:
(1)立標尺時,標尺除立直外,還應選在重要的地方。因此,選點就非常重要,點一定要選在有代表性的地方,同時要注意并非點越多越好,相反選取的無用點過多不但會增加測量,計算和繪圖的勞動量和多費時間,而且會因點多而雜亂產生較大的誤差。
(2)在用水準儀和全站儀測量的過程當中,有的過程出現了大的誤差,經過我們的重新測量計算,誤差范圍也減小到了可以允許的范圍里。
(3)還有就是計算問題,計算必須由兩個人完成,一個初步的計算,一個檢驗,不過,在此過程當中,也還是出現了計算錯誤的問題,我們在不斷的重復檢驗之中算出了正確的數值,盡量讓誤差減少到了最少。比較難的還是檢驗校核,不過,我之所以認為它難,也是因為在此之前不是很會計算它,在這次實習中,我又重新了解它的計算方法,現在也能自己把它計算檢驗出來了,頓時覺得校核也并不如自己想像中的那么難。
在實習過程中,也發現實習的普及非常重要。我國政府為推進經濟建設而進行的多年的教育活動,取得了很大成就。人們的觀念、意識都有了很大的提高。但是在經濟發展的深度與廣度上還有一些不足。我們的活動不能只做表面文章,要深入實際,真真正正的讓人們了解含義。并在這個基礎上,逐步確立人們對經濟發展的信仰,確立經濟發展神圣地位,只有這樣我們國家的經濟建設才有希望
第三篇:大地測量實習報告
《大地測量基礎》
實 驗 指 導 書
黃
鶴 編
班級:
測111
姓名:
曹畢錚
學號:
2103061111141
測繪工程系
2013.11
實驗一 利用EGM2008模型繪制中國大地水準面
一、GMT軟件的安裝
1.1 DOS界面輸入命令
1.2 運行W4Gsetup.exe
1.3 安裝成功
二、簡述大地水準面定義
大地水準面是由靜止海水面并向大陸延伸所形成的不規則的封閉曲面。它是重力等位面,即物體沿該面運動時,重力不做功(如水在這個面上是不會流動的)。
大地水準面是描述地球形狀的一個重要物理參考面,也是海拔高程系統的起算面。大地水準面的確定是通過確定它與參考橢球面的間距——大地水準面差距(對于似大地水準面而言,則稱為高程異常)來實現的。
三、EGM96模型
3.1 輸入命令
3.2 運行
3.3 結果
四、出現的問題、解決的途徑和心得
完成試驗任務的一開始,需要安裝EMT軟件,首先遇到的問題就是安裝不成功,手頭沒有xp系統的軟件,決定去機房,但是安裝軟件過程涉及需要重啟電腦,重啟后機房電腦又自動清楚之前的操作。最后,找了一臺特別卡的古董級電腦裝上了軟件。
完成實驗一時,由于不清楚命令的含義,所以半天執行不出結果,在看了指導書之后,明白了其中一行代碼表示讀取輔助數據的路徑,因此,改了路徑之后,成功的完成了試驗一。
對于試驗一,我最大的收獲是對照著命令說明,可以看懂老師給出的命令代碼的意思。懂得了如何粘貼命令并稍加改正實現自己想要的效果。
實驗二:利用任意一種投影繪制地圖
一、采用投影----高斯-克呂格投影
1.1 基本概念:
假想有一個橢圓柱面橫套在地球橢球體外面,并與某一條子午線(此子午線稱為中央子午線或軸子午線)相切,橢圓柱的中心軸通過橢球體中心,然后用一定投影方法,將中央子午線兩側各一定經差范圍內的地區投影到橢圓柱面上,再將此柱面展開即成為投影面,如圖2所示,此投影為高斯投影。高斯投影是正形投影的一種。
1.2 地圖投影要求
1)應當采用等角投影(又稱為正形投影)
采用正形投影時,在三角測量中大量的角度觀測元素在投影前后保持不變;在測制的地圖時,采用等角投影可以保證在有限的范圍內使得地圖上圖形同橢球上原形保持相似。
(2)在采用的正形投影中,要求長度和面積變形不大,并能夠應用簡單公式計算由于這些變形而帶來的改正數。(3)能按分帶投影
1.3 投影方式
(1)等角投影——投影前后的角度相等,但長度和面積有變形;(2)等距投影——投影前后的長度相等,但角度和面積有變形;(3)等積投影——投影前后的面積相等,但角度和長度有變形。
二、繪圖
2.1 繪制我國地圖
從網上查得,我國經緯范圍為
北緯4°-53°30′,東經73°40′-135°05′
2.2 相應代碼
xyz2grd-R73/153/4/53 EGM96ChinaN.dat-GEGM96ChinaN.grd-I30m –V surface-R73/153/4/53 EGM96ChinaN.dat-GEGM96ChinaN.grd-I1m-V makecpt-CGMT_rainbow-T-100/60/1 >g_n.cpt grdimage EGM96ChinaN.grd-Jm0.095i-Cg_n.cpt-K-P-V> EGM96ChinaN.ps pscoast-W1/43-R70/140/15/55-Jm0.095i-B10g5-Dh-Na/1/43-A500-K-O-P-V >> EGM96ChinaN.ps
2.3 執行過程
2.4 結果
三、出現的問題、解決的途經和心得
為了概括投影的原理和特點,我翻閱了以前的書籍,《新編地圖制圖學教程》,對地圖投影這一章重新翻看了一遍,對地圖投影的概念、變形、分類和選擇有了更深的認識。鞏固了以前的基礎知識。
第四篇:大地測量實習報告1范文
大地測量實習報告
<一> 二等精密水準測量
觀測過程
1.熟悉觀測的地形 觀測水塔公園及北辰樓地帶,一共有11個水準點,則有11個測段。每一測段往返測設偶數站按后前前后的順序進行測量。
2.開始觀測(1)置平儀器,使水準氣泡居中不得超過1cm。(2)用望遠鏡照準后視水準標尺,上下絲分別照準標尺基本分劃進行視距讀書。視距讀取四位,前四位估讀,記下讀數。然后,使用測微螺旋用鍥行平分線精確照準標尺的基本分劃,讀取基本分劃和測微分劃的讀數,接著將平分線照準標準尺的輔助分劃,讀取輔助分劃和測微分劃的讀數,測微分劃讀數取至測微器最小分劃。(3)旋轉望遠鏡照準前視標尺再進行讀數,記下讀數,一測站完成,接著到下一測站,往測完成后按同樣的方法進行反測。
注意的問題
1.水準儀觀測時,儀器距前后視水準標尺的距離盡量相等,其差應小于規定的限差,且前后視標準尺與測站盡量位于一直線上。
2.在立尺的過程中應盡量使標尺的氣泡居中,這是我們在觀測過程中遇到的最大的問題,因此我們找來兩根木棍來固定,否則基輔分劃讀數之差超過限差。
<二> 一級導線測量
觀測過程
1.先按等級精度確定測回數,進行往返2個測回。
2.選擇距離適中,通視良好,成像清晰的方向作為零方向,調焦消除視差后,照準零方向安置度盤。
3.對中整平,設置好全站儀里的相關要素,棱鏡系數,溫度,氣壓等
4.進行觀測,先是盤左對準一棱鏡方向,按下方向讀數和距離讀數,再順時針照準另一方向,讀下方向和距離,上半測回完成;然后順時針換為盤右照準方向讀數,下半測回完成,這樣一測回就完成了,一測站上一共測兩個測回數,完成一測站后再到下一測站,最后完成一閉合導線測量。
注意的問題
1.觀測過程中水準氣泡要居中,水準管氣泡中心偏離不得超過一格
2.我們在觀測的過程中發現測站之間的距離差有很大,應在15mm內,原因是棱鏡的系數設置錯誤,經校正后在限差范圍內。
<三> 實習體會
在實習的過程中我體會到了實習的艱辛,要有吃苦耐勞的精神,要不怕觀測時所帶來的腿酸,要不怕觀測是的雨打日曬,同時在測量中要一絲不茍,做到百分之百的集中,具有嚴謹而又認真的態度,尊重客觀事實,堅決不能半途而廢,在艱苦的過程中還深深地體會到了我們測量工作人員的艱辛,不怕勞累的精神。雖然過程曲折,但是我們也快樂著,學習到了很多的知識,不僅僅是隊課本知識的回顧和溫習,還有增進了與同學的交流,懂得了團結的重要性,只有相互配合,團
結一致就能完成任務。在實習中痛并快樂著!
第五篇:大地測量實習報告
大地測量綜合實習
實習報告
學院 :遙感信息工程學院
姓名 :王海斌 學號 :2008302590134 指導老師 :丁老師
一.實習目的和意義
通過編程掌握大地測量的特點,加深對課本中基本公式的理解和運用,提高編程計算的能力通過用VC++語言編寫大地坐標解算的一些基本算法程序,使我們鞏固和掌握使用MFC進行大地測量解算的基本技能,提高實際動手能力,并通過實際編程了解測繪軟件的實現的基本原理。為我們進一步學習大地測量、遙感等專業課程處理解決實際問題奠定基礎。
二.實習內容
第一部分:大地測量主題解算(高斯正算和高斯反算):
一,函數頭文件:
#include “stdafx.h”
#include
#define NN 8 #define PI 3.14***93 #define P 206265
二,控制變量:(數值按課本上給出賦初值);
void OuDegree(double);
//聲明格式輸出控制函數
double A12, B0, L0, A0, Bm, Am, deltaB, deltaL, deltaA, B2, L2, A21;double M, N, Nm, Vm, tm, gm;double a=6378245.0;double e2=0.***;double e12=0.***;double c=6399698.9017827110;高斯平均引數的正算公式:
cout<<“您選擇了【高斯大地平均引數正算】正算的結果為:”< double degree[NN]={47,35,44},minute[NN]={46,49,12},second[NN]={52.6470,36.3300,13.664};//定義3個數組,第一個存放°,第二個存放′,第三個存放″ double B1=(degree[0]+minute[0]/60+second[0]/3600)*PI/180;//將 B1 化成弧度 double L1=(degree[1]+minute[1]/60+second[1]/3600)*PI/180;//將 A1化成弧度 double A1=(degree[2]+minute[2]/60+second[2]/3600)*PI/180;//將 L1 化成弧度 double S=44797.2826; M=(a*(1-e2))/sqrt(pow((1-e2*pow(sin(B1),2)),3));N=a/sqrt(1-e2*pow(sin(B1),2)); deltaB=B0=S*cos(A1)/M;deltaL=L0=S*sin(A1)/(cos(B1)*N);deltaA=A0=L0*sin(B1); do { B0=deltaB; A0=deltaA; L0=deltaL; Bm=B1+B0/2; Am=A1+A0/2; tm=tan(Bm); gm=sqrt(e12)*cos(Bm); Nm=a/sqrt(1-e2*pow(sin(Bm),2)); Vm=sqrt(1+e12*pow(cos(Bm),2)); deltaB=Vm*Vm*S*cos(Am)*(1+S*S*(sin(Am)*sin(Am)*(2+3*tm*tm+2*gm*gm)+3*gm*gm*cos(Am)*cos(Am)*(tm*tm-1-gm*gm-4*tm*tm*gm*gm))/(24*Nm*Nm))/Nm; deltaL=S*sin(Am)*(1+S*S*(sin(Am)*sin(Am)*tm*tm-cos(Am)*cos(Am)*(1+gm*gm-9*tm*tm*gm*gm))/(24*Nm*Nm))/(Nm*cos(Bm)); deltaA=S*sin(Am)*tm*(1+S*S*(cos(Am)*cos(Am)*(2+7*gm*gm+9*tm*tm*gm*gm+5*pow(gm,4))+sin(Am)*sin(Am)*(2+tm*tm+2*gm*gm))/(24*Nm*Nm))/Nm; }while((deltaB-B0)>1e-10&&(deltaL-L0)>1e-10&&(deltaA-A0)>1e-10); B2=B1+deltaB; L2=L1+deltaL; A21=A1+deltaA+PI; cout<<“B2的值為:”< double degree[NN]={47,35,48,36},minute[NN]={46,49,04,14},second[NN]={52.6470,36.3300,09.6384,45.0505};//定義3個數組,第一個存放°,第二個存放′,第三個存放″ double B1=(degree[0]+minute[0]/60+second[0]/3600)*PI/180;//將 B1 化成弧度 double L1=(degree[1]+minute[1]/60+second[1]/3600)*PI/180;//將 A1化成弧度 double B2=(degree[2]+minute[2]/60+second[2]/3600)*PI/180;//將 L1 化成弧度 double L2=(degree[3]+minute[3]/60+second[3]/3600)*PI/180;//將 L1 化成弧度 double U,V,r01,r21,r03,s10,s12,s30,t01,t21,t03,T,S; Bm=(B1+B2)/2;deltaB=B2-B1;deltaL=L2-L1; tm=tan(Bm);gm=sqrt(e12)*cos(Bm);Nm=a/sqrt(1-e2*pow(sin(Bm),2));Vm=sqrt(1+e12*pow(cos(Bm),2)); r01=Nm*cos(Bm);r21=Nm*cos(Bm)*(1-gm*gm-9*gm*gm*tm*tm)/24;r03=Nm*pow(cos(Bm),3)*tm*tm/24;s10=Nm/(Vm*Vm);s12=Nm*cos(Bm)*cos(Bm)*(-2-3*tm*tm+3*tm*tm*gm*gm)/24;s30=Nm*(gm*gm-tm*tm*gm*gm)/8;t01=tm*cos(Bm);t21=cos(Bm)*tm*(3+2*gm*gm-2*pow(gm,4))/24;t03=pow(cos(Bm),3)*tm*(1+gm*gm)/12; U=r01*deltaL+r21*deltaB*deltaB*deltaL+r03*pow(deltaL,3);V=s10*deltaB+s12*deltaB*deltaL*deltaL+s30*pow(deltaB,3);deltaA=t01*deltaL+t21*deltaB*deltaB*deltaL+t03*pow(deltaL,3); Am=atan(U/V);S=U/sin(Am);A12=Am-deltaA/2;A21=Am+deltaA/2+PI; cout<<“S的值為:”< void OuDegree(double m){ int aa,bb;double cc;aa=m*206265/3600;bb=m*206265/60-aa*60;cc=m*206265-aa*3600-bb*60;printf(“%d°%d′%f″nn”,aa,bb,cc);} 四:結果: 1,正算: 2,反算: 第二部分:坐標系坐標轉換:(MFC)(克氏橢球,國際橢球,WGS—84橢球); 一,TCITEM item; item.mask = TCIF_TEXT; item.pszText = “ 克氏橢球 ”; m_tab.InsertItem(0,&item); item.pszText = “1975國際橢球”; m_tab.InsertItem(1,&item); item.pszText = “ WGS—84橢球”; m_tab.InsertItem(2,&item);二:Dialog: 三:賦予初值; m_Ld = 111;m_Lm = 17;m_Ls = 58.3596; //經度坐標; m_Bd = 30;m_Bm = 45;m_Bs = 25.4425; //緯度坐標; m_x = 0.0;m_y = 0.0;m_nLd = 0;m_nLm = 0;m_nLs = 0;m_nBd = 0; m_nBm = 0;m_nBs = 0;四:選擇坐標計算類型 case 0 : _a = 6378245.0; _b = 6356863.0187730473; break; case 1 : _a = 6378140.0; _b = 6356755.2881575287; break;case 2 : _a = 6378137.0; _b = 6356752.3142; break;} e =pow((_a*_a_b*_b), 0.5)/ _b; m[0] = _a *(1e*e * sin(B_r)*sin(B_r)),-0.5);t = tan(B_r);nl_squr = e_*e_ * pow(cos(B_r), 2); l = Le*e * sin(Bf)*sin(Bf)),-0.5);Mf = _a *(1e*e * sin(Bf)*sin(Bf)),-1.5);tf = tan(Bf);nlf_squr = e_*e_ * pow(cos(Bf), 2); double B_, L_;B_ = Bftf*(61+90*tf*tf+45*pow(tf,4))*pow(m_y,6)/(720*Mf*pow(Nf,5));L_ = 111*PI/180 + m_y/(Nf*cos(Bf))-(1+2*tf*tf+nlf_squr)*pow(m_y,3)/(6*pow(Nf,3)*cos(Bf))+(5+28*tf*tf+24*pow(tf,4)+6*nlf_squr+8*nlf_squr*tf*tf)*pow(m_y,5)/(120*pow(Nf,5)*cos(Bf)); double B_s, L_s;int B_d, B_m, L_d, L_m;B_ *= 3600*180/PI;L_ *= 3600*180/PI;m_nBd = int(B_/3600); m_nLd = int(L_/3600);m_nBm = int((B_-m_nBd*3600)/60); m_nLm = int((L_-m_nLd*3600)/60);m_nBs = B_-m_nBd*3600-m_nBm*60; m_nLs = L_-m_nLd*3600-m_nLm*60; CDialog::UpdateData(false);第三部分:高斯投影帶計算; 一.三度投影帶: void CGuasscaltDlg::OnButton1()//三度帶投影 { // TODO: Add your control notification handler code here if(bzs){ int n=int(m_L1/3.0+0.5); L0=3*n*3600; ZSGuassCalculate();} if(bfs){ L0=m_mL1*3600; FSGuassCalculate();} UpdateData(false);二.六度投影帶; void CGuasscaltDlg::OnButton2()//六度帶投影 { // TODO: Add your control notification handler code here if(bzs){ int n=int(m_L1/6.0)+1; L0=(6*n-3)*3600; ZSGuassCalculate();} if(bfs){ L0=m_mL1*3600; FSGuassCalculate();} UpdateData(false);三.成果分析 通過數據的輸入和輸出,并將自己得到的結果與參考結果作出比較,不斷改正自己的錯誤,得到正確的結果; 四.實習總結與體會 通過實習,對課堂上所學的有關大地測量結算的內容有了更深的認識和了解,也從本質上了解了大地測量數據的處理方法。對各種算法有了較清楚的了解和掌握。在這次實習過后,對VC++的使用和MFC的理解也有了進一步的加強,仍舊發現MFC是難點。由于水平有限,很多算法太過復雜,對此部分代碼不得不借鑒已有的程序,而只能達到大致的理解。但在實習得到最終成果后,還是比較有成就感的,對課程和專業也有了更深的認識,增強了今后學習的興趣,也明確了今后努力的方向。 十分感謝學院和老師給我們這次實習的機會,使我們加強了課程的學習,跟讓我們認識到了自身的不足。