羅 昆 李廣平 李文陽
摘要:文章主要講述利用excel辦公軟件,按照常用的導(dǎo)線測量成果計算本的樣式,直接編輯導(dǎo)線測量的正算和返算軟件,并形成固定的模版。
關(guān)鍵詞:excel表格;導(dǎo)線測量;正算;返算
中圖分類號:TP319文獻(xiàn)標(biāo)識碼:A文章編號:1006-8937(2009)08-0054-02
我們知道導(dǎo)線測量的成果計算雖然有多種計算機軟件,但與我們習(xí)慣的導(dǎo)線成果計算格式不統(tǒng)一,輸入數(shù)據(jù)不直觀,使用起來不習(xí)慣,很難推廣。針對這種情況,我們按照常用的導(dǎo)線成果計算本的樣式,直接利用excel辦公軟件,按照這樣的固定格式,編制了一套導(dǎo)線測量成果計算軟件。
EXCEL是常用的辦公軟件,文章將利用其自帶的函數(shù),和其強大的數(shù)據(jù)處理能力,創(chuàng)建一個EXCEL模板,利用預(yù)先編輯好的公式,輸入外業(yè)測量成果后自動進(jìn)行內(nèi)業(yè)的成果計算。
1設(shè)計需求
①能夠根據(jù)輸入的外業(yè)測量數(shù)據(jù)自動進(jìn)行坐標(biāo)成果正算;反過來,又能根據(jù)兩點的坐標(biāo)自動反算出兩點之間的距離和方位角,能自動識別測量路線,計算導(dǎo)線間水平角;
②能進(jìn)行簡單的條件分析,對一些誤輸入能自動識別;
③能夠有效的保護公式和表格,防止誤操作的更改,或者蓄意的修改計算結(jié)果。
2解決方案
2.1需求一的解決方法
因為需要條件判斷和循環(huán)引用的關(guān)系,EXCEL不能在圖1所示的表格范圍內(nèi)完成所有的計算,這就需要在其他區(qū)域進(jìn)行演算,再將演算結(jié)果引用到對應(yīng)位置。我們選擇在成果表的右側(cè)建立演算區(qū),見圖2和圖3。
在正算中,如何讓EXCEL自動判別測量路線,即在圖1中根據(jù)A列的儀器站測點編號,在R列中找到這個測點所在行,進(jìn)而引用在O列和P列中的此測點的坐標(biāo)值以進(jìn)行下一步的計算,是編程重點和難點。
我們采用的解決辦法是,先使用MATCH函數(shù)判斷測點(R列中)在圖表1的中的行號,有了這個行號值作為參數(shù),就可以使用CHOOSE函數(shù)在測 點坐標(biāo)(O列和P列)中找到此測點的坐標(biāo)值。關(guān)于兩函數(shù)的用法及參數(shù)請查閱EXCEL自帶的幫助文件。
舉例說明,當(dāng)在圖2的V12單元格輸入公式
V12=MATCH(A12,$R$1:$R$11,0),EXCEL就會在R1和R11單元格范圍內(nèi)尋找和A12單元格相同值的單元格,并返回它的行號,在輸入沒有錯誤的情況下,它的返回值會是5、6、8、10中的某個數(shù),這由測量路線決定。對應(yīng)的,在AA12單元格的公式為AA12=CHOOSE(V12,$O$1,$O$2,$O$3,$O$4,$O$5,$O$6,$O$7,$O$8,$O$9,$O$10,$O$11),其返回值就是A12單元格測點的X坐標(biāo),同樣的,公式稍做調(diào)整就可以得到此測點的Y坐標(biāo)。X列中也是使用類似公式得到后視導(dǎo)線方位角并換算為10進(jìn)制角度供計算。
正算演算區(qū)中(見圖2),V判別后視測點在圖表1中的位置,W列和X列將圖表1中的60進(jìn)制角度換算成10進(jìn)制角度,Y列進(jìn)行兩個角度的夾角計算獲得導(dǎo)線方位角,如果Y列初步計算得到的是負(fù)值角度,在Z列中將它們換算成正值。這樣,正算的參數(shù)就全部得到了。下面進(jìn)行正算運算,在成果表(圖1)中O12單元格公式為O12=AA12+COS(RADIANS(Z12))*G13,得到測點的X坐標(biāo),RADIANS函數(shù)是將角度轉(zhuǎn)換成弧度的函數(shù),P12單元格公式為P12= AB12+SIN(RADIANS(Z12))*G13,得到測點的Y坐標(biāo)。L12單元格公式為L12=TRUNC(Z12),TRUNC為取小數(shù)整數(shù)部分的函數(shù),M12單元格公式為M12=TRUNC(Z12-L12)*60,N12單元格公式為N12=(Z12-(L12+M12/60))*3600,得到換算為60進(jìn)制的方位角。其他行依此類推。
反算過程所用的函數(shù)和公式與正算過程類似,在反算演算區(qū)中(見圖3),V列用MATCH函數(shù)來判別后視測點在圖1中的位置,AC、AD列用CHOSE函數(shù)獲得后視測點坐標(biāo)并進(jìn)行存放,留待引用。Y列用MATCH函數(shù)判別前視點在圖表1中的位置,X列用CHOOSE函數(shù)獲得后視點到前視點的方位角,W列用來計算導(dǎo)線間水平角。下面以圖1中12行為例,介紹反算公式的編寫,這里就不再重復(fù)MATCH和CHOOSE兩個函數(shù)公式的編寫了。G13單元格為兩點間距,公式為G13= SQRT((O12-AC12)^2+(P12-AD12)^2),Z12單元格為后視點到前視點方位角,公式為Z12= ATAN2(O12-AC12,P12-AD12),結(jié)果為弧度值,AA12單元格中將其換算成角度,公式為AA12= DEGREES(Z12),其結(jié)果可能為負(fù)值,在AB12單元格中換算成正值的角度,AB12= IF(AA8<0,AA8+360,AA8)。W12為水平角,公式為:
W12=IF((AB12-X12+180)>0,AB12-X12+180,
B12-X12+180+360)。將得到的角度經(jīng)過換算填到圖1對應(yīng)的表格中上文已做介紹,這里就不再重復(fù)了。
經(jīng)過以上公式的編輯,我們需要的工作表已經(jīng)初步形成了,但是你可能看到表中沒有數(shù)據(jù)的行會有錯誤引用的提示,我們用個小技巧解決這個問題。假設(shè)在圖表一中的第12行沒有數(shù)據(jù),那么V12單元格的公式就可以優(yōu)化成V12=IF(A12<>””,MATCH(A12,$R$1:$R$11,0),””),這樣,當(dāng)A12單元格中有數(shù)據(jù)時V12單元格才進(jìn)行計算,否則V12單元格也將顯示為空值。同理,圖表1中其他有公式的單元格都可以在計算前判別所引用單元格有無數(shù)據(jù),利用這個方法,那些沒有數(shù)據(jù)的行就不再有錯誤提示,方便將計算成果直接打印了。
2.2需求二的解決方法
點開EXCEL的“數(shù)據(jù)”菜單,找到“有效性”命令,點擊就可以打開“數(shù)據(jù)有效性”對話框,這里可以對單元格數(shù)據(jù)的輸入進(jìn)行一些規(guī)則設(shè)置,比如距離值不可能是負(fù)值,也不會過大,進(jìn)行這樣的設(shè)置以后,在輸入的時候如果輸入負(fù)值,EXCEL會提示錯誤并不會將數(shù)據(jù)寫入。
2.3需求三的解決方法
為了保證EXCLE的計算過程不受人為的干擾,防止人為修改計算結(jié)果,EXCLE提供了保護工作表的設(shè)置。首先選中整個工作表,選擇“格式”菜單中的“單元格”命令,出現(xiàn)“單元格格式”對話框,選擇“保護”選項卡,給“鎖定”復(fù)選框打上勾,再選擇“數(shù)據(jù)”菜單中的“保護”命令,然后選擇“允許用戶編輯區(qū)域”,出現(xiàn)“允許用戶編輯區(qū)域”對話框,可以新建或修改允許用戶編輯的區(qū)域,選擇好這些區(qū)域后,點擊“保護工作表“,出現(xiàn)”保護工作表“對話框,只選擇能夠選定單元格操作,在設(shè)置好密碼,操作完成后,工作表就會被保護起來,只能在允許用戶編輯的區(qū)域進(jìn)行寫操作,其他區(qū)域會禁止用戶編輯。這樣對圖1中的工作表進(jìn)行相應(yīng)設(shè)定以后,人工只能輸入水平角和水平邊長,方位角和測點坐標(biāo)、測點編號,以及演算區(qū)內(nèi)的內(nèi)容有計算機生成,沒有密碼就不能更改這些單元格的內(nèi)容,能夠有效保證數(shù)據(jù)的真實性和準(zhǔn)確性。
一切都做好以后,將工作簿另存為模板。
3程序的應(yīng)用
對照圖1中格式,直接將野外測量數(shù)據(jù)輸入對應(yīng)表格中,如,導(dǎo)線:A-B-C-D,已知A、B點坐標(biāo)或已知AB方位和B點坐標(biāo),在表格中填入ABC和BCD夾角及BC和CD邊長及可直接解算C和D點的坐標(biāo),如表1中。反之,輸入C和D點坐標(biāo)可直接反算出CD的方位和邊長值。