




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、大學本科學生畢業設計(論文)測量平差程序設計摘 要測量平差是測繪類專業的一門重要的專業基礎課程,是用于觀測數據處理的一門應用數學 。但是因為其計算量比較大,這變使大家在學習和使用的時候感覺十分頭疼。雖然有很多簡化了的平差算法,比如高斯約化法, 但是這些算法一方面會影響計算精度,另一方面也不能有效的減少計算量。平差計算是利用最小二乘原理消除觀測值與起算數據之間的矛盾,求出各待定元素的平差值并評定精度。而在經典測量平差中,主要研究四種平差模型方程(條件平差、間接平差、附有未知參數的條件平差和附有限制條件的間接平差)的列立和求解,其牽涉到大量的矩陣運算,傳統的人工計算工作量很大。隨著計算機的出現,矩
2、陣運算就變得輕松,而且計算機的運行速度快,精度高,特別是對于具有大量矩陣運算,計算機輕松解決。前提是要編好相應的程序代碼。本文運用visual basic語言編制了一個平差軟件,主要對水準網和附合導線進行了平差的編制和軟件程序界面的設計,實現的功能主要有對水準網數據和附合導線數據的平差計算,當然為了平差后能使用數據,本軟件還設計了數據輸出的功能,使界面更友好,方便用戶使用。 關鍵詞:水準網間接平差,visual basic ,附合導線條件平差,visual basic界面設計(GUI)ABSTRACTThe measurement adjustment is a professional ba
3、sic course of Geomatics engineer, It is used to process the observation data of Applied Mathematics, which is characterized by the large amount of calculation, the process of learning and the using become very complex. Although many adjustment algorithm methods are simplified such as Gauss reduction
4、 method, but on the one hand these algorithms affect the accuracy of calculation, on the other hand they cannot effectively reduce the amount of calculation. Adjustment calculation is the principle of least squares to eliminate the contradiction between the observed values and the initial data, calc
5、ulating the adjusted values of all pending elements and assessing accuracy. Classical surveying adjustment mainly contains four adjustment model equations (conditions adjustment, indirect adjustment, accompanied by the unknown parameters condition adjustment and accompanied by restrictions in indire
6、ct adjustment)of column and solving, it involves large number of matrix operations, the calculation workload of traditional manual measurement data processing method requires the preparation of a specific treatment program matrix operations, so the procedures are complicated and difficult. The emerg
7、ence of the computer makes matrix operations become easy, and the computer is running fast and at high precision, to the large number of matrix operations, under the premise of the compiled code, the computer can easily solve many problems. In this paper, an adjustment software is used by visual bas
8、ic language of the leveling network and connecting traverse adjustment of the preparation and program interface design to achieve the main function of the leveling network data and wire data adjustment calculation. The software also design the function of the data output, it is friendly and convenie
9、nt for users to operate.Key words: parameter adjustment of leveling network ,Visual basic, Visual basic interface design(GUI)目 錄中文摘要ABSTRACT1引言1 1.1現狀分析1 1.2目的及意義11.3研究內容22 Visual Basic 編程語言概述3 2.1 Visual Basic簡介3 2.1.1 Visual Basic的發展32.1.2 VB的功能特點32.2 Visual Basic簡介4 2.2.1 操作界面簡介42.2.2 幾個常用控件介紹72.
10、2.3 VB編程語言書寫和變量聲明72.2.4 矩陣在VB中的表述72.2.5 VB中矩陣運算82.2.6 程序控制語句112.2.7 控件數組123 平差計算基本理論13 3.1 條件平差13 3.1.1 條件平差原理133.1.2 條件平差程序設計流程圖153.2 間接平差163.2.1 間接平差原理163.2.2 間接平差程序設計流程圖183.2 附合導線平差計算193.3.1 附合導線平差原理293.2.2 附合導線平差程序設計流程圖214 平差軟件界面設計23 4.1平差軟件整體展示23 4.1.1 登錄界面234.1.2平差軟件主界面234.1.3水準網間接平差界面244.1.4附
11、合導線平差界面254.2平差軟件界面設計25 4.2.1 Visual basic(GUI)簡介254.2.2界面設計264.3平差軟件界面設計26 4.3.1 水準網間接平差界面設計264.3.2附合導線平差界面設計285 平差軟件程序設計30 5.1水準網間接平差30 5.1.1 數據輸入305.1.2 軟件的使用315.1.3 程序代碼325.2附合導線平差34 5.2.1 數據輸入345.2.2 軟件的使用355.2.3 程序代碼366 算例演算44 6.1水準網間接平差44 6.2附合導線條件平差457結論48參考文獻491 引言1.1 現狀分析Visual Basic是一種由微軟公
12、司開發的包含協助開發環境的事件驅動編程語言。從任何標準來說,VB都是世界上使用人數最多的語言不僅是盛贊VB的開發者還是抱怨VB的開發者的數量。它源自于BASIC編程語言。VB擁有圖形用戶界面(GUI)和快速應用程序開發(RAD)系統,可以輕易的使用DAO、RDO、ADO連接數據庫,或者輕松的創建ActiveX控件。程序員可以輕松的使用VB提供的組件快速建立一個應用程序。 水準網是建立高程控制的一種常規方法。為了提高水準測量的效率,使得水準測量的內外業一體化,提高數據處理速度、精度和可靠性,外業觀測上需采用更加科學、快速的作業模式,內業數據處理上需采用簡便、可靠的數據處理軟件。隨著測繪儀器和計算
13、機軟件業的發展,目前市場上已出現多種控制網平差計算軟件,不過有些平差軟件界面復雜,難懂,需要一段時間的學習才能使用;還有就是這些軟件,要么定權不合理,要么就價格昂貴。比如常用的平差易軟件就是在Windows系統下用VC 開發的控制測量數據處理軟件,就存在著權分配不合理,以致改正數過大,平差結果偏離真實值的問題。雖然發現了問題,然而由于VC語言的局限和作為收費軟件,其源代碼不公開等緣故,致使此類問題久久不能得到解決。1.2 目的及意義Visual Basic編程語言是一種可視化編程語言,通過近幾年的發展,它已成為一種專業化的開發語言和環境。其依托于現代pc機的高性能,以計算機性能換取編程的簡便。
14、它把科學計算、結果的可視化和編程集中在一個可視化的環境中,不僅功能強,而且便于輸入數據,易于掌握和使用。測量平差是測繪類專業的一門重要的專業基礎課程,是用于處理觀測數據的一門應用數學。平差計算是利用最小二乘原理消除觀測值與起算數據之間的矛盾,求出各待定元素的平差值并評定精度。而在經典測量平差中,主要研究四種平差模型方程(條件平差、間接平差、附有未知參數的條件平差和附有限制條件的間接平差)的列立和求解,其牽涉到大量的矩陣運算,傳統的人工計算工作量很大,已往的測量數據處理方法需要編制特定的處理矩陣運算的程序,而且程序復雜,難度大。隨著計算機的出現,矩陣運算就變得輕松,而且計算機的運行速度快,精度高
15、,特別是對于具有大量矩陣運算,計算機輕松解決。前提是要編好相應的程序代碼。本文將分析經典測量平差中的條件平差模型和間接平差模型的特點,重點運用Visual Basic編程語言編寫水準網間接平差和單一附合導線的平差程序軟件。用Visual Basic語言編寫出經典平差模型程序,運用到教學過程中使各種模型的公式推導與實際例題相結合,對于提高教學質量及加強學生對于誤差理論與測量平差基礎課程的理解具有重要的意義;對于我們即將走上工作崗位的同學來說,它將為我們處理各種實際工程的計算提供了極大的便利,也可以為今后更多的工程應用編程打下基礎,提高工作效率和質量。同時也使我們在編程方面有更為深入的理解和掌握,
16、對我們以后工作很有幫助,比如可編程計算器等測量輔助工具,這將會提高我們的工作效率。1.3 研究內容本設計主要運用Visual Basic編程語言,編制控制測量中水準網和單一導線的平差程序軟件。實現的功能包括:1.水準網間接平差的平差值,在最小二乘法準則()要求下求出誤差方程中的待定參數。2.單一導線和導線網的近似坐標推算:近似坐標的推算不僅是后續工作的基礎,為條件方程系數陣的求取做準備,更能在此基礎上計算坐標閉合差,檢驗外業成果的好壞。3. Visual Basic GUI界面設計:對于用戶來說,程序可視化,同時又易懂,便于輸入數據。4.平差數據結果輸出:便于用戶使用和查看。5.將幾個平差程序
17、集中在一個系統中,并生成exe可執行程序,在windows環境下通用,無需安裝。因此,本平差軟件讓你的使用絕對省心。對每一個功能的實現,其后都附有應的算例。2 Visual Basic編程語言概述2.1 Visual Basic簡介2.1.1 Visual Basic的發展Visual Basic (簡稱VB)是美國微軟公司推出的windows環境下的軟件開發工具,使用VB可以既快又簡單地開發windows應用軟件。Visual是指開發圖形用戶界面(GUI)的方法。Visual的意思是“視覺的”或“可視的”,也就是直觀的編程方法。在VB中引入了控件的概念,如各種各樣的按鈕、文本框、復選框等,V
18、B把這些控件模式化,并且每個控件都由若干屬性來控制其外觀、工作方法。這樣,采用方法無需編寫大量代碼去描述界面元素的外觀和位置,而只要把預先建立的控件加到屏幕上,就像使用“畫圖”之類的繪圖程序,通過選擇畫圖工具來畫圖一樣,可視化程序設計語言除了提供常規的編程功能外,還提供一套可視化的設計工具,便于程序員建立圖形對象,巧妙地把windows編程的復雜性“封裝”起來。VB在原有BASIC語言的基礎上進一步發展,包含了數百條語句、函數及關鍵詞,其中很多與Windows GUI有直接關系。VB與BASIC之間有著千絲萬縷的聯系,如果學過BASIC語言的話,看到VB程序結構會感到很親切。專業人員可以用Vi
19、sual Basic實現其他任何Windows編程語言的功能,而初學者只要掌握幾個關鍵詞就可以建立實用的應用程序。隨著微型計算機技術的飛速發展,美國微軟公司以其具有多任務性、圖形用戶界面、動態數據交換、對象鏈接與嵌入等強大功能,而成為當今微型計算機操作系統的主流產品。許多商用軟件公司為適應這一趨勢推出windows境下的軟件開發工具,如Visual C+,Delphi,PowerBuilder等等。但對于初學者希望在windows環境中開發一般的應用程序,VB無疑是較理想的。VB是目前眾多windows軟件開發工具中效率最高的一個。2.1.2 VB的功能特點1面向對象VB采用了面向對象設計思想
20、,它基本思路是把復雜設計問題分解為個個能夠完成獨立功能相對簡單對象集合。所謂“對象”就是個可操作實體如窗體、窗體中命令按鈕、標簽、文本框等面向對象編程就好像搭積木樣員可根據和界面設計要求直接在屏幕上“畫出窗口、菜單、按鈕等區別類型對象并為每個對象設置屬性。 2事件驅動在Windows環境下是以事件驅動方式運行每個對象的都能響應多個區別事件,每個事件都能驅動段代碼事件過程該代碼決定了對象功能通常稱這種機制為事件驅動事件可由用戶操作觸發也可以由系統或應用觸發例如單擊個命令按 鈕就觸發了按鈕Click(單擊)事件該事件中代碼就會被執行若用戶未進行任何操作(未觸發事件)則就處于等待狀態整個應用就是由彼
21、此獨立事件過程構成。3軟件Software集成式開發VB為編程提供了個集成開發環境在這個環境中編程者可設計界面、編寫代碼、調試直至把應用編譯成可在Windows中運行可執行文件并為它生成安裝VB集成開發環境為編程者提供了很大方便。4結構化設計語言VB具有豐富數據類型是種附合結構化設計思想語言而且簡單易學此外作為種設計語言VB還有許多獨到的處5強大數據庫訪問功能VB利用數據Control控件可以訪問多種數據庫VB6O提供ADOControl控件不但可以用最少代碼實現數據庫操作和控制也可以取代DataControl控件和RDOControl控件6支持對象鏈接和嵌入技術VB核心是對對象鏈接和嵌入(O
22、LE)技術支持它是訪問所有對象種思路方法利用OLE技術能夠開發集聲音、圖像、動畫、字處理、Web等對象于體7網絡功能VB6O提供了DltTML(DynamictTML)設計工具利用這種技術可以動態創建和編輯Web頁面使用戶在VB中開發多功能網絡應用軟件Software8多個應用向導VB提供了多種向導如應用向導、安裝向導、數據對象向導和數據窗體向導通過它們可以快速地創建區別類型、區別功能應用9支持動態交換、動態鏈接技術通過動態數據交換(DDE)編程技術VB開發應用能和其他Windows應用的間建立數據通信通過動態鏈接庫技術在VB中可方便地用C語言或匯編語言編寫也可Windows應用接口(API)
23、10聯機幫助功能在VB中利用幫助菜單和F1功能鍵用戶可隨時方便地得到所需要幫助信息VB幫助窗口中顯示了有關舉例代碼通過復制、粘貼操作可獲取大量舉例代碼為用戶學習和使用提供方便2.2Visual Basic程序設計簡述2.2.1操作界面簡介在默認情況下,visual basic的操作界面包含了6個主要的窗口:主窗體,窗體窗口,工具箱窗口,屬性窗口,工程管理窗口和代碼窗口。 下面簡要介紹VB中這幾個窗口: 1.主窗體:圖2.1 VB主窗體圖2.窗體窗口:它是用來對應用程序進行界面設計的窗口,用戶通過與窗體上的控件交互即可得到相應的結果,體現了VB的可視化編程思想。值得注意的是:每一個窗體窗口必須有
24、一個唯一的名字。在設計狀態下,為方便用戶對控件的定位,窗體由網絡點組成,可以通過“工具”|“選項”命令,在“通用”標簽的“顯示網格”中改變“寬度”或“高度”的值來改變網格的間距圖2.2 VB窗體窗口圖3.工具箱窗口 工具箱中包含有許多圖標,它是各種控件的制作工具,利用這些工具,用戶可以在窗體上設計各種控件。標準工具箱內只包含了19個控件(指針不是控件,其作用僅用于窗體和控件的移動或調整它們的大小),用戶可根據需要添加其它控件到工具箱中。具體方法是選擇 “工程”|“部件”命令打開“部件”對話框,在控件標簽頁中選擇需要的部件,然后單擊“確定”按鈕,此時工具箱中將顯示新添加的控件圖標按鈕。 圖2.3
25、VB工具箱窗口圖4.屬性窗口用于設置對象的屬性值,所有窗體或控件的屬性都可以通過屬性窗口進行修改。如對象名稱、顏色、字體等。屬性窗口包括以下幾個部分:(1).對象列表框:單擊下拉按鈕可打開當前窗體對象列表,可選擇要設定屬性的對象。(2).屬性顯示排列方式:有“按字母序”和“按分類序”兩個標簽。(3).屬性列表框:列出當前對象在設計模式下可用的屬性及當前值,左欄顯示屬性名稱,右欄顯示相應的屬性值,并可由用戶設置該屬性值。 圖2.4VB屬性窗口圖(4).屬性說明:顯示當前屬性的含義。5.工程管理窗口工程管理窗口保存了這個工程(或應用程序)所有的文件,如工程文件(.vbp)、窗體文件(.frm)、標
26、準模塊文件(.bas)和類模塊文件(.cls)等。工程管理窗口上方有3個按鈕,分別是:(1).查看代碼:切換到代碼窗口,顯示和編輯代碼。(2).查看對象:切換到窗體窗口,顯示和編輯對象。(3).切換文件夾:切換本窗口內文件夾顯示方式。 圖2.5 VB工程管理窗口圖6.代碼窗口代碼窗口是專門用來進行程序設計的窗口,顯示和編輯程序代碼。每個窗體都有各自的代碼窗口。打開代碼窗口的方法:(1)在工程管理窗口選擇一個窗體或標準模塊,并選擇“查看代碼”按鈕。(2) 在窗體窗口雙擊控件或窗體本身。 圖2.6 VB代碼窗口圖(3) 選擇“視圖”|“代碼窗口”命令。2.2.2 幾個常用控件介紹1.標簽 Labe
27、l功能:用于顯示文本(輸出)信息,不能作為輸入信息的界面。可以設置標簽的背景顏色,本軟件界面設計時就用到透明屬性。2. 文本框 TextBox 功能:是一個文本編輯區域,可以輸入,編輯和顯示正文內容。這是使用最頻繁的一個控件??梢酝ㄟ^改變屬性來改變文本大小,顏色等。3. 命令按鈕CommandButton 功能:接受用戶輸入的命令。當用戶鼠標點擊此按鈕,便可以執行命令,實現所編功能。2.2.3 VB編程語言書寫 和變量聲明VB語言與其他語言書寫有不同,所以有必要了解VB的書寫方式1. VB代碼不區分字母的大小寫。系統關鍵字自動轉換每個單詞的首字母大寫;用戶自定義行以第一次為準。 2. 語句書寫
28、自由。每一行可書寫幾個語句,之間用冒號分隔;一行最多255個字符;一條語句可分若干行書寫,用續行符 (空格+下劃線)連接。3. 注釋利于程序的維護和調試。用單撇號“” 以及“編輯”工具欄的“設置注釋塊”,則VB中注釋語句會自動變為綠色,不參與運行。4.VB中變量聲明與其他編程語言的變量聲明也有不同,下面簡單的介紹下:(1) 聲明形式: Dim 變量名 As 自定義類型名 例 Dim Student As StudType (2) 引用: 形式:變量名.元素名 例 表示Student變量中的姓名,第4門課程的成績,則表示如下:Student.Name,Student.Mark(4)(3) 賦值:
29、 如:Student.Name=“王剛” Student.Mark(4)=98其中常用的有聲明形式和賦值,而賦值是使用最頻繁的,本次編程中也大量使用賦值變量聲明2.2.4矩陣的在VB中的表示我們知道平差計算中,矩陣計算是必須的,像系數矩陣,法方程矩陣等都要用到矩陣。所以用VB編制平差程序的要點和難點就是進行矩陣運算的編制。在了解矩陣的運算法則后,便可用VB語言編程了。而用什么來表示矩陣呢?那就是數組,下面重點介紹下數組,這對程序的開發至關重要!1.數組不是一種數據類型,而是一組相同類型的變量的集合。在程序中使用數組的最大好處是用一個數組名代表邏輯上相關的一批數據,用下標表示該數組中的各個元素,
30、和循環語句結合使用,使得程序書寫簡潔。使用數組時需注意:數組必須先聲明后使用。數組分兩類:一類是靜態(定長)數組,第二累時動態(可變長)數組。像a(7,7)這便是靜態數組,a(n,t)就是動態數組,其中的字母代表未知數。2.靜態數組,也就是定長的數組。如我們想將矩陣 1 2 3 4這個兩行兩列的矩陣用VB來表示,可以表示為Dim a(1 to 2,1 to 2) as double 變量聲明a(1,1)=1: a(1,2)=1: a(2,1)=1: a(2,2)=1這樣數組也變在VB中形成了,當然也可以聯合for 循環使用,則語句變得更為簡潔。本程序中用到此聯合,來求解矩陣運算。3.動態數組是
31、指在聲明數組時未給出數組的大小(省略括號中的下標),當要使用它時,隨時用ReDim語句重新指出數組大小。如 redim a(1 to n ,1 to n) 這樣便定義了一個動態的n維數組,注意聲明必須是redim,不然程序會出錯。這里還需指明的是Dim、Private、Public變量聲明語句是說明性語句,可出現在過程內或通用聲明段;ReDim語句是執行語句,只能出現在過程內。在過程中可多次使用ReDim來改變數組的大小和維數。但使用ReDim語句會使原來數組中的值丟失,可以在ReDim語句后加Preserve參數來保留數組中的數據。使用Preserve時只能改變最后一維的大小,前面幾維大小不
32、能改變。 還有ReDim中的下標可以是常量,也可以是有了確定值的變量,這在編程中要注意!另外靜態數組在程序編譯時就分配存儲單元,而動態數組在運行時才分配存儲單元2.2.5 VB中矩陣的運算為了解決中矩陣運算問題,編好相應的矩陣運算代碼是必須的,經過一個月的時間終于將矩陣運算的代碼編成功,特別是矩陣求逆的運算。不過編制的矩陣求逆代碼前提是滿秩的,對于秩虧矩陣,就不適用了,由于時間原因,就沒繼續深入的研究其代碼。當然了,我們平時見到的平差一般都是滿秩的,所以此代碼的適用性還是挺強的。下面就具體介紹下,各矩陣運算的代碼和思想。1.矩陣加減法(1)這個代碼比較容易編寫,只要加矩陣中對應的數相加減便可以
33、得到結果。 所以此處不給出代碼2.矩陣乘法(1)這個代碼編程的要點是跟據矩陣乘法的運算法則,即矩陣的沒一行的數分別與另外矩陣的每一列對應的數相乘并全部進行相加。知道一個原則,編程就容易了,多次使用for循環實現! (2)代碼:Public Sub jzcf(ByRef a() As Double, ByRef b() As Double, ByRef c() As Double)m = UBound(a, 1)n = UBound(b, 2)ni = UBound(a, 2)For i = 1 To mFor j = 1 To nFor ki = 1 To nic(i, j) = c(i, j
34、) + a(i, ki) * b(ki, j)NextNextNextEnd Sub 3.矩陣轉置(1)這個代碼編程的也比較簡單,即將矩陣的行轉化成列就行了。(2)代碼:Public Sub jzzz(ByRef a() As Double, ByRef b() As Double)m = UBound(a, 1)n = UBound(a, 2)For i = 1 To nFor j = 1 To mb(i, j) = a(j, i)NextNextEnd Sub4.矩陣求逆(1)這個代碼編程很復雜,此代碼運用的是高斯約化法進行矩陣求逆計算,編程的思想是先進行增廣矩陣,然后用高斯約化法,將第一
35、列中不是零的數找出,進行約化,即將每行數字除以開頭數字,使每行開頭不是零的數化為1,之后減去第一行,這樣這行的第一列的開頭就為零了。用這種方法就可以將矩陣變為上三角矩陣,最后就得到矩陣求逆結果。(2)代碼:Public Sub jzqn(ByRef qa() As Double, ByRef na() As Double)Dim a()n = UBound(qa, 1)ReDim a(n, 2 * n) For i = 1 To n For j = 1 To n a(i, j) = qa(i, j) Next j Next iFor i = 1 To n For j = n + 1 To 2
36、* n If j - i = n Then a(i, j) = 1 Else a(i, j) = 0 End If Next j Next i For i = 1 To n If a(i, i) = 0 Then For q = i To n If a(q, i) 0 Then For W = i To 2 * n zj = a(i, W) a(i, W) = a(q, W) a(q, W) = zj Next W Exit For End If Next q If q n Then MsgBox 此矩陣不可逆: Exit Sub End If For K = 2 * n To i Step
37、-1 a(i, K) = a(i, K) / a(i, i) Next K For j = i + 1 To n If a(j, i) 0 Then For K = 2 * n To i Step -1 a(j, K) = a(j, K) / a(j, i) - a(i, K) Next K End If Next jNext iFor i = n To 1 Step -1 If a(i, i) = 0 Then For q = i - 1 To 1 Step -1 If a(q, i) 0 Then For W = i To 2 * n zj = a(i, W) a(i, W) = a(q,
38、 W) a(q, W) = zj Next W Exit For End If Next q End If For K = 2 * n To i Step -1 a(i, K) = a(i, K) / a(i, i) Next K For j = i - 1 To 1 Step -1 If a(j, i) 0 Then xxx = a(j, i) For K = 2 * n To 1 Step -1 a(j, K) = a(j, K) / xxx - a(i, K) Next K End If Next jNext iFor i = 1 To n For j = 1 To n na(i, j)
39、 = a(i, j + n)Next jNext iEnd Sub2.2.6程序控制語句1.MsgBox語句VB中提示性語句,格式為:MsgBox 語句 (需要鍵入的提示語)例如:MsgBox 賬號不對,請重試運行結果:則出現一個對話框,提示用戶。 2.print語句VB中最基本的輸出語句,可以將打印的內容放到form窗口中,也可以放在以圖片控件為容器的控件中,還可以將數據進行輸出,比如輸出到txt文本中,具體的,后面展示。3.if語句If Then Else End IfIf 語句可以循環嵌套,以實現比較復雜的邏輯結果。4.循環語句(1)for語句格式:For 循環變量初值 to 終值 St
40、ep 步長 循環體;next注意:循環參數中,i用于控制循環次數,step是步長使用前應計算好,結尾必須有next不然程序會出錯!(2)do.while語句格式:Do While|Until 語句塊 Exit Do 語句塊 Loop 注意:do.while循環是用于控制循環次數未知。5. 循環控制語句在循環執行到一定程度的時候,不希望它繼續執行,則要使用循環控制語句,包括continue和break。(1)continue出現時,不執行continue后的內容,直接跳過本次循環,執行下一次循環。(2)Break出現時,不執行break后的內容,直接跳出循環,執行循環后的語句。2.2.7控件數組
41、控件數組是由一組具有共同名稱和相同類型的控件組成,數組 中的每一個控件共享同樣的事件,它可以運用控件數組可以再程序運行時創建一個控件的多個實例,并能很好的控件在程序運行時到底顯示多少個對象,利用for-next循環結構,就可以簡單地為控件數組的各個元素設置相同的屬性,同時它也可以節省代碼,增加可讀性,減少了內存的開銷。控件數組可以分為靜態數組及動態數組兩種。3 平差計算基本理論3.1 條件平差3.1.1 條件平差原理設有r個平差值的線性條件方程: (3-1-1)式中,為條件方程的系數,為條件方程常數項,系數和常數項隨不同平差問題取不同的值,它們與觀測值無關。用代入上式,可得: (3-1-2)式
42、中,為條件方程的閉合差,或稱不符值,即: (3-1-3)令: , , 則(3-1-2)式為: (3-1-4)同樣,(3-1-1)式也可以寫為: (3-1-5)式中 (3-1-3)式的矩陣形式為: (3-1-6)由(3-1-5)式可知,的應有值為零,所以閉合差等于觀測值減去其應有值。按求條件極值的拉格朗日乘數法,設其乘數為,稱為聯系數向量,組成函數將對求一階導數,并令其為零,得:移項,兩邊轉置,得:再用左乘上式兩段,得改正數V的計算公式為:= (3-1-7)上式稱為改正數方程。將n個改正數方程(3-1-7)和r個條件方程(3-1-4)聯立求解,就可以求得一組唯一的解:n個改正數和r個聯系數。為此
43、,將(3-1-4)式和(3-1-7)式合稱為條件平差的基礎方程。顯然,有基礎方程解出的一組V,不僅能消除閉合差,也必能滿足的要求。解算基礎方程時,是先將(3-1-7)式代入(3-1-4)式,得令:,則有稱為聯系數法方程,它是條件平差的法方程,簡稱法方程。因為法方程系數陣是滿秩方陣,由此可得聯系數K的唯一解從法方程中解出K后,將K值代入改正數方程(3-1-7),再求平差值即可。3.1.2 條件平差程序設計流程圖輸入觀測數據輸入必要信息:總觀測值數量,必要觀測值數量軟件自動識別用戶是否正確輸入數據,以及有無數據輸入的不完整。接著識別各段高差的前后視點是否為已知點并組建系數矩陣A和W判斷否所有觀測高
44、差是否已處理完,數據是否正確是定權計算法方程矩陣,求解未知參數,精度評定。結束3.2間接平差3.2.1 間接平差原理間接平差就是在最小二乘準則要求下求出誤差方程中的待定參數,在數學中是求多元函數的極值問題。間接平差的函數模型為:平差時,一般對參數都要取近似值,令代入上式,并令其中,為觀測值的近似值,所以是觀測值與其近似值之差,由此可得誤差方程設有n個觀測值的方程為:令,則得誤差方程為:令: 可得平差值方程的矩陣形式:, (3-2-1)按最小二乘原理,上式的必須滿足的要求,因為t個參數為獨立量,故可按數學上求函數自由極值的方法,得:移項,轉置后得: (3-2-2)以上所得(3-2-1)和(3-2
45、-2)式中的待求量是n個V和t個,而方程個數也是n+t個,有唯一解,稱此兩式為間接平差的基礎方程。解此基礎方程,一般是將(3-2-1)式代入(3-2-2)式,以便先消去V,得: (3-2-3)令:,上式可簡寫成 (3-2-4)式中系數陣為滿秩,即,有唯一解,上式稱為間接平差的法方程。解之得: 或: 將求出的代入誤差方程(3-2-1),即可求得改正數V,從而平差結果為:,3.2.2 間接平差程序設計流程圖輸入觀測數據輸入必要信息:總觀測值數量,必要觀測值數量軟件自動識別用戶是否正確輸入數據,以及有無數據輸入的不完整。接著識別各段高差的前后視點是否為已知點并組建系數矩陣A和W判斷否所有觀測高差是否
46、已處理完,數據是否正確是定權計算法方程矩陣,求解未知參數,精度評定。結束3.3附合導線平差計算圖3.1 附合導線圖3.3.1單一附合導線平差原理如圖一所示,在這個導線中有四個已知點、n -1個未知點、n+1個水平角觀測值和n條邊長觀測值,總觀測值數為2n+1。從圖中可以分析,要確定一個未知點的坐標,必須測一條導線邊和一個水平角,即需要兩個觀測值;要確定全部n -1個未知點,則需觀測n -1個導線邊和n -1個水平角,即必要觀測值數t = 2n -2;則多余觀測個數r = (2n +1) t = 3。也就是說,在單一附合導線中,只有三個條件方程。下面討論其條件方程式及改正數條件方程式的寫法。設A
47、B邊方位角已知值為TAB = T0,CD邊方位角已知值為TCD、計算值為Tn+1,B點坐標的已知值為(,)或者(x1, y1),C點坐標的已知值為(,)、計算值為(xn+1, yn+1)。三個條件中,有一個方位角附合條件、兩個坐標附合條件。方位角附合條件:從起始方位角推算至終邊的方位角平差值應等于其已知值,即: (3-3-1) 縱橫坐標附合條件:從起始點推算至終點所得到的坐標平差值應與終點的已知坐標值相等,即: (3-3-2) (3-3-3)(1) 方位角附合條件式則(3-3-1)式可寫為整理得: (3-3-4)其中(2)縱坐標附合條件式終點C坐標平差值表示為 (3-3-5)而第i邊的坐標增量
48、為 (3-3-6)式中:其中,Ti是第i邊的近似坐標方位角 (3-3-7)則(3-3-6)式可表示為上式按泰勒級數展開,取至一次項,得 (3-3-8)其中,為由觀測值計算出的近似坐標增量。將(3-3-8)式代入(3-3-5)式,并按合并同類項,得將上式代入(3-3-2)式,整理得上式即為縱坐標條件方程式,也可寫為統一形式: (3-3-9) (3-3-10)(3)橫坐標附合條件式同理,可寫出橫坐標條件式 (3-3-11) (3-3-12)為使計算方便,保證精度,在實際運算中,S、x、y常以m為單位,w、以cm為單位,則(3-3-9)和(3-3-11)寫為 (3-3-13) (3-3-14)綜上所
49、述,單一附合導線的平差計算的基本程序是:1)計算各邊近似方位角Ti和各點的近似坐標增量值xi、yi;2)參照(3-3-4)寫出方位角條件式,參照(3-3-9)、(3-3-10)、(3-3-11)、(3-3-12)或者(3-3-13)、(3-3-14)寫出縱橫坐標條件方程式;3)按照條件平差計算的一般程序,計算最或是值。3.3.2單一附合導線程序設計流程圖圖在下一頁輸入觀測數據軟件自動識別提示:已知點坐標,已知邊方位角,觀測轉角與邊長的數量是否輸完輸對,軟件會指導用戶輸完數據,數據完整后進行下不計算。判斷計算各導線邊方位角、系數矩陣A、以及、x、y否所有導線邊是否已處理完定權計算法方程矩陣,求解
50、未知參數,精度評定。結束4 平差軟件界面設計4.1 平差軟件整體展示 4.1.1登陸界面 圖4.1平差軟件登錄界面圖為了方便用戶使用和保存用戶隱私,特做了平差軟件的登陸窗口。只有賬號密碼正確才能進入,使用軟件。而注冊和找回密碼用到數據庫的知識,需用VB和數據庫(可以是SQL數據庫,也可以是access數據庫)聯合開發。當然了,由于時間關系,注冊和找回密碼功能還沒開發,以待時間充裕時再進行開發。圖4.2平差軟件登錄界面圖4.1.2平差軟件主界面 圖4.3平差軟件主要界面圖左邊按鈕為平差功能,有水準網間接平差,附和導線平差,水準網的間接平差,閉合導線平差。最后一個為誤差橢圓,用來檢測各導線的誤差精
51、度。中間的是坐標系統,用來顯示所觀測導線網,看輸入的導線網與實測的導線網是否一樣,可以及時糾錯。當然還可以顯示導線網中的誤差橢圓。4.1.3水準網間接平差圖4.4水準網間接平差主要界面圖上圖為水準網間接平差主界面,只要鼠標點擊主界面中的水準網間接平差按鈕就能進入該界面。該界面中右邊為輸入觀測數據。此水準網間接平差能實現的功能是進行水準網間接平差計算(改正數跟平差值計算),此外還設計了幾個實用功能,如對平差后的結果進行輸出(輸出的格式為txt文本格式),對數據進行清空,方便第二次輸入。還設有返回主界面的功能,進行其他功能的轉化。當然了還開發了如查看系數矩陣,法方程等功能4.1.4附合導線平差圖4.5附合導線平差界面圖和水準網間接平差一樣,附合導線網設計的功能有改正數平差值的計算,還有其他一些實用的功能。由于此次的時間比較短,只開了這兩個平差程序,其他的以待后面開發。4.2 平差軟件界面設計VB中的界面設計是實現可視化,面向對象的重要途徑,我們說的VB界面設計其實就是Visual Basic編程語言中的(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設計質量提升管理制度
- 診所義診項目管理制度
- 診所日常器械管理制度
- 試驗檢修設備管理制度
- 財務管理稅務管理制度
- 財政往來資金管理制度
- 貨場出庫日常管理制度
- 貨物進出登記管理制度
- 貨運碼頭現場管理制度
- 2025年中國防窺膜行業市場全景分析及前景機遇研判報告
- 2025春國開《創業基礎》形考任務1-4答案
- 國家開放大學2025年《創業基礎》形考任務1答案
- 公司事故隱患內部報告獎勵機制
- 人教版七年級下冊英語單詞辨音訓練題(一)
- 最新煙葉儲存保管方法標準
- 《丹江城區普通住宅小區物業服務收費管理辦法》
- CYD-128(環氧樹脂)MSDS
- 3船舶操作手冊
- 2018-2019學年進才中學初生高自招英語模擬三
- 石油螺紋量規單項測量儀使用說明書
- 空白中心醫院魚骨圖分析模板
評論
0/150
提交評論