羅 昆 李廣平 李文陽
摘要:文章主要講述利用excel辦公軟件,按照常用的導線測量成果計算本的樣式,直接編輯導線測量的正算和返算軟件,并形成固定的模版。
關鍵詞:excel表格;導線測量;正算;返算
中圖分類號:TP319文獻標識碼:A文章編號:1006-8937(2009)08-0054-02
我們知道導線測量的成果計算雖然有多種計算機軟件,但與我們習慣的導線成果計算格式不統一,輸入數據不直觀,使用起來不習慣,很難推廣。針對這種情況,我們按照常用的導線成果計算本的樣式,直接利用excel辦公軟件,按照這樣的固定格式,編制了一套導線測量成果計算軟件。
EXCEL是常用的辦公軟件,文章將利用其自帶的函數,和其強大的數據處理能力,創建一個EXCEL模板,利用預先編輯好的公式,輸入外業測量成果后自動進行內業的成果計算。
1設計需求
①能夠根據輸入的外業測量數據自動進行坐標成果正算;反過來,又能根據兩點的坐標自動反算出兩點之間的距離和方位角,能自動識別測量路線,計算導線間水平角;
②能進行簡單的條件分析,對一些誤輸入能自動識別;
③能夠有效的保護公式和表格,防止誤操作的更改,或者蓄意的修改計算結果。
2解決方案
2.1需求一的解決方法
因為需要條件判斷和循環引用的關系,EXCEL不能在圖1所示的表格范圍內完成所有的計算,這就需要在其他區域進行演算,再將演算結果引用到對應位置。我們選擇在成果表的右側建立演算區,見圖2和圖3。
在正算中,如何讓EXCEL自動判別測量路線,即在圖1中根據A列的儀器站測點編號,在R列中找到這個測點所在行,進而引用在O列和P列中的此測點的坐標值以進行下一步的計算,是編程重點和難點。
我們采用的解決辦法是,先使用MATCH函數判斷測點(R列中)在圖表1的中的行號,有了這個行號值作為參數,就可以使用CHOOSE函數在測 點坐標(O列和P列)中找到此測點的坐標值。關于兩函數的用法及參數請查閱EXCEL自帶的幫助文件。
舉例說明,當在圖2的V12單元格輸入公式
V12=MATCH(A12,$R$1:$R$11,0),EXCEL就會在R1和R11單元格范圍內尋找和A12單元格相同值的單元格,并返回它的行號,在輸入沒有錯誤的情況下,它的返回值會是5、6、8、10中的某個數,這由測量路線決定。對應的,在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坐標,同樣的,公式稍做調整就可以得到此測點的Y坐標。X列中也是使用類似公式得到后視導線方位角并換算為10進制角度供計算。
正算演算區中(見圖2),V判別后視測點在圖表1中的位置,W列和X列將圖表1中的60進制角度換算成10進制角度,Y列進行兩個角度的夾角計算獲得導線方位角,如果Y列初步計算得到的是負值角度,在Z列中將它們換算成正值。這樣,正算的參數就全部得到了。下面進行正算運算,在成果表(圖1)中O12單元格公式為O12=AA12+COS(RADIANS(Z12))*G13,得到測點的X坐標,RADIANS函數是將角度轉換成弧度的函數,P12單元格公式為P12= AB12+SIN(RADIANS(Z12))*G13,得到測點的Y坐標。L12單元格公式為L12=TRUNC(Z12),TRUNC為取小數整數部分的函數,M12單元格公式為M12=TRUNC(Z12-L12)*60,N12單元格公式為N12=(Z12-(L12+M12/60))*3600,得到換算為60進制的方位角。其他行依此類推。
反算過程所用的函數和公式與正算過程類似,在反算演算區中(見圖3),V列用MATCH函數來判別后視測點在圖1中的位置,AC、AD列用CHOSE函數獲得后視測點坐標并進行存放,留待引用。Y列用MATCH函數判別前視點在圖表1中的位置,X列用CHOOSE函數獲得后視點到前視點的方位角,W列用來計算導線間水平角。下面以圖1中12行為例,介紹反算公式的編寫,這里就不再重復MATCH和CHOOSE兩個函數公式的編寫了。G13單元格為兩點間距,公式為G13= SQRT((O12-AC12)^2+(P12-AD12)^2),Z12單元格為后視點到前視點方位角,公式為Z12= ATAN2(O12-AC12,P12-AD12),結果為弧度值,AA12單元格中將其換算成角度,公式為AA12= DEGREES(Z12),其結果可能為負值,在AB12單元格中換算成正值的角度,AB12= IF(AA8<0,AA8+360,AA8)。W12為水平角,公式為:
W12=IF((AB12-X12+180)>0,AB12-X12+180,
B12-X12+180+360)。將得到的角度經過換算填到圖1對應的表格中上文已做介紹,這里就不再重復了。
經過以上公式的編輯,我們需要的工作表已經初步形成了,但是你可能看到表中沒有數據的行會有錯誤引用的提示,我們用個小技巧解決這個問題。假設在圖表一中的第12行沒有數據,那么V12單元格的公式就可以優化成V12=IF(A12<>””,MATCH(A12,$R$1:$R$11,0),””),這樣,當A12單元格中有數據時V12單元格才進行計算,否則V12單元格也將顯示為空值。同理,圖表1中其他有公式的單元格都可以在計算前判別所引用單元格有無數據,利用這個方法,那些沒有數據的行就不再有錯誤提示,方便將計算成果直接打印了。
2.2需求二的解決方法

點開EXCEL的“數據”菜單,找到“有效性”命令,點擊就可以打開“數據有效性”對話框,這里可以對單元格數據的輸入進行一些規則設置,比如距離值不可能是負值,也不會過大,進行這樣的設置以后,在輸入的時候如果輸入負值,EXCEL會提示錯誤并不會將數據寫入。
2.3需求三的解決方法
為了保證EXCLE的計算過程不受人為的干擾,防止人為修改計算結果,EXCLE提供了保護工作表的設置。首先選中整個工作表,選擇“格式”菜單中的“單元格”命令,出現“單元格格式”對話框,選擇“保護”選項卡,給“鎖定”復選框打上勾,再選擇“數據”菜單中的“保護”命令,然后選擇“允許用戶編輯區域”,出現“允許用戶編輯區域”對話框,可以新建或修改允許用戶編輯的區域,選擇好這些區域后,點擊“保護工作表“,出現”保護工作表“對話框,只選擇能夠選定單元格操作,在設置好密碼,操作完成后,工作表就會被保護起來,只能在允許用戶編輯的區域進行寫操作,其他區域會禁止用戶編輯。這樣對圖1中的工作表進行相應設定以后,人工只能輸入水平角和水平邊長,方位角和測點坐標、測點編號,以及演算區內的內容有計算機生成,沒有密碼就不能更改這些單元格的內容,能夠有效保證數據的真實性和準確性。
一切都做好以后,將工作簿另存為模板。
3程序的應用
對照圖1中格式,直接將野外測量數據輸入對應表格中,如,導線:A-B-C-D,已知A、B點坐標或已知AB方位和B點坐標,在表格中填入ABC和BCD夾角及BC和CD邊長及可直接解算C和D點的坐標,如表1中。反之,輸入C和D點坐標可直接反算出CD的方位和邊長值。