版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
課程編號:課程性質:必修大地測量計算與實習實習報告學院:測繪學院專業(yè):測繪工程地點:珞珈山班級:0xx組號:3姓名:xx學號:20xxxx教師:丁士俊、劉宗泉、蘇新洲黃海蘭、向東等2010年07月01日至2009年07月16日目錄前言 -2-第一局部:大地測量外業(yè) -2-實習目的與要求 -2-實習內容 -3-第二局部:大地測量編程 -3-實習目的與要求: -3-實例: -4-一、 實測斜距化算至高斯平面距離。 -4-二、 高斯投影正反算 -6-三、 大地主題正反算〔高斯平均引數(shù)+白塞爾〕 -7-四、 平面坐標轉換4參數(shù)計算 -9-第三局部:實習體會與收獲 -31-前言大地測量計算與實習,是07級測繪工程專業(yè)A,B,C,D,E專業(yè)方向的學生的集中教學實習。通過該集中教學實習,不但使我們穩(wěn)固課堂上學到的理論知識,也使我們的實際動手能力、儀器操作能力得到較大的鍛煉和提高。通過大地測量的編程作業(yè),熟悉并穩(wěn)固大地主題解算,高斯投影變換等應用,為今后的工作、研究、學習等提供扎實的根底。第一局部:大地測量外業(yè)實習目的與要求穩(wěn)固上課所學到的理論知識,并運用到實踐中;加強學生的實際動手能力、儀器操作能力,以及處理緊急情況的應變能力;鍛煉學生的團隊意識,以及學生的組織能力,團隊融洽力;掌握精細水準測量的測量方法,熟練掌握數(shù)字水準儀的使用方法;穩(wěn)固水準記錄和高差計算等工作。實習內容根據(jù)學院安排,我參加測繪學院07級07班內第三實習大隊。在組長張紅娟的指揮下開場二等水準的外業(yè)測量。外業(yè)工作時間段,正值酷暑天氣。而二等水準測量要求精度很高,因此,氣溫的影響是不能忽略的。為了在有限的作業(yè)時間內完成測量任務,我們在領到儀器后就開場了一系列的訓練:扶尺、讀數(shù)、測距等。這些練習在實際測量中為我們節(jié)約了不少時間。在正式開工前,我們還完成了測量的準備工作。包括:萊卡數(shù)字水準儀的I角檢驗。I角檢校采用方法AI1I2B。即在較平坦地區(qū)選擇兩個適當距離的兩點A,B放置尺墊,而將儀器在兩尺之間進展讀數(shù)。根據(jù)標準,用于一、二等水準測量的儀器i角不得大雨15°。而這次的檢校結果完全符合。具體結果見附表一。水準尺的零點差校正。零點差校正,我們選擇在三區(qū)游泳池對面的籃球場上進展。早上8點,籃球場上沒人,在其東側的長樓梯處進展選點:地面、樓梯2階、樓梯4階各一個點。每點之間的高差均在20-30cm間,且保持穩(wěn)定。儀器則架設在距三點距離均相等的穩(wěn)定地面上。測量中,每個尺均在三個點上進展讀數(shù),兩尺讀完后為一測回。共進展兩測回。結果計算后,零點差滿足要求。具體結果見附表二正面。水準點之記。在測量前一天,進展了測量前的踩點。我們組分配的點為:B2,B4,B5。其中,B2位于本部幼兒園東側,老年活動中心對面的馬路邊,處三岔路口。B4位于行政樓旁的三岔路中心,政管院門前。B5位于未名湖邊圍欄處,絕望坡下。具體地點見附表三。開工后,我們選擇在上午7點至11點,下午3點至6點半進展水準觀測,這樣可有效防止夏日的酷暑對儀器觀測精度的影響,同時在觀測中對儀器進展遮陽。路線選擇方面,我們選擇了以B2為起點,順路直下,經(jīng)過梅園餐館繞至三岔路坡頂,然后順路至B4,再由行政樓,下絕望坡,到B5,再穿過梅園宿舍區(qū),從梅園食堂下,順路返回B2,形成閉合環(huán)。該路線中,絕大多數(shù)路段均有樹蔭遮蔽酷暑,而且通視良好,有利于測量。整個外業(yè)測量為期一周,在工作期間,組內每人均側滿100站,滿足實習要求。且每個閉合環(huán)的往、返測精度均符合標準要求。因此,本次外業(yè)工作已經(jīng)滿足實習要求。內業(yè)計算中,組員每人計算了一個閉合環(huán),計算的環(huán)精度滿足要求,所測數(shù)據(jù)均無超限。內業(yè)計算的一系列數(shù)據(jù)見附表。第二局部:大地測量編程實習目的與要求:熟悉大地主題的相關解算公式,熟悉高斯投影的相關內容。熟練使用編程語言進展相關編程作業(yè)。實例:實測斜距化算至高斯平面距離。usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespace距離歸化{publicpartialclassForm1:Formstaticdoublea,b,c,e1,e2;publicForm1()InitializeComponent();privatevoidbutton1_Click(objectsender,EventArgse)doubles=Convert.ToDouble(textBox3.Text);doubleh1=Convert.ToDouble(textBox7.Text);doubleh2=Convert.ToDouble(textBox8.Text);stringstr1=textBox2.Text;stringstr2=str1.Substring(0,2);stringstr3=str1.Substring(3,2);doubleB1=Convert.ToDouble(str2)+Convert.ToDouble(str3)/60+Convert.ToDouble(Convert.ToDouble(str1)-Convert.ToDouble(str2)-Convert.ToDouble(str3)/100)/3600;str1=textBox1.Text;str2=str1.Substring(0,2);str3=str1.Substring(3,2);doubleL1=Convert.ToDouble(str2)+Convert.ToDouble(str3)/60+Convert.ToDouble(Convert.ToDouble(str1)-Convert.ToDouble(str2)-Convert.ToDouble(str3)/100)/3600;str1=textBox5.Text;str2=str1.Substring(0,2);str3=str1.Substring(3,2);doubleB2=Convert.ToDouble(str2)+Convert.ToDouble(str3)/60+Convert.ToDouble(Convert.ToDouble(str1)-Convert.ToDouble(str2)-Convert.ToDouble(str3)/100)/3600;str1=textBox4.Text;str2=str1.Substring(0,2);str3=str1.Substring(3,2);doubleL2=Convert.ToDouble(str2)+Convert.ToDouble(str3)/60+Convert.ToDouble(Convert.ToDouble(str1)-Convert.ToDouble(str2)-Convert.ToDouble(str3)/100)/3600;doubleW1,W2,N1,N2,Y1,Y2,M,N,R,Ym;B1=B1/(180/Math.PI);B2=B2/(180/Math.PI);L1=L1/(180/Math.PI);L2=L2/(180/Math.PI);W1=Math.Sqrt(1-e1*Math.Sin(B1)*Math.Sin(B1));N1=a/W1;Y1=(N1+h1)*Math.Cos(B1)*Math.Sin(L1);W2=Math.Sqrt(1-e1*Math.Sin(B2)*Math.Sin(B2));N2=a/W2;Y2=(N1+h2)*Math.Cos(B2)*Math.Cos(L2);M=a*(1-e1)*Math.Pow((1-e1*Math.Sin((B1+B2)/2)*Math.Sin((B1+B2)/2)),-1.5);N=a*Math.Pow((1-e1*Math.Sin((B1+B2)/2)*Math.Sin((B1+B2)/2)),-0.5);R=Math.Sqrt(M*N);Ym=(Y1+Y2)/2;doublem=(1+Ym*Ym/(2*R*R)+(Y1-Y2)*(Y1-Y2)/(24*R*R)+Math.Pow(Ym/R,4)/24)*s;textBox6.Text=m.ToString();privatevoidradioButton1_CheckedChanged(objectsender,EventArgse)a=6378137.000000000;e1=0.2966;b=a*Math.Sqrt(1-e1);e2=e1/(1-e1);c=a*Math.Sqrt(1+e2);高斯投影正反算計算公式:1.當將克拉索夫斯基橢球帶入計算式,可得到正算公式:x=6367558.4969其中:l=N=6399698.902-[21562.267-aaaaa2.反算公式為:B=其中:Bβ=Z=y/(Nbbbb大地主題正反算〔高斯平均引數(shù)+白塞爾〕計算公式:高斯平均引數(shù)正算公式為:高斯平均引數(shù)反算公式為:白塞爾大地主題正算公式:中間量:W輔助函數(shù):sinsin2球面長度:σσ=經(jīng)差改正數(shù):δ={ασ+β終點大地坐標及大地方位角:sinBλ=arctan?[LA白塞爾大地主題反算公式:輔助計算:WsincosL=ab采用迭代法同時計算起點大地方位角、球面長度及經(jīng)差λ=l+δ第一次趨近,取δ=0:p=cosAsinσ=psinσ=arctansinδ=將計算得到的δ再帶回計算經(jīng)差,直到最后兩次δ一樣或小于給定的允許值。大地線長y=S=Aσ+(反方位角A平面坐標轉換4參數(shù)計算計算方法:采用最小二乘理論,對所給的5個點的新舊坐標計算得到的轉換參數(shù)進展平差處理。平差方法采用間接平差。以上三個程序我用C#語言編寫,為了美觀,使用了一個程序囊括了以上三個程序。下面附上我編寫的代碼,以及程序運行圖。主程序入口:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespace程序合集publicpartialclassForm1:FormpublicForm1()InitializeComponent();privatevoidbutton4_Click(objectsender,EventArgse)this.Close();privatevoidbutton1_Click(objectsender,EventArgse)大地主題解算a=new大地主題解算();a.Show();privatevoidbutton2_Click(objectsender,EventArgse)高斯投影正反算b=new高斯投影正反算();b.Show();privatevoidbutton3_Click(objectsender,EventArgse)平面坐標轉換c=new平面坐標轉換();c.Show();平面坐標轉換參數(shù)計算:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespace程序合集publicpartialclass平面坐標轉換:Formpublic平面坐標轉換()InitializeComponent();///<summary>///矩陣乘法///</summary>///<paramname="firstMatrix"></param>///<paramname="secondMatrix"></param>///<returns></returns>privatedouble[,]MultiplyMatrix(double[,]firstMatrix,double[,]secondMatrix)double[,]resultMatrix=newdouble[firstMatrix.GetLength(0),secondMatrix.GetLength(1)];//判斷相乘矩陣是否合法,即第一個矩陣的列要等于第二個矩陣的行if(firstMatrix.GetLength(1)!=secondMatrix.GetLength(0))returnnull;//求結果矩陣for(introwIndex=0;rowIndex<firstMatrix.GetLength(0);rowIndex++)for(intcolIndex=0;colIndex<secondMatrix.GetLength(1);colIndex++)//初始化結果矩陣的元素resultMatrix[rowIndex,colIndex]=0;for(inti=0;i<firstMatrix.GetLength(1);i++)//求結果矩陣的元素值resultMatrix[rowIndex,colIndex]+=firstMatrix[rowIndex,i]*secondMatrix[i,colIndex];returnresultMatrix;///<summary>///求逆矩陣///</summary>///<paramname="dMatrix"></param>///<returns></returns>privatedouble[,]Athwart(double[,]dMatrix)//獲取矩陣的行數(shù)intLevel=dMatrix.GetLength(1);double[,]dReverseMatrix=newdouble[Level,2*Level];//初始化矩陣Level×(2*Level)for(inti=0;i<Level;i++)for(intj=0;j<2*Level;j++)if(j<Level)dReverseMatrix[i,j]=dMatrix[i,j];elseif(j-Level==i)dReverseMatrix[i,j]=1;elsedReverseMatrix[i,j]=0;for(inti=0,j=0;i<Level&&j<Level;i++,j++)if(dReverseMatrix[i,j]==0)if(i==Level-1)returnnull;intm=i+1;for(;dMatrix[m,j]==0;m++)if(m==Level-1)returnnull;if(m==Level)returnnull;else//把i行和m行相加for(intn=j;n<2*Level;n++)dReverseMatrix[i,n]+=dReverseMatrix[m,n];doubletemp=dReverseMatrix[i,j];if(temp!=1)//把i行數(shù)據(jù),變成以1開場的一行數(shù)據(jù)for(intn=j;n<2*Level;n++)if(dReverseMatrix[i,n]!=0)dReverseMatrix[i,n]/=temp;//把i行后的所有行的j列變成0for(ints=Level-1;s>i;s--)temp=dReverseMatrix[s,j];for(intt=j;t<2*Level;t++)dReverseMatrix[s,t]-=(dReverseMatrix[i,t]*temp);//把矩陣Level×(2*Level)前Level×Level轉變?yōu)閱挝痪仃噁or(inti=Level-2;i>=0;i--)for(intj=i+1;j<Level;j++)if(dReverseMatrix[i,j]!=0)doubletmp=dReverseMatrix[i,j];for(intn=j;n<2*Level;n++)dReverseMatrix[i,n]-=(tmp*dReverseMatrix[j,n]);//返回逆矩陣double[,]dReturn=newdouble[Level,Level];for(inti=0;i<Level;i++)for(intj=0;j<Level;j++)dReturn[i,j]=dReverseMatrix[i,j+Level];returndReturn;///<summary>///矩陣轉置///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatedouble[,]zhuanzhi(double[,]Matrix)double[,]temp=newdouble[Matrix.GetLength(1),Matrix.GetLength(0)];for(introwIndex=0;rowIndex<Matrix.GetLength(0);rowIndex++)for(inti=0;i<Matrix.GetLength(1);i++)temp[i,rowIndex]=Matrix[rowIndex,i];returntemp;///<summary>///矩陣減法///</summary>///<paramname="A1"></param>///<paramname="A2"></param>///<paramname="B"></param>///<paramname="n"></param>privatedouble[,]SubMatrix(double[,]A1,double[,]A2)//判斷矩陣的長短是否一致inta1=A1.GetLength(0);inta3=A1.GetLength(1);inta2=A2.GetLength(0);if(a1!=a2)returnnull;//矩陣相減double[,]B=newdouble[a1,a3];for(inti=0;i<a1;i++)for(intj=0;j<A1.GetLength(1);j++)B[i,j]=A1[i,j]-A2[i,j];returnB;///<summary>///矩陣對應行列式的值///</summary>///<paramname="MatrixList"></param>///<returns></returns>privatedoubleMatrixValue(double[,]MatrixList)intLevel=MatrixList.GetLength(1);double[,]dMatrix=newdouble[Level,Level];for(inti=0;i<Level;i++)for(intj=0;j<Level;j++)dMatrix[i,j]=MatrixList[i,j];intsign=1;for(inti=0,j=0;i<Level&&j<Level;i++,j++)//判斷改行dMatrix[i,j]是否為0,假設是,則尋找i后的行〔m,m>i,切dMatrix[m,j]!=0)進展交換if(dMatrix[i,j]==0)if(i==Level-1)return0;intm=i+1;//獲取一個dMatrix[m,j]不為為0的行for(;dMatrix[m,j]==0;m++)if(m==Level-1)return0;//判斷是否到達矩陣的最大行,假設是,則返回0//把i行和m行調換doubletemp;for(intn=j;n<Level;n++)temp=dMatrix[i,n];dMatrix[i,n]=dMatrix[m,n];dMatrix[m,n]=temp;sign*=(-1);//把當前行以后的行所對應的列變成0doubletmp;for(ints=Level-1;s>i;s--)tmp=dMatrix[s,j];//j行后面的所有行for(intt=j;t<Level;t++)dMatrix[s,t]-=dMatrix[i,t]*(tmp/dMatrix[i,j]);doubleresult=1;for(inti=0;i<Level;i++)if(dMatrix[i,i]!=0)result*=dMatrix[i,i];elsereturn0;returnsign*result;privatevoidbutton1_Click(objectsender,EventArgse)double[,]B=newdouble[10,6]{{1,2496680.3320,508207.1730,0,0,0},{0,0,0,1,508207.1730,2496680.3320},{1,2502077.0830,516686.0420,0,0,0},{0,0,0,1,516686.0420,2502077.0830},{1,2505568.5170,510747.0770,0,0,0},{0,0,0,1,510747.0770,2505568.5170},{1,2517684.4710,491942.3170,0,0,0},{0,0,0,1,491942.3170,2517684.4710},{1,2524192.3650,522975.4290,0,0,0},{0,0,0,1,522975.4290,2524192.3650}};double[,]l=newdouble[10,1]{{21931.9510},{117563.2290},{27183.0990},{126133.0350},{30775.4590},{120254.5690},{43210.8240},{101659.4900},{49187.7330},{132799.2230}};doublex0=0,y0=0,k1=0,k2=0;double[,]x=newdouble[6,1]{{x0},{k1},{k2},{y0},{k1},{k2}};double[,]Bt=zhuanzhi(B);double[,]Nbb=MultiplyMatrix(Bt,B);double[,]W=MultiplyMatrix(Bt,l);double[,]Nbb1=Athwart(Nbb);x=MultiplyMatrix(Nbb1,W);doublem=Math.Sqrt(Math.Pow(x[1,0],2)+Math.Pow(x[2,0],2))-1;doublea=Math.Asin(x[2,0]/(m+1))*180/Math.PI;double[,]V=SubMatrix(MultiplyMatrix(B,x),l);doublen0=Math.Sqrt(MatrixValue(MultiplyMatrix(zhuanzhi(V),V))/6);double[,]Qxx=Nbb1;doublea0,a1,a2,a3,temp1,temp2;a0=n0*Math.Sqrt(Qxx[0,0]);a1=n0*Math.Sqrt(Qxx[3,3]);temp1=n0*Math.Sqrt(Qxx[1,1]);temp2=n0*Math.Sqrt(Qxx[2,2]);a2=Math.Sqrt(Math.Pow(x[1,0]/(1+m),2)*temp1+Math.Pow(x[2,0]/(1+m),2)*temp2);a3=Math.Sqrt((temp2/Math.Pow((1+m),2)+x[2,0]*a2*a2/Math.Pow((1+m),2))/(1-Math.Pow(x[2,0]/(1+m),2)));label36.Text=x[0,0].ToString();label39.Text=x[3,0].ToString();label37.Text=m.ToString();label38.Text=a.ToString();label46.Text=a0.ToString();label47.Text=a1.ToString();label48.Text=a2.ToString();label49.Text=a3.ToString();privatevoidbutton2_Click(objectsender,EventArgse)this.Close();高斯投影正反算:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespace程序合集publicpartialclass高斯投影正反算:Formpublic高斯投影正反算()InitializeComponent();privatevoidbutton1_Click(objectsender,EventArgse)doublea=6378137.0000;doubleb=6356752.3142;doublec=Math.Pow(a,2)/b;doublee1=(Math.Pow(a,2)-Math.Pow(b,2))/Math.Pow(a,2);//平方項doublee2=(Math.Pow(e1,2))/(1-Math.Pow(e1,2));//平方項doublel0=111;stringstr1=textBox1.Text;stringstr2=str1.Substring(0,2);stringstr3=str1.Substring(3,2);doubleB=Convert.ToDouble(str2)+Convert.ToDouble(str3)/60+Convert.ToDouble(Convert.ToDouble(str1)-Convert.ToDouble(str2)-Convert.ToDouble(str3)/100)/3600;str1=textBox2.Text;string[]s=newstring[2];s=str1.Split('.');str2=s[1].Substring(0,2);doubleL=Convert.ToDouble(s[0])+Convert.ToDouble(str2)/60+Convert.ToDouble(Convert.ToDouble(str1)-Convert.ToDouble(str2)/100-Convert.ToDouble(s[0]))/100/3600;doublesinb=Math.Sin(B*Math.PI/180);doublecosb=Math.Cos(B*Math.PI/180);doublea0=32140.404-(135.3302-(0.7092-0.004*cosb*cosb)*cosb*cosb)*cosb*cosb;doubleN=6399698.902-(21562.267-(108.973-0.612*cosb*cosb)*cosb*cosb)*cosb*cosb;doublea4=(0.25+0.00252*cosb*cosb)*cosb*cosb-0.04166;doublea6=(0.166*cosb*cosb-0.084)*cosb*cosb;doublea3=(0.3333333+0.001123*cosb*cosb)*cosb*cosb-0.16666667;doublea5=0.0083-(0.1667-(0.1968+0.0040*cosb*cosb)*cosb*cosb)*cosb*cosb;doublel=Math.Abs((L-l0)*Math.PI/180);doublex=6367558.4969*B*Math.PI/180-(a0-(0.5+(a4+a6*l*l)*l*l)*l*l*N)*sinb*cosb;doubley=(1+(a3+a5*l*l)*l*l)*l*N*cosb+500000;textBox4.Text=x.ToString();textBox3.Text=y.ToString();privatevoidbutton2_Click(objectsender,EventArgse)doublex=Convert.ToDouble(textBox6.Text);doubley=Convert.ToDouble(textBox5.Text);doublep=180/Math.PI;doubleL0=111;doublebeita=x/6367558.4969;doubleBf=beita+(50221746+(293622+(2350+22*Math.Pow(Math.Cos(beita),2))*Math.Pow(Math.Cos(beita),2))*Math.Pow(Math.Cos(beita),2))*Math.Pow(10,-10)*Math.Sin(beita)*Math.Cos(beita);doubleNf=6399698.902-(21562.267-(108.973-0.612*Math.Pow(Math.Cos(Bf),2))*Math.Pow(Math.Cos(Bf),2))*Math.Pow(Math.Cos(Bf),2);doubleZ=y/(Nf*Math.Cos(Bf));doubleb2=(0.5+0.003369*Math.Pow(Math.Cos(Bf),2))*Math.Sin(Bf)*Math.Cos(Bf);doubleb3=0.333333-(0.166667-0.001123*Math.Pow(Math.Cos(Bf),2))*Math.Pow(Math.Cos(Bf),2);doubleb4=0.25+(0.16161+0.00562*Math.Pow(Math.Cos(Bf),2))*Math.Pow(Math.Cos(Bf),2);doubleb5=0.2-(0.1667-0.0088*Math.Pow(Math.Cos(Bf),2))*Math.Pow(Math.Cos(Bf),2);doubleB=(Bf-(1-(b4-0.12*Z*Z)*Z*Z)*Z*Z*b2)*p;doublel=(1-(b3-b5*Z*Z)*Z*Z)*Z*p;doubleB1=Math.Floor(B)+Math.Floor((B-Math.Floor(B))*60)/100+((B-Math.Floor(B)*60-Math.Floor((B-Math.Floor(B)*60))))*60/10000;doublel1=Math.Floor(l)+Math.Floor((l-Math.Floor(l))*60)/100+((l-Math.Floor(l)*60-Math.Floor((l-Math.Floor(l)*60))))*60/10000;textBox8.Text=B1.ToString();textBox7.Text=(l1+L0).ToString();privatevoidbutton3_Click(objectsender,EventArgse)this.Close();大地主題解算:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespace程序合集publicpartialclass大地主題解算:Formpublicdoublea=0,b=0,c=0,e1=0,e2=0;publicstaticdoubleq1=206264.8*206264.8;publicstaticdoubleq2=206264.8;publicstaticdoubleA,B,C,aef,beita,beita1;public大地主題解算()InitializeComponent();privatevoidradioButton1_CheckedChanged(objectsender,EventArgse)a=6378245.00000000;e1=0.2966;c=a*Math.Sqrt(1+e2);b=a*Math.Sqrt(1-e1);//平方項e2=e1/(1-e1);//平方項privatevoidbutton1_Click(objectsender,EventArgse)stringstr1=textBox2.Text;stringstr2=str1.Substring(0,2);stringstr3=str1.Substring(3,2);doubleB=Convert.ToDouble(str2)+Convert.ToDouble(str3)/60+Convert.ToDouble(Convert.ToDouble(str1)-Convert.ToDouble(str2)-Convert.ToDouble(str3)/100)/3600;str1=textBox1.Text;string[]s=newstring[2];s=str1.Split('.');str2=s[1].Substring(0,2);doubleL=Convert.ToDouble(s[0])+Convert.ToDouble(str2)/60+Convert.ToDouble(Convert.ToDouble(str1)-Convert.ToDouble(str2)/100-Convert.ToDouble(s[0]))/100/3600;stringS=this.textBox3.Text;str1=textBox3.Text;s=newstring[2];s=str1.Split('.');str2=s[1].Substring(0,2);doubleA12=Convert.ToDouble(s[0])+Convert.ToDouble(str2)/60+Convert.ToDouble(Convert.ToDouble(str1)-Convert.ToDouble(str2)/100-Convert.ToDouble(s[0]))/100/3600;doublel1=L;doubleb1=B;doubles1=Convert.ToDouble(S);doublea12=A12;l1=l1/180*Math.PI;b1=b1/180*Math.PI;a12=a12/180*Math.PI;//輸入點信息doubleb0,l0,a0,M,N,V,W;doublecosb=Math.Cos(b1);doublesinb=Math.Sin(b1);W=Math.Sqrt(1-e1*sinb*sinb);V=Math.Sqrt(1+e2*cosb*cosb);N=a/W;M=a*(1-e1)/Math.Pow(1-e1*sinb*sinb,1.5);//中間量b0=(s1*Math.Cos(a12)/M);l0=(s1*Math.Sin(a12)/(N*cosb));a0=l0*sinb;//初始值.計算中間量秒為單位;doublebm=0,am=0;bm=b1+0.50*b0;am=a12+0.50*a0;doubletm=Math.Tan(bm);doublenm=Math.Sqrt(e2)*Math.Cos(bm);doubleL2=l0,B2=b0,A2=a0;cosb=Math.Cos(bm);sinb=Math.Sin(bm);doublecosa=Math.Cos(am);doublesina=Math.Sin(am);L2=s1*(1/cosb)*sina*(1+s1*s1*(sina*sina*tm*tm-cosa*cosa*(1+nm*nm-9*tm*tm*nm*nm))/(24*N*N))/N;B2=s1*(V*V*cosa/N)*(1+s1*s1*(Math.Pow(sina,2)*(2+3*Math.Pow(tm,2)+2*Math.Pow(nm,2))+3*nm*nm*cosa*cosa*(-1+tm*tm-nm*nm-4*Math.Pow(tm*nm,2)))/(24*N*N));A2=s1*(sina*tm/N)*(1+s1*s1*(cosa*cosa*(2+7*nm*nm+9*Math.Pow(nm*tm,2)+5*Math.Pow(nm,4))+sina*sina*(2+tm*tm+2*nm*nm))/(24*N*N));while(true)bm=b1+0.50000*B2;am=a12+0.50000*A2;cosb=Math.Cos(bm);sinb=Math.Sin(bm);cosa=Math.Cos(am);sina=Math.Sin(am);tm=Math.Tan(bm);nm=Math.Sqrt(e2)*Math.Cos(bm);b0=B2;l0=L2;a0=A2;doubletemp1,temp2,temp3;//迭代中間量temp1=l0;temp2=b0;temp3=a0;//增量初始化L2=s1*(1/cosb)*sina*(1+s1*s1*(sina*sina*tm*tm-cosa*cosa*(1+nm*nm-9*tm*tm*nm*nm))/(24*N*N))/N;B2=s1*(V*V*cosa/N)*(1+s1*s1*(Math.Pow(sina,2)*(2+3*Math.Pow(tm,2)+2*Math.Pow(nm,2))+3*nm*nm*cosa*cosa*(-1+tm*tm-nm*nm-4*Math.Pow(tm*nm,2)))/(24*N*N));A2=s1*(sina*tm/N)*(1+s1*s1*(cosa*cosa*(2+7*nm*nm+9*Math.Pow(nm*tm,2)+5*Math.Pow(nm,4))+sina*sina*(2+tm*tm+2*nm*nm))/(24*N*N));if(Math.Abs(L2-temp1)<0.0001*Math.PI/180||Math.Abs(B2-temp2)<0.0001*Math.PI/180||Math.Abs(A2-temp3)<0.0001*Math.PI/180)break;doubleb2,l2,a21;b2=b1+B2;l2=l1+L2;a21=a12+A2+Math.PI;if(a21<0)a21=a21+2*Math.PI;if(a21>Math.PI*2)a21-=2*Math.PI;//符合要求后整理結果l2=l2*180/Math.PI;b2=b2*180/Math.PI;a21=a21*180/Math.PI;doubleb22=Math.Floor(b2)+Math.Floor((b2-Math.Floor(b2))*60)/100+((b2-Math.Floor(b2)*60-Math.Floor((b2-Math.Floor(b2)*60))))*60/10000;doublel22=Math.Floor(l2)+Math.Floor((l2-Math.Floor(l2))*60)/100+((l2-Math.Floor(l2)*60-Math.Floor((l2-Math.Floor(l2)*60))))*60/10000;doublea212=Math.Floor(a21)+Math.Floor((a21-Math.Floor(a21))*60)/100+((a21-Math.Floor(a21)*60-Math.Floor((a21-Math.Floor(a21)*60))))*60/10000;textBox5.Text=(l22).ToString();textBox6.Text=(b22).ToString();textBox7.Text=(a212).ToString();//輸出privatevoidradioButton2_CheckedChanged(objectsender,EventArgse)a=6378140.0000;b=6356755.2881575287;c=Math.Pow(a,2)/b;e1=(Math.Pow(a,2)-Math.Pow(b,2))/Math.Pow(a,2);//平方項e2=(Math.Pow(e1,2))/(1-Math.Pow(e1,2));//平方項privatevoidradioButton3_CheckedChanged(objectsender,EventArgse)a=6378137.0000;b=6356752.3142;c=Math.Pow(a,2)/b;e1=(Math.Pow(a,2)-Math.Pow(b,2))/Math.Pow(a,2);//平方項e2=(Math.Pow(e1,2))/(1-Math.Pow(e1,2));//平方項privatevoidbutton2_Click(objectsender,EventArgse)stringstr1=textBox9.Text;stringstr2=str1.Substring(0,2);stringstr3=str1.Substring(3,2);doubleB=Convert.ToDouble(str2)+Convert.ToDouble(str3)/60+Convert.ToDouble(Convert.ToDouble(str1)-Convert.ToDouble(str2)-Convert.ToDouble(str3)/100)/3600;str1=textBox8.Text;string[]s=newstring[2];s=str1.Split('.');str2=s[1].Substring(0,2);doubleL=Convert.ToDouble(s[0])+Convert.ToDouble(str2)/60+Convert.ToDouble(Convert.ToDouble(str1)-Convert.ToDouble(str2)/100-Convert.ToDouble(s[0]))/100/3600;str1=textBox11.Text;str2=str1.Substring(0,2);str3=str1.Substring(3,2);doubleb3=Convert.ToDouble(str2)+Convert.ToDouble(str3)/60+Convert.ToDouble(Convert.ToDouble(str1)-Convert.ToDouble(str2)-Convert.ToDouble(str3)/100)/3600;str1=textBox10.Text;s=newstring[2];s=str1.Split('.');str2=s[1].Substring(0,2);doublel3=Convert.ToDouble(s[0])+Convert.ToDouble(str2)/60+Convert.ToDouble(Convert.ToDouble(str
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024銅棒工業(yè)應用技術培訓合同模板3篇
- 二零二五版汽車維修后舊件買賣合同3篇
- 2025年度海上船舶船員勞務派遣服務勞動合同3篇
- 邛崍專業(yè)保潔合同范本
- 2025年度高端建筑材料采購合同質量保障與驗收3篇
- 2024瀝青混凝土路面工程
- 2025年度智能草花種苗購銷合同模板3篇
- 2025年度咖啡館餐廳承包管理合同3篇
- 2024物業(yè)清潔與綠化服務合同詳細
- 2024版行政崗位勞動合同樣本
- 2025年度版權授權協(xié)議:游戲角色形象設計與授權使用3篇
- 2024年08月云南省農村信用社秋季校園招考750名工作人員筆試歷年參考題庫附帶答案詳解
- 防詐騙安全知識培訓課件
- 心肺復蘇課件2024
- 2024年股東股權繼承轉讓協(xié)議3篇
- 2024-2025學年江蘇省南京市高二上冊期末數(shù)學檢測試卷(含解析)
- 四川省名校2025屆高三第二次模擬考試英語試卷含解析
- 《城鎮(zhèn)燃氣領域重大隱患判定指導手冊》專題培訓
- 湖南財政經(jīng)濟學院專升本管理學真題
- 考研有機化學重點
- 全國身份證前六位、區(qū)號、郵編-編碼大全
評論
0/150
提交評論