




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課題名稱:測(cè)量坐標(biāo)計(jì)算程序的設(shè)計(jì)摘要VB是VisualBasic的縮寫,是可視化的編程語(yǔ)言,是一種簡(jiǎn)單、高效地開(kāi)發(fā)應(yīng)用軟件的工具。特別適合初學(xué)者學(xué)習(xí)程序開(kāi)發(fā)。隨著VisualBasic的逐步發(fā)展完善和功能的不斷括展,很多軟件開(kāi)發(fā)人員利用VisualBasic開(kāi)發(fā)了大量的應(yīng)用軟件。VisualBasic已經(jīng)成為使用人數(shù)最多,應(yīng)用領(lǐng)域最廣的程序設(shè)計(jì)語(yǔ)言和軟件開(kāi)發(fā)工具。日常測(cè)繪工作中經(jīng)常使用全站儀測(cè)量所需的測(cè)繪數(shù)據(jù),全站儀測(cè)量數(shù)據(jù)分為坐標(biāo)數(shù)據(jù)和邊角數(shù)據(jù),而最終提供用戶的數(shù)據(jù)一般為坐標(biāo)數(shù)據(jù)。由于坐標(biāo)數(shù)據(jù)測(cè)量的局限性,我們野外測(cè)繪中經(jīng)常測(cè)量邊角數(shù)據(jù),本次開(kāi)發(fā)的系統(tǒng)就是把測(cè)量的邊角數(shù)據(jù)計(jì)算輸出坐標(biāo)數(shù)據(jù)。最終把坐標(biāo)數(shù)據(jù)提供給需要測(cè)量成果的人員或單位。本系統(tǒng)就是使用VB開(kāi)發(fā)的測(cè)量邊角數(shù)據(jù)計(jì)算系統(tǒng),在開(kāi)發(fā)過(guò)程中的原理和方法,主要包括數(shù)據(jù)文件的讀取、檢查、計(jì)算、輸出,實(shí)現(xiàn)了邊角數(shù)據(jù)輸出坐標(biāo)數(shù)據(jù)。本系統(tǒng)的主要功能為邊角數(shù)據(jù)文件的讀取??刂泣c(diǎn)坐標(biāo)文件的讀取。邊角數(shù)據(jù)文件的檢查??刂泣c(diǎn)坐標(biāo)文件的檢查。邊角文件計(jì)算坐標(biāo)文件。計(jì)算過(guò)程的正確性檢查。測(cè)量距離規(guī)范性檢查。測(cè)量定向規(guī)范性檢查。檢查結(jié)果的輸出。定向信息的輸出。坐標(biāo)成果的輸出。目錄一、項(xiàng)目概況 一、項(xiàng)目概況項(xiàng)目背景及目的目前大部分坐標(biāo)數(shù)據(jù)的采集方式為全站儀直接采集,而全站儀直接采集坐標(biāo)數(shù)據(jù)的前提是控制點(diǎn)已經(jīng)測(cè)量完成,并且需要保證控制點(diǎn)的正確。如果控制點(diǎn)數(shù)據(jù)錯(cuò)誤,那全站儀測(cè)量的坐標(biāo)數(shù)據(jù)也是錯(cuò)誤的,所以會(huì)造成測(cè)量工作的重復(fù)性。為了擺脫控制點(diǎn)的限制,提高工作效率,我們可以采用測(cè)量邊角的方式進(jìn)行測(cè)量。邊角測(cè)量的優(yōu)點(diǎn)是可以在測(cè)量控制點(diǎn)前進(jìn)行測(cè)量數(shù)據(jù)采集,擺脫了控制點(diǎn)的約束。即使控制測(cè)量出現(xiàn)錯(cuò)誤,我們只需重復(fù)測(cè)量控制點(diǎn)數(shù)據(jù)即可,不影響邊角數(shù)據(jù),也不需要野外重復(fù)采集測(cè)量數(shù)據(jù)。目前市面上的邊角計(jì)算系統(tǒng)存在各種各樣的問(wèn)題,主要問(wèn)題有(1)計(jì)算過(guò)程比較繁瑣,如每計(jì)算一站需操作一次程序。(2)只能讀取某一種格式的數(shù)據(jù)文件,具有局限性。(3)未進(jìn)行數(shù)據(jù)文件的檢查,造成成果數(shù)據(jù)存在錯(cuò)誤數(shù)據(jù)。(4)沒(méi)有對(duì)定向數(shù)據(jù)和測(cè)量數(shù)據(jù)的規(guī)范性進(jìn)行檢查。(5)只能輸出坐標(biāo)成果數(shù)據(jù),無(wú)法輸出檢查數(shù)據(jù)。針對(duì)已有的邊角計(jì)算系統(tǒng)的各種問(wèn)題,為了使邊角計(jì)算程序具有通用性、規(guī)范性、合理性,需開(kāi)發(fā)一個(gè)更符合現(xiàn)實(shí)需要的、合理的、通用的邊角計(jì)算系統(tǒng)。2、編程語(yǔ)言的選擇本次開(kāi)發(fā)的系統(tǒng)界面設(shè)計(jì)和功能設(shè)計(jì)相對(duì)簡(jiǎn)單,根據(jù)對(duì)各種編程語(yǔ)言的對(duì)比分析,最終選擇了VB。因?yàn)閂B的特點(diǎn)和優(yōu)點(diǎn)更適合本次開(kāi)發(fā)系統(tǒng)的需要。(1)VB語(yǔ)言的特點(diǎn)=1\*GB3①VB是一種可視化的、面向?qū)ο蟮?、采用事件?qū)動(dòng)方式的結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言;=1\*GB3①可用于開(kāi)發(fā)Windows環(huán)境下的各類應(yīng)用程序;=3\*GB3③在VisualBasic環(huán)境下,利用事件驅(qū)動(dòng)的編程機(jī)制的可視化設(shè)計(jì)工具。(2)使用VB語(yǔ)言的優(yōu)點(diǎn)=1\*GB3①功能強(qiáng)大,可以與Windows專業(yè)開(kāi)發(fā)工具相媲美;=2\*GB3②VB始終是最高效、開(kāi)發(fā)成本最低的強(qiáng)大的開(kāi)發(fā)工具;=3\*GB3③簡(jiǎn)單易學(xué)、效率高;使用Windows內(nèi)部的廣泛應(yīng)用程序接口(API)函數(shù),使用動(dòng)態(tài)鏈接庫(kù)(DLL)、對(duì)象的鏈接與嵌入(OLE)、開(kāi)放式數(shù)據(jù)連接(ODBC)等技術(shù),可以高效、快速地開(kāi)發(fā)Windows環(huán)境下功能強(qiáng)大、圖形界面豐富的應(yīng)用軟件。3、實(shí)現(xiàn)的功能(1)數(shù)據(jù)的讀取=1\*GB3①各種邊角數(shù)據(jù)文件的讀??;=2\*GB3②控制點(diǎn)數(shù)據(jù)文件的讀取。(2)數(shù)據(jù)文件的檢查=1\*GB3①邊角數(shù)據(jù)文件的檢查;=2\*GB3②控制點(diǎn)數(shù)據(jù)文件的檢查。(3)各種格式數(shù)據(jù)文件轉(zhuǎn)換成標(biāo)準(zhǔn)格式(4)數(shù)據(jù)的計(jì)算(5)數(shù)據(jù)計(jì)算的正確性和規(guī)范性檢查=1\*GB3①每一測(cè)站的正確性檢查;=2\*GB3②每一測(cè)站誤差規(guī)范性檢查。(6)各種數(shù)據(jù)的輸出=1\*GB3①坐標(biāo)成果數(shù)據(jù)文件輸出;=2\*GB3②測(cè)站信息文件輸出;=3\*GB3③距離檢查文件輸出;=4\*GB3④距離倍數(shù)檢查文件輸出。
二、程序設(shè)計(jì)1、開(kāi)發(fā)步驟本次程序開(kāi)發(fā)大致分為七個(gè)階段,分別為需求分析,功能分析及設(shè)計(jì)(概略設(shè)計(jì))、界面設(shè)計(jì)和程序設(shè)計(jì)(詳細(xì)設(shè)計(jì))及程序的編寫、程序的測(cè)試與檢驗(yàn)、程序的打包。整個(gè)過(guò)程如下圖所示。需求分析需求分析概要設(shè)計(jì)程序設(shè)計(jì)程序打包界面設(shè)計(jì)測(cè)試圖1:程序開(kāi)發(fā)過(guò)程程序編寫程序的開(kāi)發(fā)從需求分析開(kāi)始,需求分析是整個(gè)程序的開(kāi)始,也是程序定義階段的最后一步,是確定程序必須完成那些工作,也就是對(duì)目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。本次系統(tǒng)的目標(biāo)比較明確,也相對(duì)單一,基本功能也基本確定。所以需求分析相對(duì)簡(jiǎn)單和明確。需求分析完成后接下來(lái)就是概要設(shè)計(jì)和功能設(shè)計(jì),也就是整個(gè)程序的總體設(shè)計(jì),在這個(gè)過(guò)程中要確定程序的總體結(jié)構(gòu),確定需要的模塊及主要的數(shù)據(jù)結(jié)構(gòu)等等。程序概要設(shè)計(jì)完成之后,接下來(lái)就是程序的詳細(xì)設(shè)計(jì)和程序的編寫。詳細(xì)設(shè)計(jì)包括數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、算法設(shè)計(jì)、界面設(shè)計(jì)、程序設(shè)計(jì)。設(shè)計(jì)完成后就根據(jù)詳細(xì)設(shè)計(jì)內(nèi)容進(jìn)行程序的編寫開(kāi)發(fā)。程序編寫完成后需要對(duì)程序進(jìn)行測(cè)試和檢驗(yàn)。測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程,根據(jù)程序開(kāi)發(fā)各個(gè)階段的規(guī)格和內(nèi)部結(jié)構(gòu)進(jìn)行的一批測(cè)試。測(cè)試分為單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試等。測(cè)試完成后利用各種格式的的數(shù)據(jù)對(duì)程序進(jìn)行檢驗(yàn),從而發(fā)現(xiàn)程序的不足和缺陷。程序測(cè)試和檢驗(yàn)完成后就需要對(duì)程序進(jìn)行打包和編寫使用說(shuō)明。2、功能分析及概要設(shè)計(jì)(1)數(shù)據(jù)的讀取=1\*GB3①各種邊角數(shù)據(jù)文件的讀取各種測(cè)量設(shè)備通訊輸出到計(jì)算機(jī)中的數(shù)據(jù)格式都不統(tǒng)一,通過(guò)研究分析各種設(shè)備輸出的數(shù)據(jù)格式,分別制定不同的數(shù)據(jù)讀取函數(shù),能夠使程序達(dá)到通用的要求,增加程序的通用性,擺脫目前市面上程序的單一性。根據(jù)數(shù)據(jù)格式的不一致確定各種數(shù)據(jù)格式的數(shù)據(jù)類型。=2\*GB3②控制點(diǎn)數(shù)據(jù)文件的讀取控制點(diǎn)文件相對(duì)固定,按正常測(cè)量的坐標(biāo)數(shù)據(jù)標(biāo)準(zhǔn)作為控制點(diǎn)坐標(biāo)文件的標(biāo)準(zhǔn),這樣具有通用性。確定符合控制點(diǎn)文件讀取的數(shù)據(jù)類型。(2)數(shù)據(jù)文件的檢查=1\*GB3①邊角數(shù)據(jù)文件的檢查檢查邊角數(shù)據(jù)文件與選擇數(shù)據(jù)格式的匹配性;檢查邊角數(shù)據(jù)的每一行開(kāi)頭數(shù)據(jù)的正確性;檢查邊角數(shù)據(jù)的每一行數(shù)據(jù)的完整性;檢查每一個(gè)數(shù)據(jù)的數(shù)據(jù)類型的正確性。=2\*GB3②控制點(diǎn)數(shù)據(jù)文件的檢查檢查控制點(diǎn)數(shù)據(jù)的每一行數(shù)據(jù)的完整性、正確性;檢查每一個(gè)數(shù)據(jù)的數(shù)據(jù)類型的正確性。(3)各種格式數(shù)據(jù)文件轉(zhuǎn)換成標(biāo)準(zhǔn)格式根據(jù)數(shù)據(jù)類型選擇控件,選擇輸入數(shù)據(jù)的錄入函數(shù),但最終轉(zhuǎn)換為程序計(jì)算所需的統(tǒng)一格式數(shù)據(jù),能夠使各種數(shù)據(jù)類型共用一個(gè)計(jì)算過(guò)程,減少了程序開(kāi)發(fā)的重復(fù)性。通過(guò)分析不同格式數(shù)據(jù)確定符合程序計(jì)算的數(shù)據(jù)類型。(4)數(shù)據(jù)的計(jì)算根據(jù)測(cè)量學(xué)的原理及計(jì)算公式,編寫出通用的公共計(jì)算函數(shù),最終計(jì)算出能夠測(cè)量所需的坐標(biāo)數(shù)據(jù)。(5)數(shù)據(jù)計(jì)算的正確性和規(guī)范性檢查=1\*GB3①每一測(cè)站的正確性檢查檢查控制點(diǎn)點(diǎn)號(hào)的正確性,能夠使每一站能夠計(jì)算輸出。=2\*GB3②每一測(cè)站誤差規(guī)范性檢查根據(jù)每一站計(jì)算的過(guò)程,輸出每一站的測(cè)站信息,通過(guò)測(cè)站信息中的測(cè)量誤差及測(cè)量的要求,判斷每一測(cè)站的計(jì)算是否正確,使計(jì)算輸出的坐標(biāo)成果能夠達(dá)到需求者的要求。(6)各種數(shù)據(jù)的輸出=1\*GB3①坐標(biāo)成果數(shù)據(jù)文件輸出坐標(biāo)成果數(shù)據(jù)是程序的最終目標(biāo),是提供坐標(biāo)成果使用者的合格數(shù)據(jù)。=2\*GB3②測(cè)站信息文件輸出測(cè)站信息文件是計(jì)算過(guò)程文件,是保證坐標(biāo)數(shù)據(jù)正確性和準(zhǔn)確性的檢查文件,能夠通過(guò)測(cè)站信息文件看出測(cè)量的準(zhǔn)確性、測(cè)量者的工作態(tài)度和儀器設(shè)備的精度指標(biāo)是否超限。=3\*GB3③距離檢查文件輸出距離檢查文件也是計(jì)算過(guò)程文件,主要檢查測(cè)量距離是否符合技術(shù)要求和測(cè)量規(guī)范??梢酝ㄟ^(guò)距離檢查文件剔除出不符合技術(shù)要求的數(shù)據(jù)。=4\*GB3④距離倍數(shù)檢查文件輸出測(cè)量距離倍數(shù)檢查是檢查測(cè)量邊長(zhǎng)和定向邊長(zhǎng)的比例,根據(jù)測(cè)量要求的不同可以剔除出超過(guò)測(cè)量倍數(shù)的數(shù)據(jù),保證測(cè)量數(shù)據(jù)的規(guī)范性和正確性。3、詳細(xì)設(shè)計(jì)及界面設(shè)計(jì)程序概要設(shè)計(jì)及功能分析完成后就開(kāi)始對(duì)程序進(jìn)行詳細(xì)設(shè)計(jì),詳細(xì)設(shè)計(jì)包括界面設(shè)計(jì)、數(shù)據(jù)機(jī)構(gòu)設(shè)計(jì)和程序詳細(xì)設(shè)計(jì)等等。根據(jù)程序的概要設(shè)計(jì)和功能分析,整個(gè)程序分為7部分,分別為程序開(kāi)始、邊角文件的打開(kāi)、邊角文件的檢查、控制文件的打開(kāi)、控制文件的檢查、計(jì)算坐標(biāo)文件及檢查計(jì)算的正確性、成果的輸出。程序的整個(gè)詳細(xì)設(shè)計(jì)過(guò)程見(jiàn)圖2。通過(guò)概要設(shè)計(jì)及功能分析,程序的界面需要一個(gè)主界面和輔助界面。主界面為程序的核心界面(如圖3),包含程序的檢查模塊、計(jì)算模塊、輸出模塊等等;輔助界面為測(cè)站信息瀏覽界面(如圖4),能夠讓使用者及時(shí)的查看計(jì)算的精度和準(zhǔn)確性。本次程序主界面設(shè)計(jì)分為五大部分,分別為文件打開(kāi)部分、基礎(chǔ)設(shè)置部分、檢查設(shè)計(jì)部分、輸出設(shè)置部分、計(jì)算檢查部分。文件部分有3個(gè)Label控件、3個(gè)Text控件、2個(gè)Command控件、1個(gè)dlgopen控件組成。本部分的作用為打開(kāi)控制點(diǎn)文件和打開(kāi)邊角文件。為了減少程序操作,坐標(biāo)文件采用了自動(dòng)加后綴的形式,自動(dòng)保存在邊角文件目錄下。開(kāi)始開(kāi)始打開(kāi)控制文件打開(kāi)邊角文件檢查不正確不正確計(jì)算輸出成果圖2:程序計(jì)算過(guò)程的設(shè)計(jì)檢查基礎(chǔ)設(shè)置部分有1個(gè)Label控件、1個(gè)Combo控件、1個(gè)Check控件組成,本部分的作用是選擇數(shù)據(jù)讀入文件的格式和控制點(diǎn)文件自動(dòng)調(diào)用設(shè)置。圖3:程序的主界面圖檢查設(shè)置部分有2個(gè)Label控件、2個(gè)Text控件組成,本部分的作用是設(shè)置距離檢查的限值和邊長(zhǎng)倍數(shù)的限值。輸出設(shè)置部分有1個(gè)Label控件、1個(gè)Combo控件、1個(gè)Check控件組成,本部分的作用是設(shè)置輸出文件的文件格式和輸出文件的文件類型,坐標(biāo)文件和測(cè)站信息文件是必要的輸出文件,而距離和倍數(shù)檢查文件是可選的輸出文件。計(jì)算部分為本程序的核心部分,有1個(gè)Command控件、1個(gè)ProgressBar控件組成。主要作用為檢查讀取文件的規(guī)范性和準(zhǔn)確性、計(jì)算坐標(biāo)成果數(shù)據(jù)、輸出各類輸出文件。圖4:測(cè)站信息界面圖本程序的輔助界面有1個(gè)RichTextBox控制組成,主要作用是計(jì)算完成后自動(dòng)調(diào)用測(cè)站信息文件,及時(shí)讓計(jì)算者核實(shí)計(jì)算的正確性和了解定向的精確性。4、程序設(shè)計(jì)及編寫根據(jù)程序的概要設(shè)計(jì)和詳細(xì)設(shè)計(jì),程序主要部分分為5個(gè)部分。分別為數(shù)據(jù)類型設(shè)計(jì)、文件的讀取、文件的檢查、邊角文件的計(jì)算和文件的輸出。程序還有部分輔助函數(shù)等等,下面我們主要介紹程序的主要部分。(1)數(shù)據(jù)類型根據(jù)程序的需要我們?cè)O(shè)計(jì)了控制點(diǎn)數(shù)據(jù)類型、邊角數(shù)據(jù)類型、結(jié)果坐標(biāo)數(shù)據(jù)類型、站點(diǎn)及定向邊數(shù)據(jù)類型、測(cè)量點(diǎn)數(shù)據(jù)類型、測(cè)站信息數(shù)據(jù)類型等等。下面是主要的數(shù)據(jù)類型。PublicTypeDXYZ'控制點(diǎn)dAsStringXAsDoubleYAsDoubleZAsDoubleEndTypePublicTypeXXXX'原始數(shù)據(jù)X1AsStringX2AsStringX3AsStringX4AsStringEndTypePublicTypeDBXYZ'結(jié)果坐標(biāo)數(shù)據(jù)'FAsIntegerDHAsStringBHAsStringXAsDoubleYAsDoubleZAsDoubleEndTypePublicTypeMSTN'站點(diǎn)及定向邊'FAsIntegerdh1AsStringBG1AsDoubledh2AsStringBG2AsDoubleSPAsDoubleSZAsDoubleJLAsDoubleSTRAsIntegerNDAsIntegerEndTypePublicTypeMSS'測(cè)量點(diǎn)'FAsIntegerDHAsStringBGAsDoubleBHAsStringSPAsDoubleSZAsDoubleJLAsDoubleXHAsIntegerEndTypePublicTypeCZXX'測(cè)站信息'FAsIntegerD1AsStringX1AsDoubleY1AsDoubleZ1AsDoubleD2AsStringX2AsDoubleY2AsDoubleZ2AsDoubleB1AsDoubleB2AsDoubleJLAsDoubleSZAsDoubleEndType(2)文件的讀取文件讀取模塊分為邊角文件讀取和控制點(diǎn)文件讀取,下面主要介紹邊角文件的讀取函數(shù)。下面讀取函數(shù)是一種數(shù)據(jù)格式的讀取函數(shù)。PublicFunctionTPC_RD_BJ(fl2AsString)AsBooleanDimw1,i,w0,m,nAsIntegerDimss,kkAsStringDimdssDimX()AsXXXXw0=RD_WJ_HS(fl2)ReDimX(w0)AsXXXXw1=0m=0n=0Openfl2ForInputAs#16DoWhileNotEOF(16)LineInput#16,kkss=Replace(kk,"",",")dss=Split(ss,",")X(w1).X1=dss(0)X(w1).X2=Trim(dss(1))X(w1).X3=dss(2)X(w1).X4=dss(3)w1=w1+1LoopClose#16Fori=0Tow0-1IfX(i).X1="STN"ThenBJ_STN(m).dh1=X(i).X2BJ_STN(m).BG1=X(i).X3BJ_STN(m).dh2=X(i+1).X2BJ_STN(m).BG2=X(i+1).X3BJ_STN(m).SP=X(i+2).X2BJ_STN(m).SZ=X(i+2).X3BJ_STN(m).JL=X(i+2).X4BJ_STN(m).STR=n+1m=m+1i=i+2ElseIfX(i).X1="SS"ThenBJ_SS(n).DH=X(i).X2BJ_SS(n).BG=X(i).X3BJ_SS(n).BH=X(i).X4BJ_SS(n).SP=X(i+1).X2BJ_SS(n).SZ=X(i+1).X3BJ_SS(n).JL=X(i+1).X4n=n+1i=i+1EndIfNextFori=0Tom-2BJ_STN(i).ND=BJ_STN(i+1).STR-1NextBJ_STN(m-1).ND=nTPC_RD_BJ=TrueEndFunction(3)文件檢查文件檢查模塊分為控制點(diǎn)文件檢查和邊角文件檢查。只有文件讀取正確才能保證下面文件計(jì)算的正確,所以文件檢查函數(shù)要設(shè)計(jì)的全面。=1\*GB3①控制點(diǎn)文件檢查PublicFunctionJC_KZD(fl2AsString)AsBooleanJC_KZD=TrueDimw1,i,jAsIntegerDimkkAsStringDimdssw1=0Openfl2ForInputAs#17DoWhileNotEOF(17)LineInput#17,kkdss=Split(kk,",")w1=w1+1i=UBound(dss)Ifi=3ThenForj=1ToiIfIsNumeric(dss(j))=FalseThenMsgBox"文件'"&fl2&"'的第"&w1&"行坐標(biāo)X,Y,Z中存在非數(shù)字型!"JC_KZD=FalseClose#17ExitFunctionEndIfNextElseMsgBox"文件'"&fl2&"'的第"&w1&"行是空行或逗號(hào)個(gè)數(shù)或逗號(hào)符號(hào)錯(cuò)誤!"JC_KZD=FalseClose#17ExitFunctionEndIfLoopClose#17EndFunction=2\*GB3②邊角文件檢查PublicFunctionTPC_JC_BJ(fl2AsString)AsBooleanDimw1,i,j,wstn,wbs,wsd,wssAsIntegerDimss,kkAsStringDimdssw1=0wstn=0wss=0wsd=0wbs=0Dimlstn()AsIntegerDimlbs()AsIntegerDimlsd()AsIntegerDimlss()AsIntegerReDimlstn(STN_SL(fl2))AsIntegerReDimlbs(STN_SL(fl2))AsIntegerReDimlsd(STN_SL(fl2)+SS_SL(fl2))AsIntegerReDimlss(SS_SL(fl2))AsIntegerOnErrorGoToxxxOpenfl2ForInputAs#13DoWhileNotEOF(13)LineInput#13,kkss=Replace(kk,"",",")dss=Split(ss,",")w1=w1+1i=UBound(dss)Ifi=3ThenIfdss(0)="STN"ThenIfIsNumeric(dss(2))=FalseThenTPC_JC_BJ=FalseMsgBox"文件'"&fl2&"'的第"&w1&"行標(biāo)高中存在錯(cuò)誤!"Close#13ExitFunctionEndIflstn(wstn)=w1wstn=wstn+1ElseIfdss(0)="BS"ThenIfIsNumeric(dss(2))=FalseThenMsgBox"文件'"&fl2&"'的第"&w1&"行標(biāo)高中存在錯(cuò)誤!"TPC_JC_BJ=FalseClose#13ExitFunctionEndIflbs(wbs)=w1wbs=wbs+1ElseIfdss(0)="SD"ThenIfIsNumeric(dss(1))=FalseOrIsNumeric(dss(2))=FalseOrIsNumeric(dss(3))=FalseThenMsgBox"文件'"&fl2&"'的第"&w1&"行中數(shù)字類型存在錯(cuò)誤!"TPC_JC_BJ=FalseClose#13ExitFunctionEndIflsd(wsd)=w1wsd=wsd+1ElseIfdss(0)="SS"ThenIfIsNumeric(dss(2))=FalseThenMsgBox"文件'"&fl2&"'的第"&w1&"行標(biāo)高中存在錯(cuò)誤!"TPC_JC_BJ=FalseClose#13ExitFunctionEndIflss(wss)=w1wss=wss+1ElseMsgBox"文件'"&fl2&"'的第"&w1&"行行頭存在錯(cuò)誤!或選擇的邊角文件格式不對(duì)!"TPC_JC_BJ=FalseClose#13ExitFunctionEndIfElseTPC_JC_BJ=FalseMsgBox"文件'"&fl2&"'的第"&w1&"行是空行或逗號(hào)個(gè)數(shù)或逗號(hào)符號(hào)錯(cuò)誤!或選擇的邊角文件格式不對(duì)!"Close#13ExitFunctionEndIfLoopForj=1Towstn-1Iflstn(j)-lstn(j-1)<5ThenMsgBox"文件'"&fl2&"'的第"&lstn(j-1)&"行和第"&lstn(j)&"行中間數(shù)據(jù)格式STN錯(cuò)誤!"TPC_JC_BJ=FalseClose#13ExitFunctionEndIfNextForj=1Towbs-1Iflbs(j)-lbs(j-1)<5ThenMsgBox"文件'"&fl2&"'的第"&lbs(j-1)&"行和第"&lbs(j)&"行中間數(shù)據(jù)格式BS錯(cuò)誤!"TPC_JC_BJ=FalseClose#13ExitFunctionEndIfNextForj=1Towss-1Iflss(j)-lss(j-1)<>5Andlss(j)-lss(j-1)<>2ThenMsgBox"文件'"&fl2&"'的第"&lss(j-1)&"行和第"&lss(j)&"行中間數(shù)據(jù)格式SS錯(cuò)誤!"TPC_JC_BJ=FalseClose#13ExitFunctionEndIfNextForj=1Towsd-1Iflsd(j)-lsd(j-1)<>3Andlsd(j)-lsd(j-1)<>2ThenMsgBox"文件'"&fl2&"'的第"&lsd(j-1)&"行和第"&lsd(j)&"行中間數(shù)據(jù)格式SD錯(cuò)誤!"TPC_JC_BJ=FalseClose#13ExitFunctionEndIfNextClose#13TPC_JC_BJ=Truexxx:Close#13EndFunction(4)測(cè)量文件的計(jì)算測(cè)量文件計(jì)算模塊為坐標(biāo)計(jì)算程序的核心部分,本函數(shù)調(diào)用的是統(tǒng)一標(biāo)準(zhǔn)格式數(shù)據(jù)。這樣就減少程序編寫的編寫量,但需要定義統(tǒng)一的數(shù)據(jù)類型。PublicFunctionJS_BJ(d()AsDXYZ,n()AsMSTN,S()AsMSS,Z()AsDBXYZ,X()AsCZXX)AsBooleanDimi,j,k,mAsIntegerDimdx,dy,e,g,ddx,ddy,ddz,spjAsDoubleForm1.ProgressBar1.Min=0Form1.ProgressBar1.Max=UBound(n)Fori=1ToUBound(n)Form1.ProgressBar1.Value=iForj=1ToUBound(d)Ifn(i-1).dh1=d(j-1).dThenX(i-1).D1=d(j-1).dX(i-1).X1=d(j-1).XX(i-1).Y1=d(j-1).YX(i-1).Z1=d(j-1).ZExitForElseIfi>1ThenFork=n(i-2).NDTo1Step-1Ifn(i-1).dh1=Z(k-1).DHThenX(i-1).D1=Z(k-1).DHX(i-1).X1=Z(k-1).XX(i-1).Y1=Z(k-1).YX(i-1).Z1=Z(k-1).Zq1=1EndIfNextEndIfNextForj=1ToUBound(d)Ifn(i-1).dh2=d(j-1).dThenX(i-1).D2=d(j-1).dX(i-1).X2=d(j-1).XX(i-1).Y2=d(j-1).YX(i-1).Z2=d(j-1).ZExitForElseIfi>1ThenFork=n(i-2).NDTo1Step-1Ifn(i-1).dh2=Z(k-1).DHThenX(i-1).D2=Z(k-1).DHX(i-1).X2=Z(k-1).XX(i-1).Y2=Z(k-1).YX(i-1).Z2=Z(k-1).Zq1=1EndIfNextEndIfNext''''''''''''''''''''''''''''''''''''''''坐標(biāo)計(jì)算dx=X(i-1).X2-X(i-1).X1dy=X(i-1).Y2-X(i-1).Y1Ifdx>0Theng=Atn(dy/dx)ElseIfdx<0Theng=Atn(dy/dx)+PIElseIfdx=0Anddy>0Theng=PI/2ElseIfdx=0Anddy<0Theng=3*PI/2EndIfForm=n(i-1).STRTon(i-1).NDspj=HS(S(m-1).SP)/180*PI+g-HS(n(i-1).SP)/180*PIddx=S(m-1).JL*jlcs*Sin(HS(S(m-1).SZ)/180*PI)*Cos(spj)ddy=S(m-1).JL*jlcs*Sin(HS(S(m-1).SZ)/180*PI)*Sin(spj)ddz=S(m-1).JL*jlcs*Cos(HS(S(m-1).SZ)/180*PI)+n(i-1).BG1-S(m-1).BGZ(m-1).DH=S(m-1).DHZ(m-1).BH=S(m-1).BHZ(m-1).X=X(i-1).X1+ddxZ(m-1).Y=X(i-1).Y1+ddyZ(m-1).Z=X(i-1).Z1+ddzNextNext'MsgBoxUBound(d)&""&UBound(n)&""&UBound(S)JS_BJ=TrueEndFunction(5)各種文件的輸出文件輸出模塊主要包含測(cè)站信息輸出函數(shù)、坐標(biāo)數(shù)據(jù)輸出函數(shù)、距離檢查輸出函數(shù)、倍數(shù)檢查輸出函數(shù)。=1\*GB3①測(cè)站信息輸出PublicFunctionOUT_JG_CZ(n()AsMSTN,X()AsCZXX,CCZZAsString)AsBoolean'輸出測(cè)站情況Dimi,jAsIntegerDimdx,dy,ds1,ds2,dh1,dh2,ddh,ddsAsDoubleOpenCCZZForOutputAs#28Fori=0ToUBound(n)-1dx=X(i).X2-X(i).X1dy=X(i).Y2-X(i).Y1dh1=X(i).Z2-X(i).Z1ds1=Sqr(dx*dx+dy*dy)ds2=n(i).JL*jlcs*Sin(HS(n(i).SZ)/180*PI)dh2=n(i).JL*jlcs*Cos(HS(n(i).SZ)/180*PI)+n(i).BG1-n(i).BG2dds=Format(ds1,"##0.000")-Format(ds2,"##0.000")ddh=Format(dh1,"##0.000")-Format(dh2,"##0.000")Print#28,"站點(diǎn):"&n(i).dh1&"定向點(diǎn):"&n(i).dh2Print#28,"測(cè)量點(diǎn)從:"&n(i).STR&"到"&n(i).NDPrint#28,"測(cè)站點(diǎn)坐標(biāo):"&n(i).dh1&","&Format(X(i).X1,"##0.000")&","&Format(X(i).Y1,"##0.000")&","&Format(X(i).Z1,"##0.000")Print#28,"定向點(diǎn)坐標(biāo):"&n(i).dh2&","&Format(X(i).X2,"##0.000")&","&Format(X(i).Y2,"##0.000")&","&Format(X(i).Z2,"##0.000")Print#28,"坐標(biāo)反算距離:"&Format(ds1,"##0.000")&"測(cè)量距離:"&Format(ds2,"##0.000")&"距離差:"&Format(dds,"##0.000")Print#28,"坐標(biāo)反算高差:"&Format(dh1,"##0.000")&"測(cè)量高差:"&Format(dh2,"##0.000")&"高差差:"&Format(ddh,"##0.000")Print#28,NextClose#28OUT_JG_CZ=TrueEndFunction=2\*GB3②測(cè)量坐標(biāo)數(shù)據(jù)輸出PublicFunctionOUT_JG_ZB(xzbAsString,FFAsInteger,Z()AsDBXYZ)AsBoolean'輸出坐標(biāo)DimiAsIntegerOpenxzbForOutputAs#29Fori=0ToUBound(Z)-1IfFF=0ThenPrint#29,Z(i).DH&","&Format(Z(i).X,"##0.000")&","&Format(Z(i).Y,"##0.000")&","&Format(Z(i).Z,"##0.000")ElseIfFF=1ThenPrint#29,Z(i).DH&",,"&Format(Z(i).Y,"##0.000")&","&Format(Z(i).X,"##0.000")&","&Format(Z(i).Z,"##0.000")ElseIfFF=2ThenPrint#29,Z(i).DH&","&Z(i).BH&","&Format(Z(i).Y,"##0.000")&","&Format(Z(i).X,"##0.000")&","&Format(Z(i).Z,"##0.000")ElseIfFF=3ThenPrint#29,Z(i).BH&","&Format(Z(i).X,"##0.000")&","&Format(Z(i).Y,"##0.000")&","&Format(Z(i).Z,"##0.000")EndIfNextClose#29OUT_JG_ZB=TrueEndFunction=3\*GB3③測(cè)量距離檢查情況輸出PublicFunctionOUT_JC_JL(FJLAsString,FFAsDouble,S()AsMSS)As
溫馨提示
- 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ù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 泉州工程職業(yè)技術(shù)學(xué)院《過(guò)程控制專業(yè)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 泉州紡織服裝職業(yè)學(xué)院《注冊(cè)電氣工程師概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 上??萍即髮W(xué)《會(huì)計(jì)制度設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 商丘師范學(xué)院《信息安全攻防對(duì)抗實(shí)訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 興安職業(yè)技術(shù)學(xué)院《機(jī)器學(xué)習(xí)與人工智能導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 3《植物媽媽有辦法》教學(xué)設(shè)計(jì)-2024-2025學(xué)年統(tǒng)編版語(yǔ)文二年級(jí)上冊(cè)
- 人教版七年級(jí)歷史與社會(huì)下冊(cè)6.4.2-高原圣城-拉薩教學(xué)設(shè)計(jì)
- 河池2025年廣西河池市事業(yè)單位招聘731人筆試歷年參考題庫(kù)附帶答案詳解
- 7微生物與健康 教學(xué)設(shè)計(jì) -2023-2024學(xué)年科學(xué)六年級(jí)上冊(cè)教科版
- 揚(yáng)州環(huán)境資源職業(yè)技術(shù)學(xué)院《田徑教學(xué)與實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 2023年設(shè)備檢修標(biāo)準(zhǔn)化作業(yè)規(guī)范
- 光伏電站除草服務(wù)(合同)范本【詳盡多條款】
- 2023年考核銀行安全保衛(wèi)人員真題與答案
- 儲(chǔ)能全系統(tǒng)解決方案及產(chǎn)品手冊(cè)
- (高清版)DZT 0309-2017 地質(zhì)環(huán)境監(jiān)測(cè)標(biāo)志
- 人員轉(zhuǎn)移安置實(shí)施方案(公司重組)
- 病歷書(shū)寫相關(guān)法律法規(guī)
- 老舊小區(qū)加裝電梯方案
- 老年人誤吸與預(yù)防-護(hù)理團(tuán)標(biāo)
- 輸氣場(chǎng)站工藝流程切換操作規(guī)程課件
- 青少年網(wǎng)絡(luò)安全教育課件
評(píng)論
0/150
提交評(píng)論