摘 要:由于目前在進行縱橫斷面計算及檢查的常用方法上面存在一些缺陷,使工作的質量和效率受到影響,需要進行改進。而本文正是針對這些缺陷,使用Excel VBA對這些缺陷進行有效的處理,從而減少在縱橫斷面計算中出現的錯誤,加強檢查效果。
關鍵詞:測繪工程,縱橫斷面,Excel VBA
一、 概述
目前為了外業縱橫斷面數據采集時方便快捷,采集的數據格式同設計一般要求的緯地格式不同,以下為兩種橫斷數據格式:
而對縱斷面來說,兩種格式相同,只不過外業采集時,縱橫斷面產生在同一個文件中,而緯地格式需要單獨的縱斷面文件,其格式為:
對于兩種數據格式就需要進行數據轉換。
由于原始數據采集時數據是記錄在記錄表中的,需要將記錄表中的數據錄入到計算機中,再轉換為緯地格式,在此過程中就有可能產生錄入錯誤,需要對原始記錄數據和錄入數據進行校對、檢核。而常規的人工檢查方法費時,費力,效率低,并且,對一些不合理的斷面不能進行直觀的檢查,使得此項工作十分的繁重。所以需要對常規的人工檢查進行改進。
二、 目前的處理方法及不足
目前對于數據轉換,一種常用的方式是直接使用Excel中的公式進行計算。在Excel工作簿中建立有3個工作表,分別命名為“原始數據”、“橫斷”、“縱斷”,在“原始數據”工作表中進行采集數據的錄入,在“橫斷”、“縱斷”工作表中對原始數據進行處理,轉換為緯地格式。在這兩個工作表中,在足夠范圍內的每個單元格中都有對應的公式,這就使得整個工作簿很大,占用許多資源,并且要求每個單元格中的公式必須正確,如果某一單元格中的公式有誤,則計算結果就會發生錯誤,而這一問題,在檢查時則很難發現。
雖然,在SCS中,提供了一項繪制斷面圖的功能,這就提供了一種對斷面進行直觀檢查的方法,其要求的數據格式如下:
然而在每次繪制斷面圖時都要求用戶指定文件位置及文件名,確定斷面圖的繪制位置。由于借助CAD的強大功能,這對于縱斷面檢查來說很方便;但是對于橫斷面來說,由于斷面數太多,要用戶對每個斷面的數據進行一次轉換,繪制時都需要交互指定一次,就顯得有些繁瑣。這就需要一種新的途徑處理這些問題。
三、 改進的處理方法及優勢
由于數據錄入一般是在Excel中進行,并且提供設計的緯地格式數據一般也是Excel文件格式,而且Excel不僅僅具有一般電子表格軟件的數據處理、統計分析、圖表功能,還集成了VBA環境,所以使用Excel進行數據轉換就成為首選的一種方式。
為了解決以上的數據處理中的不足,共進行了四項功能開發,設計了四個菜單項,對應設計了四個自定義按鈕,界面如下:
在橫斷計算中,不但具有以前一樣的橫斷數據轉換功能,還添加了一些糾錯功能。比如:當某斷面數據中前面的斷面點個數與后面實際輸入的數據個數不同時,會自動提示斷面個數不匹配,需要進行修改,并將光標指定在錯誤的樁號處;當數據在輸入過程中,有可能在某個單元格中輸入的數據有誤,比如,將3.12錯誤輸入為3..12,程序同樣提示數據輸入錯誤,需要修改,并將光標指定在錯誤的樁號處,以方便修改。這樣就提高了橫斷面數據檢查工作的效率,減輕了檢查工作的負擔。
在縱斷計算中,添加了一項樁號排序自動檢查功能,當輸入的樁號不是按照順序排列時,會自動彈出對話框如圖:
如果單擊“是”,則忽略錯誤,繼續計算;若單擊“否”,則停止計算,并將光標自動指定于錯誤處附近的樁號,以方便檢查和修改。建議在輸入樁號時不要使用“0+020”這種非數字格式,這樣就不便讓計算機進行自動檢查,并且在程序中總會報告排序錯誤,彈出此對話框。如果已經按這種格式輸入了,可以用Excel“編輯”菜單下的替換功能,將“+”都替換沒了,再進行計算。
為了直觀的檢查橫斷面數據,需要繪制出直觀的橫斷面圖。在Excel中,提供了豐富的圖表類型,選擇其中的折線散點圖就可以繪制出直觀的橫斷面圖。在整個程序中,共有4個工作表,其中,“Sheet1”中存放原始采集數據,“Sheet2”中為轉換后的橫斷面緯地格式數據,“Sheet3”中存放縱斷面數據,“Sheet4”中進行橫斷面檢查,其中“Sheet4”界面如下:
其中,第一行和第二行為繪制折線散點圖的數據區域,由原始采集數據“Sheet1”中對應斷面的數據轉化而來。在單元格“B6”中顯示或輸入當前要繪制的斷面樁號。在“Sheet4”中設計了5個按鈕,分別為
l “起始斷面”:繪制“Sheet1”中的第一個斷面;
l “上一段面”:繪制當前斷面的上一個斷面,如果已經到了起始斷面,則顯示警告“超出范圍”;
l “下一段面”:繪制當前斷面的下一個斷面,如果已經到了結束斷面,則顯示警告“超出范圍”;
l “結束斷面”:繪制“Sheet1”中的最后一個斷面;
l “繪制斷面”:當在“B6”單元格中指定了要繪制的斷面樁號,單擊此按鈕則繪制此樁號的橫斷面圖,如果在“Sheet1”中沒有此樁號,則顯示警告“樁號未找到”。
正確繪制出的斷面圖如上圖所示。
上面的橫斷檢查方法使用了Excel中的折線散點圖,用來處理像橫斷面這樣的數據量少的斷面很合適,如果用這種方法繪制縱斷面這樣數據量大的圖形,由于斷面圖比較長,而其縮放,平移等功能有所欠缺,所以不太方便檢查,如果在CAD中繪制,則借助CAD的強大功能,很好地解決這些問題。而SCS就是基于CAD開發而來的,并且在SCS中提供了一項繪制斷面圖的功能,只需要將縱斷面數據轉換為SCS需要的特定數據格式就可以了。所以在程序中編寫了第四項功能:輸出SCS縱斷數據。由于在SCS中繪制斷面圖時需要用戶指定斷面數據的位置,所以為了方便起見,將數據文件固定設置在c盤根目錄下,使用固定的文件名:“data.dat”,這樣,在繪制斷面圖時,不用每次查找,直接輸入路徑及文件名“c:\data.dat”,就可以直接進行繪制了。以下為使用SCS繪制的縱斷面圖(局部)的效果,以及繪制斷面圖的菜單命令位置。
四、 結束語
雖然Office,AutoCAD等軟件已經具有相當強大的功能,然而,要想使用這些軟件真正適用某一領域,或讓其經常完成一些重復性的工作,則必須使用其靈活的開發系統進行二次開發。
參考文獻:
[1] 趙志東. Excel VBA基礎入門. 北京:人民郵電出版社,2006.6
[2] 馬維峰. Excel VBA應用開發從基礎到實踐. 北京:電子工業出版社,2006.8
[3] 希望圖書創作室. 中文Visual Basic 6.0教程. 北京:宇航出版社,1999.5
相關論文