版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 大地測(cè)量課程設(shè)計(jì) </p><p><b> 目錄</b></p><p><b> 封面1</b></p><p><b> 技術(shù)報(bào)告3</b></p><p> 1.實(shí)習(xí)目的和意義3</p><p><b
2、> 2.實(shí)習(xí)任務(wù)3</b></p><p><b> 3.測(cè)區(qū)概況3</b></p><p><b> 4.已知高程3</b></p><p> 5.作業(yè)依據(jù)(包括各種限差和要求)4</p><p> 6. 踏勘、選點(diǎn)4</p><
3、p> 7. 使用的儀器和儀器檢驗(yàn)4</p><p> 8. 精密二等水準(zhǔn)數(shù)據(jù)采集和外業(yè)概算過(guò)程中的有關(guān)情況4</p><p> 9. 精密二等水準(zhǔn)測(cè)量外業(yè)高程概算成果4</p><p> 10. 大地測(cè)量計(jì)算所采用的編程語(yǔ)言、各個(gè)任務(wù)的框圖和編程思想以及基本數(shù)學(xué)模型等4</p><p> 11. 大地測(cè)量計(jì)算成果
4、匯總8</p><p><b> 實(shí)習(xí)報(bào)告</b></p><p><b> 技術(shù)報(bào)告</b></p><p> 1.1.1實(shí)習(xí)的目的和意義</p><p> 本次《大地測(cè)量計(jì)算與實(shí)習(xí)》是在我們完成《大地測(cè)量學(xué)》課程的基礎(chǔ)上進(jìn)行的,通過(guò)這次實(shí)習(xí),我們鍛煉并提高了儀器操作能力、實(shí)際動(dòng)手能力和
5、團(tuán)隊(duì)協(xié)作能力,同時(shí)鞏固了在課堂上學(xué)到理論知識(shí)。同時(shí)在后期的編程計(jì)算過(guò)程中,提升了我們發(fā)現(xiàn)問(wèn)題、提出問(wèn)題、解決問(wèn)題的能力,將學(xué)到的知識(shí)進(jìn)一步發(fā)散,提升自己的計(jì)算機(jī)能力,加強(qiáng)創(chuàng)新能力,為后期的工作打下基礎(chǔ)。</p><p> 1.1.2 實(shí)習(xí)任務(wù)</p><p> 本次實(shí)習(xí)共有兩項(xiàng)任務(wù)</p><p> (1) 二等精密水準(zhǔn)測(cè)量外業(yè)觀測(cè)與概算</p>
6、<p><b> (2) 大地測(cè)量</b></p><p> 1.1.3 測(cè)區(qū)概況</p><p> 本次我們17小組抽取的測(cè)區(qū)是珞珈山測(cè)區(qū),這段水準(zhǔn)線路環(huán)繞武漢大學(xué)文理學(xué)部珞珈山一周,較大二上學(xué)期進(jìn)行的三、四等水準(zhǔn)測(cè)量線路較短,整個(gè)測(cè)段除了從教務(wù)部至珞珈山莊和教務(wù)部至校醫(yī)院地勢(shì)起伏較大外,其余測(cè)段都較為平坦,地質(zhì)為混凝土和柏油馬路,由于部分測(cè)段在居
7、民生活區(qū),來(lái)往車輛較多,道路為典型的盤山公路。下圖標(biāo)注的是我的測(cè)段。</p><p><b> 1.1.4已知高程</b></p><p> 本次我組使用的已知高程點(diǎn)為教務(wù)部高程點(diǎn),高程為126.157m</p><p> 1.1.5 作業(yè)依據(jù)</p><p> 國(guó)家測(cè)繪局,國(guó)家一、二等水準(zhǔn)測(cè)量規(guī)范2006-05
8、-24 測(cè)繪出版社,2010儀器的檢驗(yàn) </p><p> (1)水準(zhǔn)儀的i角限差為15″(2)標(biāo)尺的零點(diǎn)不等差為0.10mm</p><p><b> 觀測(cè)方式 。</b></p><p> 1.1.6 踏勘、選點(diǎn)</p><p> 本次實(shí)習(xí)的路線已經(jīng)確定,踏勘選點(diǎn)的過(guò)程比較簡(jiǎn)單,最后我們組選取了教務(wù)部、
9、政管院、研究總院指示牌、校區(qū)警務(wù)室、老同志干休所以及校醫(yī)院六個(gè)點(diǎn)。</p><p> 1.1.7使用的儀器和檢驗(yàn)</p><p> 本次我組使用的儀器是Trimble的DiNi電子水準(zhǔn)儀以及配套水準(zhǔn)尺,精度很高。我們進(jìn)行了水準(zhǔn)儀i角檢驗(yàn)和水準(zhǔn)尺零點(diǎn)差檢驗(yàn)(結(jié)果另附),完全符合測(cè)量規(guī)范要求。</p><p> 1.1.8精密二等水準(zhǔn)數(shù)據(jù)采集與數(shù)據(jù)概算</p
10、><p> 水準(zhǔn)線路圖已在測(cè)繪概況中繪出,觀測(cè)日期與觀測(cè)時(shí)段在觀測(cè)記錄薄中記載詳細(xì),數(shù)據(jù)記錄規(guī)范、清晰。</p><p> 1.1.9詳見附錄6</p><p> 1.1.10程序部分</p><p> 本次大地測(cè)量采用的是C#語(yǔ)言,C#是一種安全的、穩(wěn)定的、簡(jiǎn)單的、優(yōu)雅的語(yǔ)言,由C和C++衍生出來(lái)的面向?qū)ο蟮木幊陶Z(yǔ)言。它在繼承C和C++
11、強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性。C#綜合了VB簡(jiǎn)單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語(yǔ)法風(fēng)格、創(chuàng)新的語(yǔ)言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語(yǔ)言,并且C#成為ECMA與ISO標(biāo)準(zhǔn)規(guī)范。C#看似基于C++寫成,但又融入其它語(yǔ)言如Pascal、Java、VB等。與C++不一樣的是C#不支持對(duì)指針的訪問(wèn),保證了程序的健壯性,但是不適應(yīng)于對(duì)于指針的操作。此次程序共有四個(gè)窗體,一個(gè)類組成,類是白塞
12、爾大地主題解算的算法。</p><p> 第一個(gè)窗體為總窗體,其余的分別是高斯正反算和實(shí)測(cè)斜距歸算至高斯平面和白塞爾大地主題結(jié)算和一個(gè)GaussCaculate的類。</p><p><b> 程序主體</b></p><p><b> 一、高斯投影正反算</b></p><p> 正算是指
13、:由大地坐標(biāo)(L, B)求得高斯平面坐標(biāo)(x, y)的過(guò)程。</p><p> 反算是指:由高斯平面坐標(biāo)(x, y)求得大地坐標(biāo)(L, B)的過(guò)程。</p><p> 正算:高斯投影必須滿足的三個(gè)條件:</p><p> ?。?),中央子午線投影后為直線。</p><p> ?。?),中央子午線投影后長(zhǎng)度不變。</p>&l
14、t;p> ?。?),投影具有正性性質(zhì),即正性投影條件。</p><p> 由第一個(gè)條件可知,中央子午線東西兩側(cè)的投影必然對(duì)稱于中央子午線。設(shè)在托球面上有P1 ,P2,且對(duì)稱于中央子午線。其大地坐標(biāo)為(l, B),(-l, B)則投影后的平面坐標(biāo)一定為P1(x, y),P2(x,-y).</p><p> 由第二個(gè)條件可知,位于中央子午線上的點(diǎn),投影后的縱坐標(biāo)x應(yīng)該等于投影前從赤道
15、量至該點(diǎn)的子午弧長(zhǎng)。</p><p><b> 計(jì)算公式:</b></p><p> 1.當(dāng)將克拉索夫斯基橢球帶入計(jì)算式,可得到正算公式:</p><p><b> 其中:</b></p><p><b> 2.反算公式為:</b></p><p&g
16、t;<b> 其中:</b></p><p> 這道題目由于已經(jīng)給出了相當(dāng)精確地電算公式,因此過(guò)程比較簡(jiǎn)單,</p><p> 二、實(shí)測(cè)斜距化算到高斯平面距離</p><p> 假設(shè)1、2兩個(gè)大地點(diǎn)在橢球面上沿法線的投影點(diǎn)1’和2’間的大地線的長(zhǎng)度為S,由于在橢球面上兩點(diǎn)間大地線長(zhǎng)度與相應(yīng)法截線長(zhǎng)度之差是極微小的,可以忽略不計(jì),則可以將
17、兩點(diǎn)間的發(fā)截線長(zhǎng)度認(rèn)為是該兩點(diǎn)間的大地線長(zhǎng)度。并且,兩點(diǎn)間的發(fā)截線的長(zhǎng)度與半徑等于其起始點(diǎn)曲率半徑的圓弧長(zhǎng)相差也很小,則所求的大地線長(zhǎng)度可以認(rèn)為是半徑。其計(jì)算如下:</p><p> S·=D*{[1-(h2-h1)/D*(h2-h1)/D]/[(1+h1/Ra)*(1+h2/Ra)]}</p><p> 這個(gè)題目的思想是先利用題目所給的X\Y坐標(biāo)求出其大地緯度和大地經(jīng)度,具
18、體投影可以用三度帶和六度帶,即先利用高斯投影正反算求出經(jīng)緯度,再利用第三題白塞爾大地主題結(jié)算求出在一號(hào)的大地方位角,具體流程圖如下。</p><p> 三 大地主題正反算</p><p> 大地主題解算:知道某些大地元素推求另一些大地元素的過(guò)程。</p><p> 正解是指:已知某點(diǎn)P1的大地坐標(biāo)(L2,B2),且知該點(diǎn)到另一點(diǎn)P2(L2,B2)的大地線長(zhǎng)及
19、其大地方位角A12,計(jì)算P2點(diǎn)的大地坐標(biāo)(L2,B2)和大地線在P2點(diǎn)的反方位角A21.的過(guò)程。</p><p> 反解是指:已知P1和P2的大地坐標(biāo)(L1,B1)和P2(L2,B2)計(jì)算P1至P2的大地線長(zhǎng),正反方位角A12、A21的過(guò)程。</p><p> 大地主題解算的基本思想:將橢球面上的大地元素按照白塞爾投影條件投影到輔助球面上,繼而在球面上進(jìn)行大地主題解算,最后在將球面上的
20、計(jì)算結(jié)果換算到橢球面上。其關(guān)鍵問(wèn)題是找出橢球面上的大地元素與球面上相應(yīng)元素之間的關(guān)系式,同時(shí)解決在球面上進(jìn)行大地主題解算的方法。</p><p> 白塞爾的三個(gè)投影條件:</p><p> ?。?)橢球面大地線投影到球面上為大圓弧;</p><p> ?。?)大地線和大圓弧上相應(yīng)點(diǎn)的方位角相等;</p><p> (3)球面上任意一點(diǎn)的緯
21、度等于球面上相應(yīng)點(diǎn)的歸化緯度。</p><p> 大地主題解算的步驟:</p><p> (1)按橢球面上的已知值計(jì)算球面相應(yīng)值,即實(shí)現(xiàn)橢球面向球面的過(guò)渡;</p><p> ?。?)在球面上解算大地問(wèn)題;</p><p> ?。?)按球面上得到的數(shù)值計(jì)算橢球面上的相應(yīng)數(shù)值,即實(shí)現(xiàn)從圓球向橢球的過(guò)渡。</p><p&g
22、t; 此次選用的是白塞爾大地主題解算。</p><p> 白塞爾大地主題正算公式:</p><p><b> 中間量:</b></p><p><b> 輔助函數(shù):</b></p><p><b> 球面長(zhǎng)度:</b></p><p><
23、b> 經(jīng)差改正數(shù):</b></p><p> 終點(diǎn)大地坐標(biāo)及大地方位角:</p><p> 白塞爾大地主題反算公式:</p><p><b> 輔助計(jì)算:</b></p><p> 采用迭代法同時(shí)計(jì)算起點(diǎn)大地方位角、球面長(zhǎng)度及經(jīng)差 </p><p><b>
24、 第一次趨近,取:</b></p><p> 將計(jì)算得到的 再帶回計(jì)算經(jīng)差,直到最后兩次相同或小于給定的允許值。</p><p><b> 大地線長(zhǎng)</b></p><p><b> 反方位角</b></p><p><b> 大地測(cè)量計(jì)算成果</b>&l
25、t;/p><p> (1)高斯投影正反算計(jì)算結(jié)果(采用第38組數(shù)據(jù)): </p><p> ?。?)實(shí)測(cè)斜距化算至高斯投影平面邊長(zhǎng)計(jì)算結(jié)果(采用克拉索夫斯基橢球):</p><p> D12 = 578.8683m。</p><p> ?。?)大地主題解算計(jì)算結(jié)果(采用第17組第7號(hào)數(shù)據(jù)):</p><p> ?。?)
26、實(shí)測(cè)數(shù)據(jù)外業(yè)高差與概略高程表計(jì)算結(jié)果:</p><p> 每公里往返高差中數(shù)的偶然中誤差 M = 0.04mm,各個(gè)小測(cè)段的概略高程結(jié)果見附錄6。</p><p><b> 附錄1</b></p><p><b> i角的檢校</b></p><p> 儀器:TRIMBLE DINi方法:
27、 觀測(cè)者:xxx</p><p> 日期:2011/6/28 標(biāo)尺: 記錄者:xxx</p><p> 時(shí)間:8:30 am 呈像:清晰 檢查者:xxx</p><p><b> 附錄2</b></p><p> 一對(duì)水準(zhǔn)尺零點(diǎn)差測(cè)定&
28、lt;/p><p> 標(biāo)尺:條碼式銦瓦尺N0.1 NO.2 觀測(cè)者:xxx</p><p> 儀器: Trimble DiNi NO.09008524 記錄者:xxx</p><p> 日期: 2011年6月8日 檢查者:xxx
29、</p><p><b> 附錄3</b></p><p> ?。叨?等 水 準(zhǔn) 點(diǎn) 之 記</p><p> 線 點(diǎn)名:</p><p><b> 附錄5</b></p><p><
30、;b> 第一題</b></p><p> using System;</p><p> using System.Collections.Generic;</p><p> using System.ComponentModel;</p><p> using System.Data;</p><
31、;p> using System.Drawing;</p><p> using System.Linq;</p><p> using System.Text;</p><p> using System.Windows.Forms;</p><p> namespace 大地課程設(shè)計(jì)3</p><p&g
32、t;<b> {</b></p><p> public partial class Form2 : Form</p><p><b> {</b></p><p> public Form2()</p><p><b> {</b></p><p
33、> InitializeComponent();</p><p><b> }</b></p><p> private void button1_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> if (ra
34、dioButton1.Checked ==true)</p><p><b> {</b></p><p> double x = 0, y = 0;</p><p> double B0, B, B1, l, l1, N, a0, a3, a4, a5, a6, π, ρ, T1, T2, T3;</p><p>
35、; //l = 1078.3596;</p><p> l1 = (Convert.ToDouble(textBox4.Text) - Convert.ToDouble(textBox7.Text)) * 3600 + (Convert.ToDouble(textBox5.Text) - Convert.ToDouble(textBox8.Text)) * 60 +</p><p>
36、 (Convert.ToDouble(textBox6.Text) - Convert.ToDouble(textBox9.Text));//經(jīng)差化為秒</p><p> π = 3.141592654;</p><p> ρ = 180.0 * 3600.0 / π;</p><p> l = l1 / ρ;//經(jīng)差化成弧度</p><p
37、> T1 = Convert.ToDouble(textBox1.Text); //度</p><p> T2 = Convert.ToDouble(textBox2.Text);//分</p><p> T3 = Convert.ToDouble(textBox3.Text);//秒</p><p> B = T1 * 3600 + T2 * 60
38、+ T3;//化成秒</p><p> B1 = T1 + T2 / 60.0 + T3 / 3600.0;//化成度</p><p> B0 = B / ρ;//化為弧度</p><p> double m = Math.Pow(Math.Cos(B0), 2);</p><p> N = 6399698.902 - (21562.
39、267 - (108.973 - 0.612 * m ) *m ) *m ;</p><p> a0 = 32140.404 - (135.3302 - (0.7092 - 0.0040 *m ) *m ) *m ;</p><p> a3 = (0.3333333 + 0.001123 * m ) *m - 0.1666667;</p><p> a4 =
40、 (0.25 + 0.00252 *m ) *m - 0.04166;</p><p> a5 = 0.0083 - (0.1667 - (0.1968 + 0.0040 * m ) * m ) * m ;</p><p> a6 = (0.166 *m - 0.084) * m ;</p><p> double n = Math.Pow(l, 2);&
41、lt;/p><p> x = 6367558.4969 * B0 - (a0 - (0.5 + (a4 + a6 * n ) *n ) * n * N) * Math.Sin(B0) * Math.Cos(B0);</p><p> y = (1 + (a3 + a5 *n ) * n ) * l * N * Math.Cos(B0)+500000;</p><p&g
42、t; textBox10.Text =x.ToString("0.0000");</p><p> textBox11.Text =y.ToString("0.0000");</p><p> /*MessageBox.Show(" B:" + B + "\n" + " B0:" +
43、B0 + "\n" + " B1:" + B1 + "\n" + " cosB0" + Math.Cos(B0) + "\n" + " sinB0" + Math.Sin(B0) + "\n" +</p><p> "N:" + N + "\n
44、" + "l:" + l + " \n " + " a0: " + a0 + "\n" + " a4: " + a4 + " \n" + " a3 :" + a3 + " \n" + " a6:" + a6 + " \n" + &
45、quot; a5:" + a5 + " \n");</p><p><b> */ }</b></p><p><b> else</b></p><p><b> {</b></p><p> double Bf, B, B3, L,
46、L0, L3, l, β, Z, Nf, b2, b3, b4, b5, ρ, π;</p><p> int B1, B2, L1, L2;</p><p> π = 3.141592654;</p><p> ρ = 180.0 * 3600.0 / π;</p><p><b> L0 = 126;</b>
47、</p><p> β = Convert.ToDouble(textBox10.Text) / 6367558.4969;//單位是弧度</p><p> double m = Math.Pow(Math.Cos(β), 2);</p><p> Bf = β + (50221746 + (293662 + (2350 + 22 * m ) * m ) *
48、 m ) * Math.Pow(10, -10) * Math.Sin(β) * Math.Cos(β) ;</p><p> double n = Math.Pow(Math.Cos(Bf), 2);//單位是弧度</p><p> Nf = 6399698.902 - (21562.267 - (108.973 - 0.612 *n ) * n ) * n ;</p>
49、<p> Z =( Convert.ToDouble(textBox11.Text)-500000) / (Nf * Math.Cos(Bf));</p><p> b2 = (0.5 + 0.003369 * n ) * Math.Sin(Bf) * Math.Cos(Bf);</p><p> b3 = 0.333333 - (0.166667 - 0.001123
50、*n ) *n ;</p><p> b4 = 0.25 + (0.16161 + 0.00562 *n ) * n ;</p><p> b5 = 0.2 - (0.1667 - 0.0088 *n ) * n ;</p><p> B = Bf - (1 - (b4 - 0.12 * Z * Z) * Z * Z) * Z * Z * b2 ;//弧度&l
51、t;/p><p> B = B * 180.0 / π;//度</p><p> B1 = (int)B;//度</p><p> B2 = (int)((B - B1) * 60);//分</p><p> B3 = B * 3600 - B1 * 3600 - B2 * 60;//秒</p><p> l =
52、 (1 - (b3 - b5 * Z * Z) * Z * Z) * Z * ρ;//秒</p><p> l = l / 3600.0;//度</p><p> L = L0 + l;</p><p> L1 = (int)L;</p><p> L2 = (int)((L - L1) * 60);</p><p
53、> L3 = L * 3600 - L1 * 3600 - L2 * 60;</p><p> textBox1.Text = Convert.ToString(B1); textBox4.Text =Convert.ToString (L1);</p><p> textBox2.Text = Convert.ToString(B2); textBox5.Text = Con
54、vert.ToString(L2);</p><p> textBox3.Text =B3 .ToString ("0.00"); textBox6.Text = L3 .ToString ("0.00");</p><p> /*MessageBox.Show(" Bf:" + Bf + "\n" + &
55、quot; β ;" + β + "\n " + " Nf ;" + Nf + "\n " + "cos(Bf) ;" + Math.Cos(Bf) + "\n " + "sin( Bf) ;" + Math.Sin(Bf) + "\n "</p><p> +
56、 "b2 ;" + b2 + "\n " + "b3 ;" + b3 + "\n " + "b4 ;" + b4 + "\n " + "b5;" + b5 + "\n " + "Z ;" + Z + "\n " + " 反算的大
57、地坐標(biāo)B:" + B1 + "°" + B2 + "′" + B3 + "″" + "\n" +" L:" + L1 + "°" + L2 + "′" + L3 + " ″" + "\n");*/</p><p
58、><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 第二題</b></p><p>
59、; private void button2_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> double X1, X2, Y1, Y2, Ym, Y12, Hm, H12, Rm, R1, Bm;</p><p> double D, S;//斜距和大地線長(zhǎng)&
60、lt;/p><p><b> double V;</b></p><p> double a = 6378245.000, b = 6356863.019, c, e1, e2;</p><p> double k, l,m;</p><p> //k = Math.Sin(A1);</p><p
61、> //l = Math.Cos(A1);</p><p> const double d = 579.5888, π = 3.141592654, B1 = (41 + 40 / 60) * π / 180,B2 =(41+40/60+16/3600)*π / 180;</p><p> const int H1 = 250, H2 = 280;</p><
62、;p> X1 = Convert.ToDouble(textBox3.Text);</p><p> Y1 = Convert.ToDouble(textBox4.Text);</p><p> X2 = Convert.ToDouble(textBox5.Text);</p><p> Y2 = Convert.ToDouble(textBox6.T
63、ext);</p><p> c = a * a / b;</p><p> e1 = Math.Sqrt(a * a - b * b) / a;</p><p> e2 = Math.Sqrt(a * a - b * b) / b;</p><p> //W = Math.Sqrt(1 - e1 * e1 * Math.Sin(B)
64、*Math .Sin(B));</p><p> Bm =(B1 + B2)/2;</p><p> V =Math .Sqrt (1+e2 *e2 *Math .Cos(Bm)*Math .Cos(Bm));</p><p> // M = a * (1 - e * e) / W * W * W;</p><p> Ym = (Y
65、1 + Y2) / 2; </p><p> Y12 = Y2 - Y1;</p><p> Rm = c /( V * V);</p><p> H12 = H1 - H2;</p><p> Hm = (H1 + H2) / 2;</p><p> // m = Y12 / (X2 - X1);<
66、/p><p> l = Math.Sqrt(1 / (m * m + 1));</p><p> k = l * m;</p><p> // k = Math.Cos(B2) * Math.Sqrt(1 + e2 * e2 * Math.Cos(B1) * Math.Cos(B1)) / (Math.Cos(B1) * Math.Sqrt(1 + e2 * e2
67、 * Math.Cos(B2) * Math.Cos(B2)));</p><p> //A1 =Math .Asin( k) ;</p><p> // l = Math.Sqrt(1 - k *k );</p><p> R1 = c / (Math.Sqrt(1 + e2 * e2 * Math.Cos(B1) * Math.Cos(B1)) * (1
68、 + e2 * e2 * Math.Cos(B1) * Math.Cos(B1) * l * l));</p><p> S = d - H12 * H12 /( 2*d) - d * Hm / R1 + d * d * d /( 24 * R1 * R1 * R1);//大地線長(zhǎng)</p><p> D = (1 + Ym * Ym /( 2 * Rm * Rm) + Y12 * Y1
69、2 / (24 * Rm * Rm) + Ym * Ym * Ym * Ym / (24 * Rm * Rm * Rm * Rm)) * S;//由大地線求的的斜距</p><p> MessageBox.Show("R1="+R1 +"\n"+"k="+k +"\n"+"Bm="+Bm+"\n&quo
70、t;+"Rm="+Rm +"\n"+"s="+S +"\n"+"歸算后的距離為D="+ D);</p><p><b> }</b></p><p><b> 第三題</b></p><p> public parti
71、al class Form4 : Form</p><p><b> {</b></p><p> public Form4()</p><p><b> {</b></p><p> InitializeComponent();</p><p> ae[0].a
72、= 6378245.0000000;//個(gè)即是克拉蘇夫斯基</p><p> ae[0].e = 0.006693421622966;</p><p><b> }</b></p><p> public struct canshu</p><p><b> {</b></p>
73、<p> public double a, e;</p><p><b> }</b></p><p> public canshu[] ae = new canshu[1];</p><p> GeomaticsCalculate gc = new GeomaticsCalculate();</p><
74、p> int flag = 0;</p><p> private void button1_Click_1(object sender, EventArgs e)</p><p><b> {</b></p><p> OpenFileDialog op = new OpenFileDialog();
75、 </p><p> op.Filter = "正算文件(*.BLAS)|*.BLAS";</p><p> op.Title = "打開正算文件:";</p><p> if (op.ShowDialog() == DialogResult.OK)</p><p><b&g
76、t; {</b></p><p> gc = new GeomaticsCalculate(op.FileName, flag);</p><p> gc.a = ae[0].a;</p><p> gc.e = ae[0].e;</p><p> this.textBox1.Text = gc.filepath;<
77、;/p><p> } </p><p><b> }</b></p><p> private void button3_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> O
78、penFileDialog op = new OpenFileDialog();</p><p> op.Filter = "反算文件(*.BL2)|*.BL2";</p><p> op.Title = "打開反算文件:";</p><p> if (op.ShowDialog() == DialogResult.OK
79、)</p><p><b> {</b></p><p> gc = new GeomaticsCalculate(op.FileName, flag);</p><p> gc.a = ae[0].a;</p><p> gc.e = ae[0].e;</p><p> this.te
80、xtBox2.Text = gc.filepath;</p><p><b> }</b></p><p><b> }</b></p><p> private void button2_Click(object sender, EventArgs e)//正算</p><p><b&
81、gt; {</b></p><p><b> flag = 1;</b></p><p> gc.Calculate1();</p><p> List<double> result1 = new List<double>();</p><p> for (int i=0;i
82、< gc.C1 .Count ;i++)</p><p><b> {</b></p><p> result1.Add(gc.Rt1[i].B2);</p><p> MessageBox.Show("B2=" + result1[i]);</p><p><b> } &l
83、t;/b></p><p><b> }</b></p><p> private void button4_Click(object sender, EventArgs e)//反算</p><p><b> {</b></p><p><b> flag = 2;<
84、/b></p><p> gc.Calculate();</p><p> // for (int i = 0; i < gc.C2.Count; i++)</p><p><b> //{</b></p><p> // MessageBox.Show("A1:" + gc.
85、hudu2jiaodu(gc.Rt2[i].A1) + "/n" +"A2:"+gc.hudu2jiaodu (gc .Rt2 [i ].A2 )+"/n"+ "S:" + gc.hudu2jiaodu(gc.Rt2[i].S) + "/n");</p><p><b> // }</b>
86、</p><p><b> }</b></p><p> class GeomaticsCalculate</p><p><b> {</b></p><p> public struct Collect2</p><p><b> {</b>
87、;</p><p> public string qidian, zhongdian;</p><p> public double B1, B2, L1, L2;//,H1,H2;</p><p> //public double S;</p><p><b> }</b></p><p&g
88、t; public struct Collect1</p><p><b> {</b></p><p> public string pname1, pname2;</p><p> public double B1, L1, A1, S;</p><p><b> }</b></
89、p><p> public struct Result1</p><p><b> {</b></p><p> public double B2, L2, A2;</p><p><b> }</b></p><p> public struct Result2<
90、;/p><p><b> {</b></p><p> public double S, A1, A2;</p><p><b> }</b></p><p> public string filepath;</p><p> public List<Collec
91、t1> C1 = new List<Collect1>();</p><p> public Result1 []Rt1;</p><p> public List<Collect2> C2 = new List<Collect2>();</p><p> public Result2[] Rt2;</p>
92、<p> public double a = 0, e = 0;</p><p> public GeomaticsCalculate()</p><p><b> { }</b></p><p> public double hudu2jiaodu(double hudu)</p><p><
93、;b> {</b></p><p> double t = 0, t1 = 0, t2;</p><p> if (hudu >= 0)</p><p><b> {</b></p><p> t1 = t = hudu * 180 / Math.PI;</p><p
94、> t = Math.Floor(t1);//整度</p><p> t1 = t1 - t;</p><p> t2 = t1 = t1 * 60;</p><p> t1 = Math.Floor(t1);//整分</p><p> t2 = t2 - t1;</p><p> t2 = Math
95、.Round(t2 * 60, 4);//保留4位的秒</p><p> t = t + t1 / 100 + t2 / 10000;</p><p><b> return t;</b></p><p><b> }</b></p><p><b> else</b>
96、</p><p><b> {</b></p><p> double temp = Math.Abs(hudu);</p><p> t1 = t = temp * 180 / Math.PI;</p><p> t = Math.Floor(t1);//整度</p><p> t1
97、= t1 - t;</p><p> t2 = t1 = t1 * 60;</p><p> t1 = Math.Floor(t1);//整分</p><p> t2 = t2 - t1;</p><p> t2 = Math.Round(t2 * 60, 4);//保留4位的秒</p><p> t = t
98、 + t1 / 100 + t2 / 10000;</p><p> return -t;</p><p><b> }</b></p><p><b> }</b></p><p> public double du2hudu(double du)</p><p>
99、<b> {</b></p><p> double t = 0, t1 = 0, t2 = 0;</p><p> if (du >= 0)</p><p><b> {</b></p><p> t = Math.Floor(du);///正度</p><p&
100、gt; t1 = Math.Floor((du - t) * 100);///整分</p><p> t2 = du * 10000 - t * 10000 - t1 * 100;///秒為單位</p><p> return (t + t1 / 60 + t2 / 3600) / 180 * Math.PI;</p><p><b> }<
101、/b></p><p><b> else</b></p><p><b> {</b></p><p> double temp = -du;</p><p> t = Math.Floor(temp);///正度</p><p> t1 = Math.Fl
102、oor((temp - t) * 100);///整分</p><p> t2 = temp * 10000 - t * 10000 - t1 * 100;///秒為單位</p><p> return -(t + t1 / 60 + t2 / 3600) / 180 * Math.PI;</p><p><b> }</b></p
103、><p><b> }</b></p><p> public GeomaticsCalculate(string path, int flag)</p><p><b> {</b></p><p> ////////////////////flag=1 白賽爾正算 flag=2 白賽爾反算&
104、lt;/p><p> filepath = path;</p><p> if (flag == 1)</p><p><b> {</b></p><p> FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read);</p
105、><p> StreamReader sr = new StreamReader(fs, Encoding.Default);</p><p> while (sr.Peek() != -1)</p><p><b> {</b></p><p> string[] temp = sr.ReadLine().Trim
106、().Split(',');</p><p> Collect1 c1;</p><p> c1.pname1 = temp[0];</p><p> c1.pname2 = temp[1];</p><p> c1.B1 = du2hudu(Convert.ToDouble(temp[2]));</p>
107、<p> c1.L1 = du2hudu(Convert.ToDouble(temp[3]));</p><p> c1.A1 = du2hudu(Convert.ToDouble(temp[4]));</p><p> c1.S = Convert.ToDouble(temp[5]);</p><p> C1.Add(c1);</p>
108、;<p><b> }</b></p><p> sr.Close();</p><p><b> }</b></p><p> if (flag == 2)</p><p><b> {</b></p><p> FileSt
109、ream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read);</p><p> StreamReader sr = new StreamReader(fs, Encoding.Default);</p><p> while (sr.Peek() != -1)</p><p><b&
110、gt; {</b></p><p> string[] temp = sr.ReadLine().Trim().Split(',');</p><p> Collect2 c2;</p><p> c2.qidian = temp[0];</p><p> c2.B1 = du2hudu(Convert.
111、ToDouble(temp[1]));</p><p> c2.L1 = du2hudu(Convert.ToDouble(temp[2]));</p><p> string[] temp1 = sr.ReadLine().Trim().Split(',');</p><p> c2.zhongdian = temp1[0];</p&g
112、t;<p> c2.B2 = du2hudu(Convert.ToDouble(temp1[1]));</p><p> c2.L2 = du2hudu(Convert.ToDouble(temp1[2]));</p><p> C2.Add(c2);</p><p><b> }</b></p><p
113、> sr.Close();</p><p><b> }</b></p><p><b> }</b></p><p> public double JudgeAtan(double dy, double dx)//判斷tan的正負(fù)</p><p><b> {</b
114、></p><p> double A = Math.Atan(dy / dx);</p><p> if (dy > 0 && dx > 0)</p><p> A = Math.Abs(A);</p><p> else if (dy < 0 && dx > 0)<
115、;/p><p> A = A + 2 * Math.PI;</p><p> else if (dx < 0 && dy < 0)</p><p> A = Math.PI + A;</p><p> else if (dx < 0 && dy > 0)</p><
116、;p> A = Math.PI + A;</p><p> else if (dx == 0 && dy > 0)</p><p> A = Math.PI / 2;</p><p> else if (dy < 0 && dx == 0)</p><p> A = 3 * Math
117、.PI / 2;</p><p><b> return A;</b></p><p><b> }</b></p><p> public void Calculate1()//白塞爾大地主題正算</p><p><b> {</b></p><
118、p> Rt1 = new Result1 [C1.Count];</p><p> for (int i = 0; i < C1.Count; i++)</p><p><b> {</b></p><p> double W1 = Math.Sqrt(1 - e * Math.Pow(Math.Sin(C1[i].B
119、1), 2));</p><p> double sinu1 = Math.Sin(C1[i].B1) * Math.Sqrt(1 - e) / W1;</p><p> double cosu1 = Math.Cos(C1[i].B1) / W1;</p><p> double sinA0 = cosu1 * Math.Sin(C1[i].A1);<
120、/p><p> double cotct1 = cosu1 * Math.Cos(C1[i].A1) / sinu1;</p><p> double sin2ct1 = 2 * cotct1 / (Math.Pow(cotct1, 2) + 1);</p><p> double cos2ct1 = (Math.Pow(cotct1, 2) - 1) / (Ma
121、th.Pow(cotct1, 2) + 1);</p><p> double cosA02 = 1 - Math.Pow(sinA0, 2);</p><p> double e1 = e / (1 - e);///e1實(shí)則為e'的平方</p><p> double b = a * Math.Sqrt(1 - e);</p><
122、p> double k2 = e1 * cosA02;</p><p> double A = b * (1 + k2 / 4 - 3.0 * k2 * k2 / 64 + 5.0 / 256.0 * k2 * k2 * k2);</p><p> double B = b * (k2 / 8 - k2 * k2 / 32 + 15.0 / 1024.0 * k2 * k2 *
123、 k2);</p><p> double C = b * (k2 * k2 / 128 - 3.0 / 512.0 * k2 * k2 * k2);</p><p> double arf = (e / 2 + Math.Pow(e, 2) / 8 + Math.Pow(e, 3) / 16) - (Math.Pow(e, 2) / 16 + Math.Pow(e, 3) / 16)
124、 * cosA02</p><p> + (3.0 / 128.0 * Math.Pow(e, 3)) * cosA02 * cosA02;</p><p> double beta = (Math.Pow(e, 2) / 32 + Math.Pow(e, 3) / 32) * cosA02 - Math.Pow(e, 3) / 64 * cosA02 * cosA02;</p&
125、gt;<p> double ct0 = (C1[i].S - (B + C * cos2ct1) * sin2ct1) / A;</p><p> double sin2 = sin2ct1 * Math.Cos(2 * ct0) + cos2ct1 * Math.Sin(2 * ct0);</p><p> double cos2 = cos2ct1 * Math.
126、Cos(2 * ct0) - sin2ct1 * Math.Sin(2 * ct0);</p><p> double ct = ct0 + (B + 5 * C * cos2) * sin2 / A;</p><p> double dt = (arf * ct + beta * (sin2 - sin2ct1)) * sinA0;</p><p> dou
127、ble sinu2 = sinu1 * Math.Cos(ct) + cosu1 * Math.Cos(C1[i].A1) * Math.Sin(ct);</p><p> Rt1[i].B2 = Math.Atan(sinu2 / (Math.Sqrt(1 - e) * Math.Sqrt(1 - sinu2 * sinu2)));</p><p> double lamuda =
128、Math.Atan(Math.Sin(C1[i].A1) * Math.Sin(ct) / (cosu1 * Math.Cos(ct) - sinu1 * Math.Sin(ct) * Math.Cos(C1[i].A1)));</p><p> if (Math.Sin(C1[i].A1) > 0 && Math.Tan(lamuda) > 0)</p><p&
129、gt;<b> {</b></p><p> lamuda = Math.Abs(lamuda);</p><p><b> }</b></p><p> if (Math.Sin(C1[i].A1) > 0 && Math.Tan(lamuda) < 0)</p><
130、;p><b> {</b></p><p> lamuda = Math.PI - Math.Abs(lamuda);</p><p><b> }</b></p><p> if (Math.Sin(C1[i].A1) < 0 && Math.Tan(lamuda) < 0)&l
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 大地測(cè)量學(xué)課程設(shè)計(jì)
- 大地測(cè)量學(xué)基礎(chǔ)課程設(shè)計(jì)
- 物理大地測(cè)量學(xué)課程設(shè)計(jì)與實(shí)習(xí)實(shí)習(xí)報(bào)告
- 大地測(cè)量學(xué)課程設(shè)計(jì)--白塞爾大地主題解算
- 大地測(cè)量概論
- 大地測(cè)量觀測(cè)技術(shù)
- 大地測(cè)量學(xué)課程設(shè)計(jì)坐標(biāo)系轉(zhuǎn)換與局部坐標(biāo)選擇
- 《應(yīng)用大地測(cè)量學(xué)》第四章-大地測(cè)量觀測(cè)技術(shù)
- 大地測(cè)量課程--四等導(dǎo)線--個(gè)人技術(shù)總結(jié)
- 大地測(cè)量基礎(chǔ)知識(shí)
- 淺談大地測(cè)量方法
- 大地測(cè)量課程--技術(shù)四等導(dǎo)線--個(gè)人技術(shù)設(shè)計(jì)書
- 8、其他空間大地測(cè)量技術(shù)
- 《應(yīng)用大地測(cè)量學(xué)》第七章-大地測(cè)量坐標(biāo)系統(tǒng)的轉(zhuǎn)換
- 大地測(cè)量學(xué)與測(cè)量工程081601
- 2-大地測(cè)量參考框架
- 大地測(cè)量系統(tǒng)與參考框架
- 大地測(cè)量學(xué)實(shí)習(xí)報(bào)告
- 大地測(cè)量學(xué)與測(cè)量工程081601
- 地震活動(dòng)的大地測(cè)量研究方法
評(píng)論
0/150
提交評(píng)論