版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、畢 業(yè) 設(shè) 計(jì)基于excel表的附合導(dǎo)線計(jì)算程序系 部: 測(cè)繪工程系 專業(yè)名稱: 工程測(cè)量 指導(dǎo)教師: 姓 名: 二一年十二月畢 業(yè) 設(shè) 計(jì) (論文)評(píng) 定 表姓名 學(xué)號(hào) 存檔號(hào) 系別測(cè)繪工程系專業(yè)工程測(cè)量班 級(jí)80812畢業(yè)論文(設(shè)計(jì))題目基于excel表的附合導(dǎo)線計(jì)算程序指導(dǎo)教師評(píng)語(yǔ):簽名: 2010年 月 日 答辯委員會(huì)意見:簽名: 2010年 月 日 備注:畢業(yè)設(shè)計(jì)(論文)任務(wù)書 學(xué)生用表學(xué) 生姓 名 學(xué) 號(hào) 指導(dǎo)教師姓 名 教授系部測(cè)繪工程系畢業(yè)設(shè)計(jì)(論文)題目基于excel表的附合導(dǎo)線計(jì)算程序畢業(yè)設(shè)計(jì)(論文)要求:1、完成附和導(dǎo)線的excel計(jì)算程序的編寫2、輸入數(shù)據(jù)驗(yàn)證程序的正確
2、性和可行性3、數(shù)據(jù)輸入計(jì)算4、論文格式完成期限和主要措施:2010.10.202010.10.31 論文選題,擬定設(shè)計(jì)(論文)計(jì)劃 (10天)2010.11.12010.11.20 整理資料,收集文獻(xiàn),編寫提綱 (20天)2010.11.112010.11.20 準(zhǔn)備初稿,排版 (10天)2010.11.212010.11.30 撰寫論文,定稿 (10天)2010.12.12010.12.10 打印、投交論文為答辯作準(zhǔn)備 (10天)主要參考文獻(xiàn):1 李孟山、張文彥編.工程測(cè)量概論.西安:西安地圖出版社,2004:160.179-180.2 美john walkenback著,excel2003
3、高級(jí)vba編程寶典電子工業(yè)出版社3 孔祥元 國(guó)家標(biāo)準(zhǔn)新版gb50026-2007 工程測(cè)量規(guī)范 武漢大學(xué)測(cè)繪學(xué)院指導(dǎo)教師簽名:年 月 日 目 錄摘 要2第1章 附合導(dǎo)線的概述31.1附合導(dǎo)線的簡(jiǎn)介31.2附合導(dǎo)線的外業(yè)工作3第2章 附合導(dǎo)線的計(jì)算原理52.1附合導(dǎo)線的方位角計(jì)算公式52.2附合導(dǎo)線的坐標(biāo)計(jì)算公式5第3章 附合導(dǎo)線程序編制73.1 vba語(yǔ)言簡(jiǎn)介73.2設(shè)計(jì)附合導(dǎo)線的excel表格83.3計(jì)算已知方位角93.4角度計(jì)算代碼編寫113.5坐標(biāo)計(jì)算代碼編寫203.6坐標(biāo)結(jié)果的計(jì)算與輸出21第4章 程序的應(yīng)用234.1附合導(dǎo)線計(jì)算程序的使用234.1.1程序使用說(shuō)明234.2程序的驗(yàn)證
4、244.2.1輸入已知條件244.2.1計(jì)算成果24第5章 全文總結(jié)26致謝27參考文獻(xiàn)28摘 要在測(cè)量工作中,導(dǎo)線測(cè)量占著重要地位,無(wú)論是鐵路測(cè)量、公路測(cè)量、橋梁測(cè)量還是地形圖測(cè)繪,導(dǎo)線的測(cè)量計(jì)算都是非常重要的環(huán)節(jié)。第1章主要介紹了附合導(dǎo)線的外業(yè)工作和精度要求;第2章介紹了附合導(dǎo)線的內(nèi)業(yè)計(jì)算;第3章主要介紹了利用excel編程語(yǔ)言vba對(duì)附合導(dǎo)線的計(jì)算;第4章介紹對(duì)excel程序的應(yīng)用和驗(yàn)證。關(guān)鍵詞:vba;附合導(dǎo)線;excel;編程第1章 附合導(dǎo)線的概述1.1附合導(dǎo)線的簡(jiǎn)介如圖1-1所示以高級(jí)控制點(diǎn)a為起始點(diǎn),ba方向?yàn)槠鹗挤较?,?jīng)過若干個(gè)導(dǎo)線點(diǎn)后,附合到另外一個(gè)高級(jí)控制點(diǎn)c和已知方向cd
5、邊上,這種導(dǎo)線稱為附合導(dǎo)線。圖1-1附合導(dǎo)線示意圖1.2附合導(dǎo)線的外業(yè)工作(1)選點(diǎn)根據(jù)測(cè)區(qū)的地形情況選擇一定數(shù)量的導(dǎo)線點(diǎn)。在選點(diǎn)之前,應(yīng)收集測(cè)區(qū)已有的小比例尺地形圖和控制點(diǎn)的成果資料,然后在地形圖上擬定的布設(shè)方案,最后到野外進(jìn)行實(shí)地踏勘,根據(jù)實(shí)地情況進(jìn)行修改與調(diào)整,選定點(diǎn)位并建立標(biāo)志。若無(wú)地形圖可利用時(shí),實(shí)地踏勘選點(diǎn)。(2)水平角觀測(cè)在附合導(dǎo)線中一般測(cè)量其左角,導(dǎo)線觀測(cè)角的精度要求見表1-1(3)邊長(zhǎng)測(cè)量導(dǎo)線邊長(zhǎng)測(cè)量可以用光電測(cè)距儀測(cè)定,也可以用鋼尺丈量。若用測(cè)距儀測(cè)定,應(yīng)測(cè)定導(dǎo)線邊的水平長(zhǎng)度;若用鋼尺丈量,對(duì)一、二、三級(jí)導(dǎo)線,應(yīng)采用精密量距法進(jìn)行丈量;對(duì)于圖根導(dǎo)線,則用一般方法往返進(jìn)行丈量
6、,其相對(duì)誤差一般不得超過1/3000在特殊困哪地區(qū)也不得超過1/1000表1-1各級(jí)導(dǎo)線測(cè)量的主要技術(shù)指標(biāo)等級(jí)導(dǎo)線長(zhǎng)度/km平均邊長(zhǎng)/km測(cè)角中誤差測(cè)回?cái)?shù)角度閉合差導(dǎo)線全長(zhǎng)相對(duì)閉合差dj6dj2一級(jí)40.5542101/15000二級(jí)2.40.25831161/10000三級(jí)1.20.11221241/5000圖根1.0m1.5倍測(cè)圖最大視距20140(首級(jí))40(一般)1/2000注:表中n為測(cè)角個(gè)數(shù);m為測(cè)圖比例尺分母。第2章 附合導(dǎo)線的計(jì)算原理2.1附合導(dǎo)線的方位角計(jì)算公式(1)角度與弧度轉(zhuǎn)換公式:弧度=度*/180+分*/(180*60)+秒*/(180*60*60) (2-1) (2
7、)坐標(biāo)計(jì)反算: (2-2) 當(dāng)在第一象限時(shí)=當(dāng)在第二象限時(shí)=+180當(dāng)在第三象限時(shí)=+180當(dāng)在第四象限時(shí)=+360(3)推算導(dǎo)線各邊的坐標(biāo)方位角: (2-3)(3)附合導(dǎo)線角度閉合差的計(jì)算: (2-4)(4)附合導(dǎo)線角度改正數(shù)的計(jì)算: (2-5) 注:觀測(cè)角度加上角度改正數(shù)即為改正后角度值。2.2附合導(dǎo)線的坐標(biāo)計(jì)算公式(1)坐標(biāo)閉合差的計(jì)算: (2-6)(2)坐標(biāo)增量的計(jì)算: (2-7)(3)x、y坐標(biāo)改正數(shù)的計(jì)算: (2-8) (4)坐標(biāo)的計(jì)算: (2-9) 注:、為改正后的坐標(biāo)增量值,第3章 附合導(dǎo)線程序編制3.1 vba語(yǔ)言簡(jiǎn)介 vba(visual basic for applica
8、tion)語(yǔ)言簡(jiǎn)介visual basic for applications(簡(jiǎn)稱vba)是新一代標(biāo)準(zhǔn)宏語(yǔ)言,是基于visual basic for windows發(fā)展而來(lái)的。它與傳統(tǒng)的宏語(yǔ)言不同,傳統(tǒng)的宏語(yǔ)言不具有高級(jí)語(yǔ)言的特征,沒有面向?qū)ο蟮某绦蛟O(shè)計(jì)概念和方法。而vba提供了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,提供了相當(dāng)完整的程序設(shè)計(jì)語(yǔ)言。vba易于學(xué)習(xí)掌握,可以使用宏記錄器記錄用戶的各種操作并將其轉(zhuǎn)換為vba程序代碼。這樣用戶可以容易地將日常工作轉(zhuǎn)換為vba程序代碼,使工作自動(dòng)化。因此,對(duì)于在工作中需要經(jīng)常使用office套裝軟件的用戶,學(xué)用vba有助于使工作自動(dòng)化,提高工作效率。另外,由于vba可
9、以直接應(yīng)用office套裝軟件的各項(xiàng)強(qiáng)大功能,所以對(duì)于程序設(shè)計(jì)人員的程序設(shè)計(jì)和開發(fā)更加方便快捷。execl具有強(qiáng)大的運(yùn)算功能,它能按照用戶的意圖進(jìn)行各種復(fù)雜的運(yùn)算(包括編寫公式、調(diào)用函數(shù)等)。vba是基于visual basic發(fā)展而來(lái)的,它們具有相似的語(yǔ)言結(jié)構(gòu)。visual basic是microsoft的主要圖形界面開發(fā)工具,vba 5.0 (亦即vba 97)則是visual basic 5.0的子集。visual basic是由basic發(fā)展而來(lái)的第四代語(yǔ)言。visual basic作為一套獨(dú)立的windows系統(tǒng)開發(fā)工具,可用于開發(fā)windows環(huán)境下的各類應(yīng)用程序,是一種可視化的、
10、面向?qū)ο蟮?、采用事件?qū)動(dòng)方式的結(jié)構(gòu)化高級(jí)程序設(shè)計(jì)語(yǔ)言。它具有高效率、簡(jiǎn)單易學(xué)及功能強(qiáng)大的特點(diǎn)。vb的程序語(yǔ)言簡(jiǎn)單、便捷,利用其事件驅(qū)動(dòng)的編程機(jī)制,新穎易用的可視化設(shè)計(jì)工具,并使用windows應(yīng)用程序接口(api)函數(shù),采用動(dòng)態(tài)鏈接庫(kù)(dll)、動(dòng)態(tài)數(shù)據(jù)交換(dde)、對(duì)象的鏈接與嵌入(ole)以及開放式數(shù)據(jù)庫(kù)訪問(odbc)等技術(shù),可以高效、快速地編制出windows環(huán)境下功能強(qiáng)大、圖形界面豐富的應(yīng)用軟件系統(tǒng)。visual basic程序很大一部分以可視(visual)形式實(shí)現(xiàn),這意味著在設(shè)計(jì)階段就可以看到程序運(yùn)行的屏幕畫面,用戶可以在設(shè)計(jì)時(shí)能夠方便地改動(dòng)畫面圖像、大小、顏色等,直到滿意為止
11、。vb的用戶可以是缺乏windows及c語(yǔ)言開發(fā)經(jīng)驗(yàn)的專業(yè)軟件人員,也可以是具有一定windows開發(fā)經(jīng)驗(yàn)的專業(yè)人員,vb的可視化編程方法使得原來(lái)繁瑣枯燥、令人生畏的windows應(yīng)用程序設(shè)計(jì)變得輕松自如、妙趣橫生。以往的windows應(yīng)用程序開發(fā)工具在設(shè)計(jì)圖形用戶界面時(shí),都是采用編程的方法,并伴隨大量的計(jì)算任務(wù),一個(gè)大型應(yīng)用程序約有90%的程序代碼用來(lái)處理用戶界面,而且在程序設(shè)計(jì)過程中不能看到界面顯示的效果,只有在程序執(zhí)行時(shí)才能觀察到,如果界面效果不佳,還需要回到程序中去修改。visual basic提供了新穎的可視化設(shè)計(jì)工具,巧妙地將windows界面設(shè)計(jì)的復(fù)雜性封裝起來(lái),程序開發(fā)人員不必
12、再為界面設(shè)計(jì)而編寫大量程序代碼,僅需采用現(xiàn)有工具按設(shè)計(jì)者要求的布局,在屏幕上畫出所需界面,并為各圖形對(duì)象設(shè)置屬性即可,vb自動(dòng)產(chǎn)生界面設(shè)計(jì)代碼,這樣便將事先編制好的控件可視地連接到一起,構(gòu)成一個(gè)隨時(shí)可調(diào)整的界面。vba不但繼承了vb的開發(fā)機(jī)制,而且vba還具有與vb相似的語(yǔ)言結(jié)構(gòu),它們的集成開發(fā)環(huán)境ide(intergrated development environment)也幾乎相同。但是,經(jīng)過優(yōu)化,vba專門用于office的各應(yīng)用程序。vb可運(yùn)行直接來(lái)自windows 95或nt桌面上的應(yīng)用程序,而vba的項(xiàng)目(project)僅由使用vba的excel、word、 powerpoin
13、t等稱為宿主(host)的office應(yīng)用程序(application)來(lái)調(diào)用。目前,隨著測(cè)繪技術(shù)的不斷發(fā)展,在一些小地區(qū)的大比例尺測(cè)圖中,做控制應(yīng)用較多的依然是導(dǎo)線測(cè)量的方法。在導(dǎo)線測(cè)量中,野外數(shù)據(jù)的采集用全站儀可以說(shuō)方便快捷,但是其內(nèi)業(yè)的計(jì)算用手工卻比較麻煩,而且費(fèi)時(shí)費(fèi)力。而計(jì)算機(jī)的應(yīng)用解決了這一問題,本文就以vba語(yǔ)言來(lái)介紹附合導(dǎo)線的內(nèi)業(yè)計(jì)算。3.2設(shè)計(jì)附合導(dǎo)線的excel表格由于采用了excel的開發(fā)程序,所以采用的窗體是excel自身的經(jīng)典窗體,無(wú)需再去改動(dòng),這樣也更加方便用戶,只需在excel窗體上添加所需的空間就可以了。 圖 (3-1)excel導(dǎo)線計(jì)算的窗體3.3計(jì)算已知方位角
14、(1)已知控制點(diǎn)的填入 如圖(3-2)圖3-2附合導(dǎo)線方位角計(jì)算表注:紅色字體為輸入部分。(2)坐標(biāo)方位角弧度按公式(2-2)進(jìn)行計(jì)算編寫程序 “=if(c4-c3)0,if(b4-b3)0,atan(c4-c3)/(b4-b3),atan(c4-c3)/(b4-b3)+2*3.1415926535),atan(c4-c3)/(b4-b3)+3.1415926535)”填入。如圖1-3圖3-3計(jì)算方位角公式的填入(3)將弧度轉(zhuǎn)換為度按公式(度=弧度*180/)分別在度、分、秒里填入公式度轉(zhuǎn)換:=int(g4/3.1415926*180),如圖3-4圖3-4度轉(zhuǎn)換公式填入分轉(zhuǎn)換:=int(g4/
15、3.1415926*180-d4)*60),如圖3-5圖3-5分轉(zhuǎn)換公式填入秒轉(zhuǎn)換:=int(g4/3.1415926*180-d4)*60-e4)*60),如圖3-6圖3-6秒轉(zhuǎn)換公式填入得到方位角計(jì)算結(jié)果如圖3-7圖3-7已知點(diǎn)方位角計(jì)算結(jié)果3.4角度計(jì)算代碼編寫代碼的編寫是在visual basic for application的代碼編輯器里編寫的,打開excel后按alt+f11便可以打開代碼編輯器。如圖3-8圖3-8 vba代碼編輯界面(1)首先在通用聲明部分定義兩個(gè)變量,n和i,n代表加密點(diǎn)的個(gè)數(shù),i是變量代表每一個(gè)加密點(diǎn)的點(diǎn)號(hào),代碼如下:一個(gè)動(dòng)態(tài)dim i as integer
16、將動(dòng)態(tài)變量i定義為integer。(整型數(shù))dim n as long將變量n定義為long。(長(zhǎng)整型)(2)編寫輸入加密點(diǎn)個(gè)數(shù)的代碼,按下此按鈕的的時(shí)候要求輸入加密點(diǎn)個(gè)數(shù),以便程序自動(dòng)生成一個(gè)相應(yīng)的表格,為此按鈕編寫代碼如下:private sub commandbutton1_click()當(dāng)按鈕被按下的時(shí)候執(zhí)行sub過程。 n = inputbox(“請(qǐng)輸入個(gè)數(shù)”, “請(qǐng)輸入”)把用戶輸入inputbox的加密點(diǎn)的總個(gè)數(shù)賦值個(gè)變量n。sheet1.cells(7, 1) = “a”sheet1.cells(8, 1) = “b”sheet1.cells(7, 19) = “a”sheet
17、1.cells(8, 19) = “b”當(dāng)按鈕被按下的時(shí)候把“a、b”填入到指定的單元格里,sheet1.cells(7,8)代表該單元格的位置是第一個(gè)工作薄的第七列的第八行。for i = 0 to (n + 2)sheet1.cells(i + 9, 1) = i + 1sheet1.cells(i + 9, 19) = i + 1sheet1.cells(i + 6, 1).interior.colorindex = 4sheet1.cells(i + 6, 19).interior.colorindex = 4sheet1.cells(i + 8, 2).borders.linesty
18、le = 3sheet1.cells(i + 8, 3).borders.linestyle = 3sheet1.cells(i + 8, 4).borders.linestyle = 3sheet1.cells(i + 8, 12).borders.linestyle = 3next i通過fornext循環(huán)來(lái)創(chuàng)建我們需要的表格表格的大小取決于加密點(diǎn)的個(gè)數(shù)。sheet1.cells(n + 9, 1) = “c”sheet1.cells(n + 10, 1) = “d”sheet1.cells(n + 9, 1).interior.colorindex = 4sheet1.cells(n +
19、 10, 1).interior.colorindex = 4sheet1.cells(n + 9, 19) = “c”sheet1.cells(n + 10, 19) = “d”sheet1.cells(n + 9, 19).interior.colorindex = 4sheet1.cells(n + 10, 19).interior.colorindex = 4將“c、d”填入指定的單元格,并且指定該單元格的格式。sheet1.cells(n + 11, 1) = “總和”sheet1.cells(n + 11, 1).interior.colorindex = 0sheet1.cell
20、s(n + 11, 2).interior.colorindex = 0sheet1.cells(n + 11, 3).interior.colorindex = 0sheet1.cells(n + 11, 4).interior.colorindex = 0sheet1.cells(n + 11, 12).interior.colorindex = 0end sub通過以上代碼,就完成了對(duì)數(shù)據(jù)輸入的操作,只需要按下輸入按鈕,填入加密點(diǎn)個(gè)數(shù),就會(huì)生成相應(yīng)的附合導(dǎo)線計(jì)算表格如圖3-9圖3-9生成的附合導(dǎo)線計(jì)算表格(3)清除內(nèi)容,當(dāng)我們?cè)谧鐾暌惶子?jì)算的時(shí)候另存了數(shù)據(jù)以后,excel內(nèi)原先的數(shù)據(jù)并不
21、會(huì)自動(dòng)消失,這就需要我們通過代碼來(lái)實(shí)現(xiàn),實(shí)現(xiàn)清除功能的代碼如下:private sub commandbutton2_click() 當(dāng)清除按鈕被按下的時(shí)候執(zhí)行以下代碼 range(“a7:s100”) = “”在單元格a7到s100范圍內(nèi)單元格內(nèi)值為空,也就是數(shù)清空單元格理得內(nèi)容。range(“a7:s100”).interior.colorindex = 0range(“a7:s100”).borders.linestyle = 0設(shè)置單元格的底色和邊框樣式。end sub(4)設(shè)計(jì)計(jì)算代碼。計(jì)算代碼的設(shè)計(jì)是根據(jù)倒顯得計(jì)算公式來(lái)的,下面就代碼和公式進(jìn)行一步一步餓解析。導(dǎo)線的技術(shù)是由許多的計(jì)
22、算來(lái)完成的,為了便于程序的簡(jiǎn)化,我把所有的計(jì)算代碼統(tǒng)統(tǒng)放到了一個(gè)“計(jì)算”按鈕下。private sub commandbutton3_click() 當(dāng)commandbutton3按鈕被按下時(shí)執(zhí)行以下的計(jì)算代碼。首先是定義參數(shù),由于外業(yè)觀測(cè)的角度值是度、分、秒格式的所以首先要對(duì)度分秒格式的數(shù)據(jù)進(jìn)行處理。對(duì)度、分、秒的處理需要處理兩種格式一種是度的小數(shù)點(diǎn)形式,一種是弧度形式。度的小數(shù)點(diǎn)形式就是將分、秒換算成度。度的弧度形式就是將度分秒換算成弧度。具體步驟將在以下代碼中詳細(xì)講解。dim zhm as double: dim zhma as doubledim zhma1 as double: di
23、m zhf as doubledim zhfa as double: dim zhfa1 as doubledim zhd as double: dim zhda as doubledim zhda1 as double dim jlh as double dim jlh1 as doubledim zlx() as double: dim czly() as double dim zly() as double: dim czlx() as doubledim zlxh, zlyh, zlxh1, zlyh1, zlxh2, zlyh2, gxh, gyh as doubledim gzlx
24、() as double: dim gzly() as doubledim zbzx() as double: dim zbzy() as doubledim fbhc, czlxh, czlyh as doubledim jl() as double: dim m() as doubledim f() as double: dim d() as doubledim hudu() as double: dim fwj() as doubledim fr as doubledim fr1 as doubledim aab, acd, fpc as doubledim freenumb, bth,
25、 mini as double以上全部是定義的計(jì)算中會(huì)用到的參數(shù)具體含義為:zhm代表輸入的秒的總合,zhf代表輸入的分的總和,zhd代表輸入的度的總和,zhma1代表將秒換算為度的小數(shù)點(diǎn)形式的總和,zhfa1代表將分換算為度的小數(shù)形式的總和。jlh代表輸入的距離的總和。d()、f()、m()分別代表輸入的每一個(gè)度、分、秒,將其放入數(shù)組中,jl()代表輸入的距離將每一個(gè)距離放入到此數(shù)組中。if n = 0 thenmsgbox “請(qǐng)輸入加密點(diǎn)的個(gè)數(shù)”end ifif語(yǔ)句判斷輸入的加密點(diǎn)個(gè)數(shù)n是否為0,如果加密點(diǎn)個(gè)數(shù)為0執(zhí)行以上語(yǔ)句,彈出對(duì)話框,對(duì)話框現(xiàn)實(shí)內(nèi)容為“請(qǐng)輸入加密點(diǎn)的個(gè)數(shù)”。如果n不是
26、0那么執(zhí)行以下的if語(yǔ)句。if n 0 thenfreenumb = 99999freenumb是定義的一個(gè)極限數(shù)值,用來(lái)和輸入的距離進(jìn)行比較最終找出輸入距離的最小值。redim fwj(i) as doubleredim m(i) as doubleredim f(i) as doubleredim d(i) as doubleredim jl(i) as doubleredim hudu(i) as double對(duì)定義的空數(shù)組進(jìn)行重新定義。for i = 1 to (n + 2)m(i) = val(sheet1.cells(i + 7, 4) 將輸入的秒值給數(shù)組f(i) = val(sh
27、eet1.cells(i + 7, 3) 將輸入的分值給數(shù)組d(i) = val(sheet1.cells(i + 7, 2) 將輸入的度值給數(shù)組jl(i) = val(sheet1.cells(i + 8, 12) 將輸入的距賦值給數(shù)組if jl(i) 0 thenif jl(i) freenumb thenfreenumb = jl(i)mini = i + 8 判斷輸入的距離中的最小值end ifend ifzhm = zhm + m(i) 計(jì)算和zhf = zhf + f(i)zhd = zhd + d(i)jlh = jlh + jl(i)next i以上代碼是利用一個(gè)fornext
28、循環(huán)語(yǔ)句將輸入的距離和角度值賦值個(gè)我們定義的參數(shù)以便下一步利用參數(shù)來(lái)計(jì)算,其中嵌套的if語(yǔ)句是用來(lái)判斷輸入的距離最小值并且找到該最小值所在單元格的行數(shù)值賦值給mini。if jl(i) freenumb then當(dāng)?shù)趇個(gè)距離值小于極限數(shù)的時(shí)候freenumb = jl(i)將距離值賦值給freenumb,也就是說(shuō)freenumb就有了新值,進(jìn)入下一個(gè)循環(huán)后再進(jìn)行比較,最終得到最小的值。zhm = zhm + m(i) zhf = zhf + f(i)zhd = zhd + d(i)jlh = jlh + jl(i)將單元格內(nèi)的度、分、秒和距離值累加起來(lái)賦值給一個(gè)參數(shù)以便下面的計(jì)算使用。zhma
29、1 = (zhma / 60 - int(zhma / 60) * 60zhfa1 = (zhfa + int(zhma / 60) / 60 - int(zhfa + int(zhma / 60) / 60) * 60zhda1 = zhda + int(zhfa + int(zhma / 60) / 60) 進(jìn)行度分秒的換算sheet1.cells(n + 11, 4) = zhma1sheet1.cells(n + 11, 3) = zhfa1sheet1.cells(n + 11, 2) = zhda1sheet1.cells(n + 11, 12) = jlh1以上代碼是將累加起來(lái)的
30、度、分、秒對(duì)分、秒進(jìn)行逢六十進(jìn)一處理后在總和的那一行分別顯示出來(lái)。在excel中,默認(rèn)的是逢十進(jìn)一,所以逢六十進(jìn)一要通過我們編輯的邏輯計(jì)算來(lái)完成。具體是這樣的,參數(shù)除以六十得到的是一個(gè)證書部分和一個(gè)小數(shù)部分,取出整數(shù)部分加給上一級(jí)(如取出分的整數(shù)部分加給度)小數(shù)部分乘以六十留在本級(jí)(如分的小數(shù)部分乘以六十作為分)。由此就完成了度、分、秒的加減計(jì)算。(如圖3-10)圖3-10計(jì)算度、分、秒所得總和計(jì)算觀測(cè)角的閉合差。根據(jù)附合導(dǎo)線的閉合差公式(公式2-4)計(jì)算出觀測(cè)角的閉合差。aab = val(range(“i8”) + val(range(“j8”) / 60 + val(range(“k8”
31、) / 3600 計(jì)算閉合差acd = val(sheet1.cells(n + 10, 9) + val(sheet1.cells(n + 10, 10) / 60 + val(sheet1.cells(n + 10, 11) / 3600觀測(cè)的角度推算出的cd的方位角減去實(shí)際cd的方位角得到閉合差:fr = aab + (zhda1 + zhfa1 / 60 + zhma1 / 3600) - acd - 180 * (n + 2)參數(shù)fr就是計(jì)算得到的角度閉合差,理論上應(yīng)該是靈但是由于在測(cè)量中存在著誤差fr不為零。所以要將角度的閉合差分配到每個(gè)觀測(cè)角中。將計(jì)算的閉合差結(jié)果顯示出來(lái)如下代碼
32、在指定的單元格內(nèi)顯示出來(lái)sheet1.cells(n + 12, 1) = “附合差為:”sheet1.cells(n + 12, 2) = round(fr * 3600) & “”sheet1.cells(n + 13, 1) = “容許差為:”sheet1.cells(n + 13, 2) = “” & format(fr1, “0.00”) & “”if abs(fr) sheet1.cells(n + 9, 12) thenfreenumb = val(sheet1.cells(n + 9, 12)mini = n + 9end if 判斷觀測(cè)距離的最小值并且得到該值所在的行值。fp
33、c = fix(round(fr * 3600) / (n + 2) 平均分配差。for i = 1 to (n + 2)sheet1.cells(i + 7, 5) = 0 - fpcnext i將各角度的改正值顯示在指定單元格內(nèi)。根據(jù)以上的計(jì)算此時(shí)的參數(shù)mini已經(jīng)是最小的距離值所在的那個(gè)單元格的行數(shù),所以在此行角度的改正值要加上除去后的余數(shù)代碼如下:sheet1.cells(mini, 5) = (0 - fpc) - (round(fr * 3600) mod (n + 2)1. 推算各個(gè)方位角代碼的編寫:根據(jù)公式(2-3)來(lái)計(jì)算,由于我們采用的是左右所以就采用公式來(lái)計(jì)算。for i
34、= 1 to (n + 2)hudu(i) = (d(i) + f(i) / 60 + m(i) / 3600) + (val(sheet1.cells(i + 7, 5) / 3600)sheet1.cells(i + 7, 6) = int(hudu(i)sheet1.cells(i + 7, 7) = int(hudu(i) - int(hudu(i) * 60)sheet1.cells(i + 7, 8) = (hudu(i) - int(hudu(i) * 60 - int(hudu(i) - int(hudu(i) * 60) * 60next ifor i = 1 to (n +
35、 2)bth = bth + hudu(i)fwj(i) = aab - i * 180 + bthsheet1.cells(i + 8, 9) = int(fwj(i)sheet1.cells(i + 8, 10) = int(fwj(i) - int(fwj(i) * 60)sheet1.cells(i + 8, 11) = (fwj(i) - int(fwj(i) * 60 - int(fwj(i) - int(fwj(i) * 60) * 60next i通過以上代碼推算出了方位角fwj()并把他們顯示在指定的單元格內(nèi)。3.5坐標(biāo)計(jì)算代碼編寫計(jì)算坐標(biāo)增量根據(jù)公式(2-7)進(jìn)行計(jì)算,在進(jìn)
36、行此計(jì)算的時(shí)候要將方位角的換算成弧度值由于在上面的代碼中方位角已經(jīng)被處理成了度分秒的小數(shù)的形式所以在這里轉(zhuǎn)換為弧度只需要按公式(角度*/180)就可以了 。redim zlx(i) as doubleredim zly(i) as doublefor i = 1 to (n + 1)zlx(i) = format(jl(i) * cos(fwj(i) * (3.1415926 / 180), “0.000”)zly(i) = format(jl(i) * sin(fwj(i) * (3.1415926 / 180), “0.000”)zlxh = zlxh + zlx(i)zlyh = zly
37、h + zly(i)next i以上代碼就完成了對(duì)坐標(biāo)增量的計(jì)算,并且計(jì)算出了所有x、y增量的和。2. 坐標(biāo)增量的改正理論上通過推算得到的c點(diǎn)的坐標(biāo)應(yīng)該和已知的數(shù)據(jù)相同,但是由于測(cè)量誤差的存在得到的結(jié)果實(shí)際不同這就需要我們來(lái)對(duì)坐標(biāo)增量來(lái)進(jìn)行調(diào)整。根據(jù)公式(2-8)對(duì)坐標(biāo)增量的改正計(jì)算按公式計(jì)算通過代碼來(lái)實(shí)現(xiàn)就是如下代碼:val(sheet1.cells(8, 17) / jlh) * jl(i)val(sheet1.cells(8, 18) / jlh) * jl(i)然后再把計(jì)算得到的改正值分配給坐標(biāo)增量由如下代碼來(lái)完成。redim gzlx(i) as doubleredim gzly(i
38、) as doubleredim zbzx(i) as doubleredim zbzy(i) as doubleredim czlx(i) as doubleredim czly(i) as doublefor i = 1 to (n + 1)czlx(i) = format(0 - (zlxh - (val(sheet1.cells(n + 9, 17) - val(sheet1.cells(8, 17) / jlh) * jl(i), “0.000”)czly(i) = format(0 - (zlyh - (val(sheet1.cells(n + 9, 18) - val(sheet
39、1.cells(8, 18) / jlh) * jl(i), “0.000”)gzlx(i) = zlx(i) + czlx(i)gzly(i) = zly(i) + czly(i)zlxh2 = zlxh2 + gzlx(i)zlyh2 = zlyh2 + gzly(i)gxh = gxh + gzlx(i)gyh = gyh + gzly(i)czlxh = czlxh + czlx(i)czlyh = czlyh + czly(i)3.6坐標(biāo)結(jié)果的計(jì)算與輸出通過以上代碼得到了改正后的坐標(biāo)值,得到改正后的坐標(biāo)值按公式(2-9)進(jìn)行計(jì)算zbzx(i) = val(sheet1.cells(8
40、, 17) + zlxh2zbzy(i) = val(sheet1.cells(8, 18) + zlyh2sheet1.cells(i + 8, 13) = czlx(i) & vbcrlf & zlx(i)sheet1.cells(i + 8, 14) = czly(i) & vbcrlf & zly(i)sheet1.cells(i + 8, 15) = gzlx(i)sheet1.cells(i + 8, 16) = gzly(i)sheet1.cells(i + 8, 17) = zbzx(i)sheet1.cells(i + 8, 18) = zbzy(i)next ifbhc =
41、 (czlxh 2 + czlyh 2) 0.5sheet1.cells(n + 17, 1) = “閉合差為:”sheet1.cells(n + 17, 2) = format(fbhc, “0.00”)sheet1.cells(n + 18, 1) = “k=”sheet1.cells(n + 18, 2) = fbhc / jlhsheet1.cells(n + 11, 13) = zlxhsheet1.cells(n + 11, 14) = zlyhsheet1.cells(n + 11, 15) = gxhsheet1.cells(n + 11, 16) = gyhend ifend
42、 sub通過以上代碼完成了對(duì)坐標(biāo)的最終計(jì)算進(jìn)過調(diào)試后程序運(yùn)行正常。第4章 程序的應(yīng)用4.1附合導(dǎo)線計(jì)算程序的使用 4.1.1程序使用說(shuō)明(1)計(jì)算已知點(diǎn)的坐標(biāo)方位角打開工作薄3如圖4-1圖4-1已知點(diǎn)方位角計(jì)算表在附合導(dǎo)線方位角計(jì)算表中輸入已知點(diǎn)的坐標(biāo)(黃色色區(qū)域)。(2)輸入加密點(diǎn)個(gè)數(shù)在附合導(dǎo)線的中,首先要輸入未知點(diǎn)的個(gè)數(shù)。打開excel計(jì)算程序,在數(shù)據(jù)輸入中輸入未知點(diǎn)的個(gè)數(shù)(如 圖4-2)圖4-3加密點(diǎn)個(gè)數(shù)輸入按鈕單擊“請(qǐng)輸入加密點(diǎn)個(gè)數(shù)”按鈕,彈出以下對(duì)話框(如圖4-4)圖4-4加密點(diǎn)個(gè)數(shù)輸入對(duì)話框輸入未知點(diǎn)的個(gè)數(shù)以后,程序會(huì)自動(dòng)生成一個(gè)相應(yīng)的excel計(jì)算表格(如圖4-5)圖4-5自動(dòng)生成的excel計(jì)算表格(3)輸入觀測(cè)角將觀測(cè)的角度值以度、分、秒的格式輸入到(如圖4-5)的“觀測(cè)角”所在列的虛線部分。(4)輸入導(dǎo)線長(zhǎng)度將觀測(cè)得到的導(dǎo)線的長(zhǎng)度輸入(如圖4-5)“距離/m”所在列的虛線部分。(5)輸入導(dǎo)線ab和導(dǎo)線cd的方位
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年曲靖醫(yī)學(xué)高等??茖W(xué)校高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2024年昆明工業(yè)職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2024年成都工貿(mào)職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2024年徐州生物工程職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 二零二五年影視制作項(xiàng)目第三方擔(dān)保合作協(xié)議3篇
- 二零二五年度數(shù)據(jù)中心機(jī)房設(shè)備搬遷與數(shù)據(jù)中心搬遷后環(huán)境治理服務(wù)協(xié)議3篇
- 2024年廣州科技貿(mào)易職業(yè)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 2024年廣安職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2024年廣東江門中醫(yī)藥職業(yè)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 2024年山東經(jīng)貿(mào)職業(yè)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 招聘專員述職報(bào)告doc
- 英語(yǔ)-北京市西城區(qū)2023-2024學(xué)年高三期末考試題和答案
- 福利待遇綜述
- 幼兒園大班數(shù)學(xué)上學(xué)期期中考試練習(xí)題帶解析
- 竣工驗(yàn)收階段服務(wù)配合保障措施
- 集控中心方案
- 2024年湖南會(huì)展集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 2024年山東省春季高考技能考試汽車專業(yè)試題庫(kù)-中(多選題匯總)
- 2024年《大學(xué)語(yǔ)文》期末考試復(fù)習(xí)題庫(kù)(含答案)
- 電纜及電纜橋架安裝施工方案
- 跨部門溝通與協(xié)調(diào)課件
評(píng)論
0/150
提交評(píng)論