【大地測量學(xué)基礎(chǔ)】第二部分 基本計算練習(xí)
《【大地測量學(xué)基礎(chǔ)】第二部分 基本計算練習(xí)》由會員分享,可在線閱讀,更多相關(guān)《【大地測量學(xué)基礎(chǔ)】第二部分 基本計算練習(xí)(97頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 第二部分 基本計算與編程 3 一 編程語言簡介及特點 3 1.1 Visual Basic 概述 3 1.2 VB的基本概念 3 1.3 數(shù)據(jù)類型 4 1.4 標(biāo)準(zhǔn)控件簡介 4 1.5 過程、函數(shù)和方法 6 1.6 應(yīng)用程序的設(shè)計 9 1.7 簡單的編程實例 11 二 測量中幾種常用的計算 12 2.1 角度化為弧度 12 2.2 弧度化為角度計算 13 2.3 坐標(biāo)方位的計算 13 三 空間大地坐標(biāo)與空間直角坐標(biāo)之間的換算 14 3.1 由空間大地坐標(biāo)計算空間直角坐標(biāo) 14 3.2 空間直角坐標(biāo)計算空間大地坐標(biāo) 14 3.3 計算程序與范例 15 四
2、大地主題問題正反計算 17 4.1 高斯平均引數(shù)大地問題解算 17 4.2 白塞爾大地主題解算 24 4.3 嵌套系數(shù)法解算任意距離的大地主題 32 4.4 大地主題解算程序功能介紹 39 五 子午線弧長正反解算 39 5.1 子午線弧長正算 39 5.2 子午線弧長反算 41 六 高斯投影正反算和鄰帶換算 42 6.1 高斯投影正算 42 6.2 高斯投影反算 42 6.3 高斯投影鄰帶換算 43 6.4 高斯投影計算程序及其功能 43 七 平面直角坐標(biāo)系換算 47 7.1 直接參數(shù)法 47 7.2 相似變換(赫爾墨特法) 48 7.3 正形變換法 48
3、7.4 多項式逼近法 49 7.5 算例與程序功能介紹 50 八 測量儀器與計算機間的數(shù)據(jù)通訊 63 8.1 MSComm通訊控件及其屬性簡介 63 8.2 使用MSComm控件設(shè)計通訊程序的步驟 64 8.3 數(shù)據(jù)傳輸?shù)脑O(shè)置 65 8.4 計算機接收數(shù)據(jù)的通訊程序 65 九 平面控制網(wǎng)數(shù)據(jù)處理 67 9.1 平面控制網(wǎng)的概算 67 9.2 誤差方程式與法方程的組成 77 9.3 法方程的求逆與平差計算 82 9.3 精度評定 88 9.4 圖形的繪制 92 十 高程控制網(wǎng)數(shù)據(jù)處理 97 10.1高程控制網(wǎng)的概算 97 10.2 誤差方程的組成 97 10
4、.3 法方程式組成與計算 97 10.4 精度評定 97 第二部分 基本計算與編程 《大地測量學(xué)基礎(chǔ)》教程包含著許多測量基本計算問題,如常見坐標(biāo)系的計算,坐標(biāo)系之間的轉(zhuǎn)換計算,橢球大地計算、高斯投影計算、平面網(wǎng)與高程網(wǎng)平差數(shù)據(jù)處理等。對于上述相關(guān)計算必須要求測繪專業(yè)學(xué)生加以掌握,其目的是通過計算加深學(xué)生對相關(guān)基本理論與方法的理解與掌握,同時有益于學(xué)生能力的培養(yǎng)。 采用計算機編程進行數(shù)據(jù)處理計算,其計算語言較多,比如Basic語言、C語言、Tortran、Pascal、Delphi等,不同語言各自具有不同的特點,為了方便學(xué)生對語言的初步學(xué)習(xí),這里對Visual Basic語言作一
5、簡單介紹,供學(xué)生參考。 一 編程語言簡介及特點 1.1 Visual Basic 概述 Visual Basic(以下簡稱VB)的前身是QBASIC,語言基礎(chǔ)是BASIC。自從微軟推出VB后,VB便成為程序開發(fā)人員的首選工具。它是一套完全獨立的 Windows 開發(fā)系統(tǒng),是可視化、面向?qū)ο?、采用事件?qū)動方式的結(jié)構(gòu)化高級程序設(shè)計語言,利用其事件驅(qū)動的編程機制、新穎易用的可視化工具,并使用 Windows 內(nèi)部應(yīng)用程序接口(API)函數(shù),采用動態(tài)連接庫(DLL)動態(tài)數(shù)據(jù)交換(DDE)、對象的鏈接與嵌入(OLE)以及開放式數(shù)據(jù)庫訪問(ODBC) 等技術(shù),可以高效、快速地建立 Windo
6、ws環(huán)境下功能強大、圖形界面豐富的應(yīng)用軟件系統(tǒng)。據(jù)統(tǒng)計,僅在數(shù)據(jù)庫系統(tǒng)開發(fā)領(lǐng)域,VB就占了90%的份額。VB是基于對象的可視化程序開發(fā)工具,其優(yōu)點在于快捷簡易地建立Windows應(yīng)用程序。按使用人員來分,VB有以下三個版本: 1.標(biāo)準(zhǔn)版 針對一般程序人員,適合普通應(yīng)用軟件的開發(fā)。 2.專業(yè)版 針對專業(yè)程序開發(fā)人員,在標(biāo)準(zhǔn)版的基礎(chǔ)上提供了對數(shù)據(jù)庫和Internet的支持。 3.企業(yè)版 適合于企業(yè)設(shè)計應(yīng)用軟件的程序開發(fā)。 對于一般的設(shè)計者而言,只要充分發(fā)揮自身的想象力,任何人均可在在較短的時間內(nèi),利用VB語言開發(fā)各種自己的實用程序??梢暬幊痰囊粋€突出特點是具備集成開發(fā)環(huán)境,在相應(yīng)的
7、開發(fā)平臺上集成了編輯器,編譯連接工具,控制器箱輔助工具。在VB集成開發(fā)環(huán)境下包括一些主要性能:工具箱,工具欄,工具管理器窗口,屬性窗口,窗體設(shè)計器,代碼編輯窗口等,同時集成環(huán)境的設(shè)置也非常靈活,開發(fā)人員可以按照自己的編程習(xí)慣來加以配置。 1.2 VB的基本概念 對象,是指可以當(dāng)作一個單元的代碼和數(shù)據(jù)的組合,它可以是程序中的窗體或控件,也可以是整個程序。對象有自身的狀態(tài)與方法。 屬性,是指對象具有的性質(zhì),表示對象的狀態(tài)。對象的屬性設(shè)置,可以在程序設(shè)計時在屬性窗口中實現(xiàn),也可以使用代碼設(shè)置屬性的值,其語法為: 對象名_屬性=新值 事件,是指發(fā)生在對象上的事情。Windows應(yīng)
8、用程序?qū)儆凇笆录?qū)動”模式。對象對事件的反應(yīng)又稱為“事件過程”。 事件過程的語法: Sub 對象名_事件() 處理事件的代碼 End Sub 事件驅(qū)動,只有當(dāng)事件發(fā)生時,程序才會運行。在沒有事件的時候,整個程序處于停滯狀態(tài)。VB程序中流動的不是數(shù)據(jù)而是事件,如果說屬性決定了對象的外觀,方法決定了對象的行為,那么事件就決定了對象之間聯(lián)系的手段。 方法,對象本身包含的函數(shù)和過程。方法決定了對象可以進行的動作,方法的內(nèi)容(代碼)是不可見的,當(dāng)我們需要使用某個對象的方法是,只需要使用其格式:對象名.方法 如清除窗體Form1上的內(nèi)容: Form1.cls. 以坐標(biāo)(1
9、920,1300)為圓心,以800為半徑畫園,其方法為: Form1.Circle(1920,1300), 800 過程,指事件發(fā)生時要執(zhí)行的代碼。 面向?qū)ο缶幊蹋?以對象為核心,支持對象的封裝機制,多態(tài)機制和繼承機制(VB不能真正支持繼承機制,故從嚴格意義上講VB不是真正意義上的面向?qū)ο缶幊蹋? 1.3 數(shù)據(jù)類型 VB中有豐富的數(shù)據(jù)類型,這里僅作簡單介紹。 1.?dāng)?shù)字型:包括整型(Integer)、長整型(Long)、單精度(Single)、雙精度(Double)、貨幣型(Currency)等。例如:Dim X As Integer 2. 字符型(String):字符型變
10、量可以存儲可變的字符串。 3. 布爾型(Boolean):一個變量包含簡單的Yes/No、Ture/Fals信息,則可以定義為布爾型變量。例如:Dim temp As Boolean. 4. 日期型(Date):專門用來表示時間的數(shù)值類型,可以有多種表達方式。 5.對象型(Object):對象變量存儲的是對象的地址信息,它本身并不是一個變量,但定義為Object類型的變量可以通過賦值語句指向程序能識別的任何對象。例如: Dim Mydb As Object Set Mydb=OpenDatabase(“C:\VB6\tempDB.mdb”) 這樣對Mydb進行訪問時,
11、實際上就是對Access數(shù)據(jù)庫tempDB.mdb進行訪問。 6: Variant類型:Variant變量類型可以存儲所有的數(shù)據(jù)類型,VB會自動執(zhí)行相應(yīng)的轉(zhuǎn)換。但Variant變量類型會耗用較多的資源,所以不提倡采用。 1.4 標(biāo)準(zhǔn)控件簡介 VB對控件有三種廣義的分類: 1、內(nèi)部控件:內(nèi)部控件就是在工具箱中默認出現(xiàn)的控件,如CommandButton、Frame控件等。內(nèi)部控件總是出現(xiàn)在在工具箱中,不像ActiveX控件和可插入對象那樣可以添加到工具箱中,或從工具箱中加以刪除。 2、ActiveX控件:ActiveX 控件是擴展名為 .ocx 的獨立文件,
12、其中包括各種版本 Visual Basic提供的控件(如 DBGrid、DBCombo、DBList 控件等),另外還有許多第三方提供的 ActiveX 控件。 3、可插入對象:如一個 Excel、Word 工作表對象。因這些對象能添加到工具箱中,故可以把他們當(dāng)作控件使用。其中一些對象還支持自動化(OLE 自動化),使用這些控件就可在 Visual Basic應(yīng)用程序中編程控制另一應(yīng)用程序的對象。 這里僅對其中一些常用控件略加介紹 l CommandButton 按鈕(命令按鈕):按鈕是用戶與應(yīng)用程序交互的最簡便的方法。用戶點擊按鈕,就會調(diào)用 Click 事件過程。將代碼寫入Cl
13、ick 事件過程,執(zhí)行想要執(zhí)行的動作。 l Label 控件(標(biāo)簽):用來在窗體中顯示文字,一本對沒有Caption屬性的控件(如TextBox)起標(biāo)識作用。文本是只讀的,用戶不能修改。 l TextBox 控件(文本框):文本框控件可用來顯示與輸入文本。如果TextBox控件的Locked屬性設(shè)為True, 則用戶不能直接修改文本框的文本內(nèi)容。如果TextBox控件的MultiLine屬性設(shè)為True, 則可顯示多行文本。 l CheckBox 控件(復(fù)選框):復(fù)選框像一個開關(guān),表明一個特定的狀態(tài)是選定(on)還是清除(off)。在應(yīng)用程序中使用 CheckBox 為用戶提供了 Yes
14、/No 或 True/False 的選擇。CheckBox 是獨立工作的,用戶可以同時選擇任意多個復(fù)選框。CheckBox 的 Value 屬性有三個值(0是沒有選中即默認值,1為選中,2 為灰色狀態(tài))。 l OptionButton 控件(選項按鈕):選項按鈕表示給用戶一組或更多的選擇。它不同于 CheckBox控件,選擇一個選項按鈕就會清除該組中的其他按鈕,一組中只有一個選項處于選項狀態(tài)。OptionButton 的 Value 屬性有兩個選項 True/False。 l Frame 控件(框架):Frame 控件用來創(chuàng)建選項按鈕組。如果將一組 OptionButton 選項按鈕放在一
15、個窗體上,那么所有選項按鈕將構(gòu)成一組。如果相創(chuàng)建其他選項按鈕組,就必須將其中一組選項按鈕放在 Frame 控件中。 l ListBox 控件(列表框)和ComboBox 控件(組合框):列表框與組合框是在有限的空間為用戶提供大量選項的有效方法。ComboBox 兼有 TextBox 和 ListBox 兩者的功能,該控件允許用戶通過鍵入文本或選擇列表中的項目來進行選擇。 l HScrollBar 和 VScrollBar 控件(垂直與水平滾動條):滾動條相當(dāng)于一個模糊的輸入裝置,當(dāng)用戶不需要精確設(shè)置數(shù)據(jù)只要大概范圍的時候,使用滾動條控件進行輸入是一種合適的選擇。在早期VB版本中通常把滾動條
16、作為輸出設(shè)備,但目前建議采用滑板控件。 l CommonDialog 控件(通用對話框):通用對話框控件提供了一組標(biāo)準(zhǔn)的操作對話框,可以進行如文件的打開與保存,設(shè)置打印選項,選擇顏色和字體操作等。通過運行 Windows 的幫助引擎控件還能顯示幫助。 l DBGrid 控件(數(shù)據(jù)綁定網(wǎng)格): DBGrid (Data Bound Grid) 控件提供了一般Grid 控件顯示信息,但與 Grid 控件不同,一旦綁定了某個數(shù)據(jù)表,不僅可以將數(shù)據(jù)顯示出來,而且還可以修改每個字段的內(nèi)容。 l MSFLexGrid 控件:MSFLexGrid 控件顯示和操作表格數(shù)據(jù)。對包含字符串和圖片的表格提供了
17、靈活的排序、插入數(shù)據(jù)和格式編排功能。當(dāng)與Data控件綁定時,只顯示只讀數(shù)據(jù)??蓪?MSFLexGrid控件與 TextBox 控件組合,使其控件具有單元編輯功能。 l DriveListBox 控件(驅(qū)動器列表框):驅(qū)動器列表框是下拉式列表框。在默認式在用戶系統(tǒng)上顯示當(dāng)前驅(qū)動器。當(dāng)該控件獲得焦點時,用戶可以輸入任何有效的驅(qū)動器標(biāo)識符,或者從下拉列表中選定新驅(qū)動器。 l DirListBox 控件(目錄列表框):目錄列表框可以顯示當(dāng)前驅(qū)動器的目錄結(jié)構(gòu)。如果把驅(qū)動器列表框的Dirve屬性賦予目錄列表框的Path 屬性,則可以顯示驅(qū)動器列表中選定的驅(qū)動器的目錄:
18、 Dir1.Path=Dirve1.Dirve l FileListBox 控件(文件列表框):文件列表框在運行時顯示由Path屬性指定的包含在目錄中的文件。例如可用下列語句顯示當(dāng)前目錄中的所有文件: File.Path=Dir1.Path l Image 控件:Image 控件用來顯示圖形。它可顯示如位圖、圖標(biāo)、圖元文件、增強型圖元文件、JPEG 或GIF格式的圖形文件。 l Line 控件:直線控件用來在窗體、框架或圖片框中創(chuàng)建簡單的線段。 l PictrueBox 控件:PictrueBox 控件用來顯示圖形。它可顯示如位圖、圖
19、標(biāo)、圖元文件、增強型圖元文件、JPEG 或GIF格式的圖形文件。但PictrueBox 控件包含了Image 控件不具有的功能,如作為其它控件的容器的功能和支持圖形方法的功能。 l Shape 控件:可用形狀控件在窗體、框架或圖片框中創(chuàng)建如矩形、正方形、橢圓形、園形、園角矩形或園角正方形形狀。 l Timer 控件:Timer 控件響應(yīng)時間的流逝。它獨立于用戶,編程用來在一定的時間間隔執(zhí)行某種操作。對于其它的后臺處理該控件非常有用。 除上述標(biāo)準(zhǔn)控件以外,這里僅介紹三種 ActiveX 控件。 l MSComm 控件:MSComm 控件為你的應(yīng)用程序提供了串口通訊功能,允許通過串口發(fā)送和
20、接收數(shù)據(jù)。每個 MSComm 控件都與一個串口對應(yīng),如果在應(yīng)用程序中需要訪問多個串口,就必需有多個MSComm 控件。 l TabStrip 控件: 一個 TabStrip 控件就象一組文件夾上的標(biāo)簽,使用 TabStrip 控件用戶可以在應(yīng)用程序中在窗口或?qū)υ捒蛑械耐粎^(qū)域定義多個數(shù)據(jù)頁面。該控件包含一個或多個 Tab 對象,可以通過 TabStrip 控件的屬性對話框來增加或刪除Tab對象。 l Toolbar 控件:一個Toolbar 控件包含了一個 Button 對象的集合,用來創(chuàng)建與應(yīng)用程序關(guān)聯(lián)的工具條。 對于其它控件的應(yīng)用請參考有關(guān)VB專業(yè)書籍,這里就不一一加以介紹。
21、1.5 過程、函數(shù)和方法 Visual Basic程序由若干子程序構(gòu)成,這些子程序稱為過程、函數(shù)和方法。他們都在代碼窗口中設(shè)計。 1、 過程(Procedure) 完成某種特定功能的一組程序代碼稱為過程。在Visual Basic程序中用關(guān)鍵字 Sub 和 End Sub表示過程的開始和結(jié)束。VB中共有兩種類型的過程。 2 事件過程(Event Procedure) 當(dāng)用戶在窗體上設(shè)計圖形界面時,針對每個對象均有多個事件與其相關(guān)連,每個對象與每個事件都可以構(gòu)成一個事件驅(qū)動程序,也就是說當(dāng)用戶或系統(tǒng)在某一對象上觸發(fā)某種事件時,就會引發(fā)去執(zhí)行相應(yīng)的事件驅(qū)動程序,完成特定的功能。事件過程是
22、依附于每個對象上的,由特定事件引發(fā)的程序,是VB程序的主體。VB在運行時會自動通過事件過程名稱來識別執(zhí)行哪個事件驅(qū)動程序。 Sub 對象名_事件名稱() 處理事件的代碼 End Sub 2 通用過程(General Procedure) 當(dāng)多個事件過程都需要完成某種公共的功能,如完成一些公共的數(shù)據(jù)計算,或?qū)δ承┳兞窟M行共同的操作,那么用戶可自己建立通用過程,編寫公共代碼模塊,供其他程序調(diào)用。通用模塊的聲明如下: Sub 過程名稱(參數(shù)1,參數(shù)2,…) 程序語句代碼 End Sub 2、 函數(shù)(Funtion)
23、 Visual Basic中包含兩大類函數(shù);一類是VB本身提供的已被封裝好的通用函數(shù),它不需要用戶去創(chuàng)建和聲明及編程,只需要直接調(diào)用;另一類是用戶自定義函數(shù)。 ? 常用函數(shù):包括數(shù)學(xué)函數(shù)、字符串函數(shù)、日期函數(shù)、類型轉(zhuǎn)換函數(shù)。 ① 數(shù)學(xué)函數(shù) 函數(shù)表達式 函數(shù)功能說明 Abs( 表達式) 絕對值函數(shù)。 Int(表達式) 取整函數(shù), 將表達式的值轉(zhuǎn)換為小于或等于該表達式的最大整數(shù)。 Fix(表達式) 取整函數(shù), 將表達式的值的小數(shù)部分截去,直接取整數(shù)。 Atn(表達式) 反正切函數(shù)。 Sin(表達式) 正弦函數(shù)。 Cos(表達式) 余弦函數(shù)。 Tan(表達式) 正
24、切函數(shù)。 Sqr(表達式) 平方根函數(shù)。 Exp(表達式) 以e為底的指數(shù)函數(shù)。 Sgn(表達式) 符號函數(shù),表達式值為正數(shù)、零、負數(shù),函數(shù)值分別為1、0、-1。 Rnd(表達式) 隨機數(shù)生成函數(shù),返回0與1之間的單精度的隨機數(shù)。 ②字符串函數(shù) 函數(shù)表達式 函數(shù)功能說明 函數(shù)表達式 功能 Len(字符串) 字符串長度函數(shù) Str(表達式) 字符串函數(shù) Instr 查找字符函數(shù) Lcase$(字符串) 將字符串的字符轉(zhuǎn)換成小寫字母。 Ucase$(字符串) 將字符串的字符轉(zhuǎn)換成大寫字母。 Left$(字符串,表達式) 左截取字符函數(shù)
25、 Right$(字符串,表達式) 右截取字符函數(shù) Mid$(字符串,起始位置,長度) 從字符串的起始位置截取指定的長度的字符串。 LTrim$(字符串) 將字符串的左邊空格去掉返回字符串。 RTrim$(字符串) 將字符串的右邊空格去掉返回字符串。 Trim$(字符串) 將字符串的前后空格刪除返回字符串。 InStr( ) 字符串匹配函數(shù) StrComp() 字符串比較函數(shù) Space(表達式) 返回由數(shù)值指定的一定數(shù)目的空格字符串。 ② 日期函數(shù) 函數(shù)表達式 函數(shù)功能說明 Year(日期表達式) 日期表達式為任意整數(shù)或字符型表達式,返回值為年份。 M
26、onth(日期表達式) 日期表達式為任意整數(shù)或字符型表達式,返回值為月份。 Weekday(日期表達式) 日期表達式為任意整數(shù)或字符型表達式,返回值為星期。 Day(日期表達式) 日期表達式為任意整數(shù)或字符型表達式,返回值為月份的天數(shù)。 Hour(日期表達式) 表達日期表達式對應(yīng)天中的小時。 Minute(日期表達式) 表示指定時間的分鐘數(shù)。 Second(日期表達式) 表示指定時間的秒數(shù)。 Now 返回計算系統(tǒng)的日期和時間。 Data$ 返回當(dāng)前系統(tǒng)日期,以字符串格式:月-日-年或月/日/年表示。 Time$ 返回當(dāng)前系統(tǒng)日期,以字符串格式:時:分:秒。
27、 ④轉(zhuǎn)換函數(shù)及其它 函數(shù)表達式 函數(shù)功能說明 函數(shù)表達式 功能 Str$(數(shù)值表達式) 字符串函數(shù),將數(shù)值表達式轉(zhuǎn)換成字符串。 Val(字符串) 將文本字符串變?yōu)閿?shù)值型數(shù)據(jù)。 Asc(字符) 返回字符的ASCII碼值。 Chr$(整數(shù)) 將0-255之間的整數(shù)轉(zhuǎn)換為對應(yīng)的ASCII字符。 EOF(文件號) 讀取文件進程函數(shù),讀到文件末尾,則其函數(shù)值為 True或1。 Error(錯誤代碼) 錯誤響應(yīng)函數(shù),返回錯誤代碼所對應(yīng)的錯誤信息字符串。 Format(變量, 格式字符串) 輸出格式函數(shù)。 RGB(R,G,B) 顏色定義函數(shù), R、G、B為數(shù)值表達式
28、。 Sell(字符串) 可執(zhí)行程序運行函數(shù),字符串:為執(zhí)行程序的路徑。 Tab(整數(shù)) 文件輸出定位函數(shù)。 ? 用戶自定義函數(shù)(Funtion Procedure) 其用途與建立方法類似于通用過程,只是通用過程是單方向調(diào)用,只有參數(shù)傳給過程,而沒有參數(shù)值的返回;而用戶自定義函數(shù)是雙向的,調(diào)用時參數(shù)傳入函數(shù),函數(shù)執(zhí)行完畢后返回其函數(shù)值。故用戶自定義函數(shù)像變量一樣有自己的類型,它決定了函數(shù)返回值的類型。其描述為 Funtion 函數(shù)名稱(參數(shù)1,參數(shù)2,…)As 類型名稱 程序語句代碼 End Funtion Funtion 函
29、數(shù)名稱(參數(shù)1,參數(shù)2,…)As 類型名稱 程序語句代碼1 Exit Funtion 程序語句代碼2 End Funtion 3、 方法(Method) 面向?qū)ο蟮某绦蛟O(shè)計語言為程序設(shè)計人員提供了一種特殊的過程和函數(shù)稱為方法。在VB中一些通用的函數(shù)與過程編好并封裝起來,作為方法供用戶直接使用。方法是針對特定對象執(zhí)行一項任務(wù)的過程或函數(shù)。如在早期的 Basic 語言中,往屏幕上顯示信息和像打印機打印該信息,其語句是有區(qū)別的,即用 PRINT 語句表示像屏幕打印,而 LPRINT才是
30、向打印機打印某信息,不同的對象完成同一任務(wù)其命令語句是不同的。而 VB 語言將打印功能封裝成一特殊的 Print 方法,向不同的對象上打印信息直接指明對象,調(diào)用同一方法即可完成。方法調(diào)用的語法為: 對象名稱.方法 1.6 應(yīng)用程序的設(shè)計 1、設(shè)計應(yīng)用程序的界面 2 設(shè)計一個窗體 窗體對象是VB應(yīng)用程序設(shè)計的基本構(gòu)造模塊,是運行應(yīng)用程序時與用戶交互操作的實際窗口。窗體有自己的屬性、事件和方法。設(shè)計窗體的第一步是設(shè)置它的屬性,窗體的屬性很多,它不僅控制著窗體的外觀,還控制著窗體的位置、行為等其它方面。屬性可以在設(shè)計程序時在“屬性”
31、窗體中設(shè)置,也可以在程序運行時由代碼來實現(xiàn)。窗體的屬性如:BorderStyle、Caption 、Height、 Left MaxButton、MinButton、Moveable、Name、ShowInTaskar、WindowState、Icon等。 2 向窗體上添加控件 根據(jù)自身的需要在窗體上加不同的控件,并使用代碼控制來完成不同的任務(wù)。向窗體上添加控件要使用控件工具箱和窗體編輯器。實用工具箱向窗體添加控件有兩種途徑:其一在工具箱中的控件按鈕上雙擊,則窗體的中央會出現(xiàn)一個相應(yīng)的控件;其二在工具箱中的控件按鈕上單擊,則該按鈕會凹下去,鼠標(biāo)指針變?yōu)椋螤睿缓笤诖绑w的合適位置按下鼠標(biāo)左
32、鍵即可。要刪除不合適的控件只要選中然后按下DEL鍵即可。 2 設(shè)置啟動窗體 除了窗體的細節(jié)設(shè)計以外,還要考慮應(yīng)用程序的開始與結(jié)束。每個應(yīng)用程序都有自己的入口及開始執(zhí)行的地方。這里可以使用兩種方法來加以實現(xiàn)。其一設(shè)置啟動窗體,從“工程”菜單中選擇“工程屬性”命令,在顯示對話框中選擇“通用”選項卡,在“啟動對象”列表中選取新啟動的窗體,單擊“確認”按鈕即可。其二采用不使用啟用窗體開始運行程序的方法,可在標(biāo)準(zhǔn)模塊中創(chuàng)建一個名為 Main 的過程,如 Sub Main( ) 過程代碼
33、 End If Main 過程必須在一個標(biāo)準(zhǔn)模塊內(nèi),不能在窗體模塊內(nèi)。要將 Sub Main 過程設(shè)為啟動對象,可從“工程”菜單中選擇“工程屬性”命令,在顯示對話框中選擇“通用”選項卡,在“啟動對象”列表中選定“Sub Main”,單擊“確認”按鈕即可。 2 使用函數(shù)生成的對話框 在應(yīng)用程序中,可能會需要顯示一些暫時性的簡短的錯誤或警告信息,可以引起用戶的注意。用戶可以設(shè)計一個窗體來完成這個任務(wù),但最簡便的方法是使用 MsgBox 函數(shù)來完成則更直接、更為方便。MsgBox 函數(shù)可以用來在對話框中顯示消息,并等待用戶單擊按鈕,然后返回一個整形的
34、值,讓程序了解用戶單擊的是哪個按鈕。MsgBox 函數(shù)的語法為: MsgBox( prompt [,buttons] [,title] [,helpfile,context]) 另外可采用 InputBox 對話框?qū)崿F(xiàn)一些簡單的數(shù)據(jù)或信息的輸入,并返回包含文本框的內(nèi)容的字符串,InputBox 對話框的語法為: InputBox(prompt [,title] [,default] [,xpos] [,ypos][,helpfile,context]) 2、編寫程序代碼 l 賦值語句 VB的程序代碼由語句、常數(shù)和聲明部分組成。其中賦值語句使用頻率最高,其
35、語法為: 對象屬性或變量=表達式 l 程序的書寫規(guī)則 注釋,注釋語句可用來說明編寫的某段代碼或聲明某個變量的目的,以方便以后閱讀這些源代碼。要添加注釋,使用“’”符號作為注釋文字的開頭。 斷行,如果一個很長,打印和閱讀恨不方便,可采用續(xù)行符“ -”(一空格后緊跟一下劃線)將長語句分成多行。 將多語句寫在一行,VB通常是一行一條語句,如果在一行中寫下多條語句,可使用“:”作為分隔符號。 l 變量 變量的命名:必須以字母開頭,不能在變量名中出現(xiàn) . 、空格或嵌入!,#,$,%,&等符號,變量名的長度不得超過255個字符。 變量的聲明:變量的
36、聲明語句為 Dim 變量名 As 類型。 變量的作用范圍:如果同一窗體的所有過程分享同一變量,就應(yīng)該把它定義為模塊級變量,其方法是在窗體模塊的聲明段中定義該變量。單擊窗體模塊代碼窗口的對象列表框,從中選擇“通用”選項即可。在窗體模塊的聲明段聲明變量,在除了使用 Dim 關(guān)鍵字外,還可以使用Public 和Private 關(guān)鍵字。用Public 關(guān)鍵字聲明模塊級變量,變量在整個應(yīng)用程序中由效,稱為公共變量或全局變量,其它模塊中的過程也可以使用這個變量。用Private 關(guān)鍵字聲明模塊級變量,本窗體中的過程可以訪問它,但其它模塊中的過程不能使用這個變量。與模塊級變量相對,在過程中聲明的變量被
37、稱為局部變量,局部變量只能在過程執(zhí)行期間有效,其它代碼不能使用。如果過程結(jié)束以后還需保持過程中變量的值,可使用 Static 關(guān)鍵字聲明變量為靜態(tài)變量。 不同作用范圍的3種變量的聲明方式 作用范圍 局部變量 模塊級變量 公共變量 聲明方式 Dim, Static Dim, Private Public 變量聲明的位置 過程中 模塊的聲明段中 模塊的聲明段中 是否被本模塊中其它過程訪問 × √ √ 能否被其它模塊訪問 × × √ l 常數(shù) 在應(yīng)用程序之中,往往要
38、用到一些不變的量即常量,如pi=3.11415926.有在VB中,聲明常數(shù)的語法為 [Public|Private] Const 常數(shù)名[ As 類型]=表達式 l 運算符號 算術(shù)運算:加 +、減 -、乘 *、浮點數(shù)除法 /、整數(shù)除法 \、冪運算 ^、求余數(shù) MOD。 比較運算:大于 >、小于 <、大于或等于 >= 、小于或等于 <=、等于 = 、不等于 <>。 連接運算:+ 、& 。 邏輯運算:邏輯非 Not 、邏輯與 And、邏輯或 Or、邏輯異或 Xor、邏輯等 Eqv、蕰含 Imp。 l 流程控制語句 Visual Basic支持的條件判定結(jié)構(gòu)有三種: If…
39、Then 結(jié)構(gòu):If 條件 Then 語句 或 If 條件 Then 若干語句 End if If…Then…Else 結(jié)構(gòu): If 條件1 Then 若干語句1 [Else If 條件2 Then 若干語句2 ] Else 若干語句3 End if Select Case 結(jié)構(gòu): Sel
40、ect Case 條件 Case 表達式1 若干語句1 Case 表達式2 若干語句2 : : Case else 若干語句n End Select Visual Basic支持的條件循環(huán)控制: D0 While 循環(huán)條件 若干語句 [Exit Do] Loop D0 若干語句 Loop While 循環(huán)條件 For 計算器 = 初值 To 終止值 Step 增量 若干語句
41、 Next 計算器 1.7 簡單的編程實例 運行VB6,新建一個標(biāo)準(zhǔn)的EXE工程,從工具箱中雙擊 CommandButton 控件,在主窗體 Form1上設(shè)置兩個命令按鈕 Command1 與 Command2,雙擊Text文本控件,在主窗體 Form1上設(shè)置三個文本控件,其 Name 屬性依次為 Text1、Text2、Text3,最后拖動一個標(biāo)簽 Label 控件放在主窗體的上中間位置。雙擊窗體 Form1,打開代碼窗口,輸入以下代碼 Private Sub Command1_click() ’ 單擊按鈕事件 Text3.text=Te
42、xt1.text+Text2.text End sub Private Sub Command2_click()’ 單擊按鈕事件 End ’ 程序運行結(jié)束退出 End sub Private Sub Form_load( ) ’ 窗體啟動調(diào)入內(nèi)存 Label1.Caption=“大地測量學(xué)基礎(chǔ)實驗” Command1.Caption=“計算” Command2.Caption=“退出” Text1.text=“”:Text2.text=“ “:Text3.text=“”’給文本框賦初值 Text1.SetFocus’ Text1文本框獲得焦點 End sub 然后運行,
43、在Text1文本框與Text2文本框中輸入數(shù)據(jù),單擊計算按鈕,在Text3文本框中顯示計算結(jié)果。 一個較好的應(yīng)用程序必須要有好的用戶界面,在大多應(yīng)用程序中大多包含著許多通用的東西,如工具欄、狀態(tài)欄、工具提示、上下文菜單、幫助以及選項卡對話框等。VB 具有把所有這些添加到應(yīng)用程序中的能力,因此應(yīng)該很好的學(xué)習(xí)并加以掌握運用。 二 測量中幾種常用的計算 角度化為弧度、弧度化為角度以及坐標(biāo)方位角的計算在測量數(shù)據(jù)處理中是經(jīng)常遇到的計算問題。也是最基本的計算問題。 2.1 角度化為弧度 將度、分、秒形式的角度angle化為弧度,采用函數(shù)功能來實現(xiàn),其函數(shù)值為返回的弧度值。其數(shù)據(jù)格式
44、為: 參數(shù)angle的整數(shù)為表示度,小數(shù)點后兩位表示分, 小數(shù)點后第三位開始表示秒, 如180度34分54.23秒, 即 angle=180.345423。 Function Radian(ByVal angle As Double) As Double Dim mm As Double, a As Double a = Abs(xx) a = a + 0.0000001 dd% = Int(a) ii% = Int((a - dd%) * 100) mm = (a - dd%) * 100 - ii% mm = dd% + ii% / 60 + mm / 36 Radian
45、 = pi * mm / 180 Radian = Sgn(angle) * Radian End Function 2.2 弧度化為角度計算 將弧度值radian 化為度、分、秒的角度形式,采用函數(shù)功能實現(xiàn),計算返回角度值。其數(shù)據(jù)格式為: 函數(shù)值qdms的整數(shù)為表示度,小數(shù)點后兩位表示分, 小數(shù)點后第三位開始表示秒, 如160度14分23.03秒, 即qdms=160.142303。 Function qdms(ByVal radian As Double) As Double Dim a1, xx , second As Double a1 = Abs(r
46、adian) a1 = a1 * 180 / pi degree% = Int(a1) xx = (a1 - degree%) * 60 minute% = Int(xx) second = (xx - minute%) * 60 qdms = degree% + minute% / 100 + second / 10000 qdms = Sgn(radian) * qdms End Function 2.3 坐標(biāo)方位的計算 已知點號為和兩點的平面坐標(biāo)、、、,求和兩點的坐標(biāo)方位角, 先計算,在按如下計算公式如下: Function
47、qiua(ByVal px As Double, ByVal py As Double) As Double Dim PZ As Double If px = 0 Then PZ = pi / 2# If py < 0 Then PZ = pi * 1.5 Else PZ = Atn(py / px) If px < 0 Then PZ = PZ + pi If py < 0 And px > 0 Then PZ = PZ + pi * 2 End If qiua = PZ
48、End Function 三 空間大地坐標(biāo)與空間直角坐標(biāo)之間的換算 3.1 由空間大地坐標(biāo)計算空間直角坐標(biāo) 已知橢球、,大地坐標(biāo)直角坐標(biāo)X、Y、Z,求大地坐標(biāo)B、L、H,計算公式如下 式中 。 3.2 空間直角坐標(biāo)計算空間大地坐標(biāo) 已知橢球、,大地坐標(biāo)直角坐標(biāo)X、Y、Z,求大地坐標(biāo)B、L、H。 1、 直接解法計算公式(參見熊介編著:《橢球大地測量學(xué)》) l 計算輔助量 l 計算大地經(jīng)度 l 計算大地緯度
49、 l 計算大地高 2、 迭代解法計算公式匯編 l 計算輔助量 ,, l 計算大地緯度 l 計算大地緯度 令 , ,
50、 迭代循環(huán)計算 直到滿足,以保證的計算精度至 l 計算大地高 3.3 計算程序與范例 空間大地坐標(biāo)與空間直角坐標(biāo)之間的計算程序界面如下圖所示。在窗體XYZ-BLH上設(shè)置3個Frame控件,在 Frame1 內(nèi)放置3個選擇按鈕 option1(0)、option1(1)、option(2),控制橢球參數(shù);在Frame2 內(nèi)放置2個選擇按鈕 option2(0) 與 option2(1)
51、,控制計算方法;在Frame3 內(nèi)放置1個MSFlexGrid 控件,4個 CommandButton 命令按鈕,其 Caption 屬性分別為文件、添加、刪除、保存,其功能主要用來編輯數(shù)據(jù)與保存數(shù)據(jù);在窗體 XYZ-BLH上 設(shè)置3個 CommandButton 命令按鈕,其 Caption 屬性分別為計算、顯示、退出,其功能為計算、用 Word 顯示計算結(jié)果、退出。其計算界面直觀、方便。 計算范例1: 已知數(shù)據(jù) , , 。 計算結(jié)果 ,,。 計算范例2: 已知數(shù)據(jù) , ,。 計算結(jié)果 , ,。 圖
52、3-1 空間大地坐標(biāo)與空間直角坐標(biāo)換算程序界面 上述計算采用直接算法,計算子程序如下: Sub BLH_XYZ(b, l, H, x, y, Z, ByVal K As Integer) EPS = e2 / (1# - e2) BB = a / Sqr(1# + EPS) Select Case K Case 1 p = Sqr(x ^ 2 + y ^ 2) UO = Atn(Z * a / p / BB) b = Atn((Z + EPS * BB * Sin(UO) ^ 3) / (p - e2 * a *
53、 Cos(UO) ^ 3)) p1 = Sqr(1# + (1# - e2) * Tan(b) ^ 2) b = Atn(Z / p + a * e2 * Tan(b) / p / p1) l = Atn(y / x) If b < 0# Then b = b + 2# * pi If l < 0# Then l = l + 2# * pi U = Atn(BB / a * Tan(b)) H = Sqr((p - a * Cos(U)) ^
54、2 + (Z - BB * Sin(U)) ^ 2) If (p - a * Cos(U)) < 0# Then H = -H Case 2 RN = a / Sqr(1# - e2 * Sin(b) * Sin(b)) x = (RN + H) * Cos(b) * Cos(l) y = (RN + H) * Cos(b) * Sin(l) Z = (RN * (1# - e2) + H) * Sin(b) End Select End Sub 四 大地
55、主題問題正反計算 參考橢球面是大地測量計算的基準(zhǔn)面。大地坐標(biāo)是橢球面上的基本坐標(biāo)系,根據(jù)大地測量的觀測成果(如距離與方向),從大地原點出發(fā),逐點計算在橢球面上的大地坐標(biāo);或根據(jù)兩點的大地坐標(biāo),計算它們之間的大地線長度和大地方位角,這類計算稱為大地問題解算,又叫大地主題解算。大地問題解算的用途是多方面的,隨著現(xiàn)代空間技術(shù)和航空航天、航海等領(lǐng)域的發(fā)展,大地問題解算(尤其是大地反算)有著更為重要的作用。鑒于各種用途與要求不同,產(chǎn)生了不同的大地解算方法與公式。 橢球面上大地坐標(biāo)的解算比平面坐標(biāo)的解算要復(fù)雜得多,正是由于這種復(fù)雜性導(dǎo)致了大地問題解算公式的多樣化,其解算方法多大幾十種。若按解
56、算的距離來分類,一般分為短距離(400公里以內(nèi)),中距離(400~1000公里)和長距離(1000~2000公里);若按解法分類可分為直接解法和間接解法;若按解算精度來分類,又可分為精密公式與近似公式等。這里介紹三種方法即高斯平均引數(shù)法、白塞爾方法與嵌套系數(shù)法的計算過程、步驟與計算程序。 4.1 高斯平均引數(shù)大地問題解算 1、高斯平均引數(shù)正算計算公式(km) 1)計算輔助量公式 2) 計算、、 的初值 3)計算、、 4)再次計算、、 5)重
57、復(fù)計算(3),直到計算滿足 如按弧度計算可取,按角度計算可取。 6)計算、、 的最后值 如果計算距離小于70km時,上述計算公式中的可以略去,得到如下簡化計算方法: 式中 編程計算步驟如下: 1)計算輔助量 2) 計算、、 的初值 3)計算兩點的平均值 4)迭代計算、、 5)計算輔
58、助量 6)計算、、 的終值 7)重復(fù)計算(3)-(6)步,直到計算滿足 如按弧度計算可取,按角度計算可取。 8)、計算、、 的最后值 2、高斯平均引數(shù)反算公式(km) 1)、 2)、 式中各系數(shù) 注:這里對教材公式中相應(yīng)系數(shù)進行了修正與改進。 3)、 4)、
59、 5)、 或 , 3、算例與計算程序 1)、正算范例 算例 例1( 30km ) 例2(50 km) 例3(80 km) 例4( 400 km) 參考橢球 克拉索夫斯基 克拉索夫斯基 克拉索夫斯基 克拉索夫斯基 已 知 數(shù) 據(jù) m m m m 參 考 值 注:例1取自朱華統(tǒng):《橢球大地計算》P97算例;例2取自陳鍵、晁定波主編《橢球大地測量學(xué)》P90面的數(shù)據(jù);例3、例4取自趙文光著《橢球
60、大地測量學(xué)》。 大地主題正算 ================== 計算方法: 高斯平均引數(shù)法 ( S< 200公里 ) 參考橢球:克拉索夫斯基橢球 N01 NO2 B1/B2 L1/L2 A12/A21 S12 1 2 3
61、0.29582043 120.05402184 247.2750428 28230.9350 30.24058365 119.49233864 67.19353743 3 4 40.02356784 130.10122676 328.12367500 48741.7580 40.24574365 129.52031587 148.00533348 5 6 40.02356784 130.101226
62、76 1.49430000 80000.0000 40.45479037 130.12011050 181.50535462 7 8 40.02356784 115.10000000 36.12010300 414306.5380 *43.00558744 118.10030113 218.11268087 2)、反算范例 算例 例1( 30km ) 例2(50 km) 例3(80 km) 例4( 410 km) 參考橢球 克
63、拉索夫斯基 貝塞爾橢球 克拉索夫斯基 克拉索夫斯基 已 知 數(shù) 據(jù) m 參 考 值 注:例1取自朱華統(tǒng):《橢球大地計算》P100算例;例2自陳鍵、晁定波主編《橢球大地測量學(xué)》P98面的數(shù)據(jù);例3、例4取自趙文光著《橢球大地測量學(xué)》。 大地主題反算
64、 ================== 計算方法: 高斯平均引數(shù)法 ( S< 200公里 ) 參考橢球:克拉索夫斯基橢球 N01 NO2 B1/B2 L1/L2 A12/A21 S12 1 2 30.29582043 120.05402184 247.27504227 28230.9379 30.24058354 119.49233
65、853 67.19353680 30.24058354 119.49233853 67.19354031 *3 4 53.50028809 10.12041772 25.16319782 47652.5967 54.13152891 10.30472430 205.31408796 5 6 40.02356784 130.10122627 1.49432983 80000
66、.0044 40.45479027 130.12011040 181.50538462 *7 8 40.02356784 115.10000000 36.12012391 414306.5531 43.00558784 118.10030000 218.11265892 注:例2參考橢球為貝塞爾橢球;例4計算結(jié)果未能滿足計算精度。 3)、高斯平均引數(shù)正反算計算程序 Sub DDZT_GS(B1 As Double, L1 As Double, A1 As Double, S12 As Double, B2 As Double, L2 As Double, A2 As Double, k As Integer) eps = e2 / (1# - e2) Select Case k Case 1 t1 = Sin(B1): t2 = Cos(B1) NB = a / Sqr
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中語文作文素材:30篇文學(xué)名著開場白
- 初中語文答題技巧:現(xiàn)代文閱讀-說明文閱讀知識點總結(jié)
- 初中語文作文十大??荚掝}+素材
- 初中語文作文素材:描寫冬天的好詞、好句、好段總結(jié)
- 初中語文必考名著總結(jié)
- 初中語文作文常見主題總結(jié)
- 初中語文考試??济偨Y(jié)
- 初中語文必考50篇古詩文默寫
- 初中語文易錯易混詞總結(jié)
- 初中語文228條文學(xué)常識
- 初中語文作文素材:30組可以用古詩詞當(dāng)作文標(biāo)題
- 初中語文古代文化常識七大類別總結(jié)
- 初中語文作文素材:100個文藝韻味小短句
- 初中語文閱讀理解33套答題公式
- 初中語文228條文學(xué)常識總結(jié)