李 方,鄒進貴
(武漢大學測繪學院,湖北 武漢430079)
測繪技術伴隨著其他技術的發展而得到了迅速提高,逐漸走向自動化、數字化和智能化時代。工程測量任務往往包含多個環節,每一個環節的測量數據處理的正確性、精度和工作時效性直接影響整個測量工程的進度[1]。一旦測量數據出現問題就會影響工作進度,還浪費了很多人力、物力、財力。目前很多應用軟件都面臨著收費昂貴、安裝更新煩瑣、與儀器捆綁銷售、可重復性差等問題。
針對以上問題,筆者開發了一個Web平臺下的工程測量數據在線處理系統,其研究意義在于:①可實時動態處理數據并得到處理結果,實時評估工作質量;②用戶無須購買各種配套軟件,直接利用系統可以處理多種測量數據;③系統升級時只需服務器后臺更新,省去用戶需要多次下載更新軟件的麻煩;④便于用戶進行數據管理。因此,Web平臺下的工程測量數據處理系統具有較高的實用價值。
由于系統需要對數據實現存儲管理,因此需要使用數據庫。針對此系統,本文的數據庫需要進行結構方面的設計,數據庫中包含了12個數據表,分別為:
1)TraverseKnownData;
2)TraverseObserveData;
3)TraverseResult;
4)LevelingKnownData;
5)LevelingObserveData;
6)LevelingResult;
7)IntersectionKnownData;
8)IntersectionObserveData;9)IntersectionResult;
10)CorTransformationKnownData;
11)CorTransformationObserveData;12)CortransformationResult。
在此數據庫中本文對數據表的格式做了一定的設計,主要包含以下幾個數據字段:①DataID,數據ID作為數據表主鍵,用戶唯一標識數據文件,與服務器中對應文件夾下的數據一一對應;②UserName,用于存儲登錄賬號的用戶名;③UserCompany,用于存儲用戶所在的單位或公司;④ProjectName,用于存儲此數據是哪個項目的名稱;⑤Operater,用于存儲數據操作者的名字;⑥Description,用于對數據進行相關備注描述;⑦Time,用于存儲數據操作的時間。具體結構設計見表1。

表1 數據表結構
數據庫中所存儲的數據如圖1所示。
Web平臺下的工程測量數據處理系統的總體結構采用分層次框架設計。根據整個數據處理的流程,系統整體框架設計分為用戶登錄(或用戶注冊)、數據上傳、數據處理、數據下載和數據管理。其中數據處理方面可以設計很多功能模塊,比如導線網、水準網等,各個數據處理模塊相互平行獨立,用戶可根據需要進行功能選擇。進入系統后可以自主選擇數據處理功能模塊,比如導線網、水準網等,各個數據處理模塊相互平行獨立,用戶可根據需要進行功能選擇。目前功能處理暫定為設計導線網、水準網、交會計算和坐標轉換4個模塊,各個模塊的數據處理流程相同。在這種框架結構設計下,各個數據處理模塊相互獨立,后期可根據實際需要繼續添加不同功能的模塊,以逐步優化完善系統。系統框架示意圖如圖2所示。

圖1 數據表數據存儲示意圖

圖2 工程測量數據處理系統結構設計圖
B/S結構(Browser/Server結構)即瀏覽器和服務器結構,用戶都可以通過瀏覽器來訪問網絡上的各類信息,這些信息由多個Web服務器產生,但是數據并不儲存在Web服務器中,大量的數據實際存放在數據庫服務器中,每一個Web服務器通過某種方式與數據庫服務器連接[2]。
COM組件可以理解為一個封裝的代碼集合,它可以把程序代碼轉換到了二進制代碼,運行速度遠快于Web腳本的解釋性語言,而且有很好的保密性,同時可以使用C#、C++等語言編寫,有很好的兼容性,可以在不妨礙老客戶的情況下被升級[3]。ASP中含有執行Web相關任務的COM對象集。這些對象可以執行檢索HTML表單數據、把內容發回至瀏覽器、跟蹤會話和應用程序的狀態等任務。這些對象總是可以在整個ASP應用程序中使用[4]。
(1)利用ATL技術開發COM組件
通過ATL技術可以建立COM組件,然后通過ASP頁面中的腳本對COM對象進行調用,達到可以利用COM組件中函數的目的,完成相應的功能。通過優化技術,ATL在其內部提供了C++開發的程序所必須具有的C啟動代碼的替代部分。同時,為了擺脫龐大的代碼模塊,ATL對產生的代碼去粗取精,只留下了用戶最基本的功能。因此,采用ATL開發的COM組件能夠在網絡環境下實現應用的分布式組件結構[5]。
(2)在ASP.NET中使用COM對象
COM對象可以在ASP.NET中被調用。ADO對象本身就是COM對象,內置的Request、Response、Server等對象也是COM對象。除了使用內置對象,程序員還可以通過調用Server對象的CreateObject方法來創建COM對象實例,具體調用如下:
Set
cnnMyConnectionObj=Server.CreateObject(“ADODB.Connection”)。
ADO.NET組件是重要的數據庫開發工具,可以通過使用ADO.NET組件,實現對數據庫的操作。ADO.NET提供與數據源進行交互的相關的公共方法,但是對于不同的數據源采用一組不同的類庫,這些類庫就成為Data Providers,并且通常都是通過與之交互的協議和數據源的類型來進行命名的。ADO.NET包含了以下5個對象:Command對象、SqlConnection對象、SqlDataReader對象、DataSet對象和SqlDataAdapter對象。絕大多數的數據庫訪問任務都能通過它們的組合完成。
本系統首先實現就是用戶注冊與登錄功能,系統登錄功能主要保證用戶系統數據的安全,限制非工作人員登錄系統,進行非法操作。系統登錄功能的實現比較簡單,只需要在主系統進程創建前,先顯示登錄窗口,對用戶信息進行驗證,若驗證通過,則創建主系統進程,否則,不會創建主系統進程,直至驗證通過。
在用戶注冊方面需要使用的是CreateUserWizard控件,該控件需要用戶輸入用戶名、密碼、郵箱和安全問題等,在每個用戶輸入的TextBox后面都加入一個RequiredFieldValidator控件,將控件的Control ToValidate屬性設置為對于文本框的ID,修改Error Message屬性即可設置輸入無效提示,如“必須輸入用戶名”。將web.config文件中的membership元素設置為min-RequiredPasswordLength=”6”,即設置密碼不少于6位數。使用CompareValidator控件保證再次輸入的密碼與第一次輸入相同。RegularExpressionValidator控件確保電子郵件的格式輸入正確。系統的登錄頁面使用Login控件進行登錄,修改DestinationPageUel屬性重定向至系統功能選擇主頁上,輸入用戶名和正確的密碼,點擊登錄即可進入系統主頁,如圖3和圖4所示。

圖3 新用戶注冊界面

圖4 用戶登錄界面
在數據處理功能模塊中,將以坐標轉換模塊為例進行說明。在坐標轉換處理模塊中本文設置了四參數和七參數兩個轉換模型,用戶需要選擇一種數據處理模型。通過RadioButtonList1.SelectedItem.Text屬性值來確定轉換模型。文件的上傳通過File-Upload控件實現,具體上傳程序可見圖5,文件的下載程序可見圖6。
文件上傳需要獲取服務器端和客戶端路徑,然后獲取上傳文件名稱,設置上傳文件保存服務器的路徑即可實現文件上傳,見圖7。如果服務器中已經存在此文件則會提示文件重復。通過獲取上傳文件的后綴名來實現控制上傳文件的格式。利用ASP.NET調用C++編寫的DLL文件,首先需要在項目中添加引用DLL文件。以下為引用片段:

圖5 上傳文件程序

圖6 數據下載程序
[DllImport("kernel32.dll")]
private extern static IntPtr LoadLibrary(String path);
[DllImport("kernel32.dll")]
private extern static IntPtr GetProcAddress(IntPtr lib,String funcName);
[DllImport("kernel32.dll")]
private extern static bool FreeLibrary(IntPtr lib);

圖7 上傳文件
分別取得了LoadLibrary和GetProcAddress函數的地址,再通過這兩個函數來取得DLL里面的函數即可實現調用DLL處理數據。其他功能模塊的實現基本相同。
下面以2014年12月水準測量試驗數據進行實例分析。試驗過程中采集了大約6.9 km的水準數據,其中共有6個水準點,分別為B01—B06,其中B01為已知點,其高程為100 m,其余點為待定點,水準路線中包含了一個閉合環B02-B03-B06-B0。
數據采集完畢之后利用工程測量數據在線處理系統進行處理,首先注冊一個賬號,然后登錄賬戶進入系統,選擇水準網計算模塊進入水準網數據處理,上傳已知點文件和觀測值文件,選擇自動處理,然后下載結果文件,如圖8所示。

圖8 下載結果文件
為了驗算本系統計算結果的正確性,本文使用GNPS軟件對水準數據進行了計算,其中圖9(a)為GNPS軟件處理結果,圖9(b)為系統處理結果,圖9(c)為兩者對比結果。

圖9 處理結果對比
通過對比分析可知系統計算結果正確,并有較高的精度。上述過程實現了工程測量數據的自動處理,相對于利用軟件計算工程測量數據處理,該系統十分簡便快捷,特別是對于測量機器人自動測量數據,可以直接上傳處理,大大減輕了測量工作者的作業負擔。
通過使用試驗數據對系統進行驗證,能夠十分方便快捷地得到數據處理結果,相對于手工計算或者軟件計算來說速度更快,工作強度更小,這充分體現了工程測量數據在線處理系統的優越性和實時性。本系統在實際工程中具有較大的實用性,特別適合于處理觀測數據量大、復雜且需要進行平差處理的情況,用戶僅需按照指定格式上傳數據即可進行數據處理,真正實現了工程測量數據的現測現算,能夠實時評估工作質量,及時發現錯誤,對測量工作計劃具有很好的指導性。
[1] 熊梓言.工程測量數據處理系統設計與實現[J].測繪與空間地理信息,2008,31(6):177-179.
[2] 任泰明.基于B/S結構的軟件開發技術[M].西安:西安電子科技大學出版社,2006:16-20.
[3] Matt J.CROUCH.怎樣用ASP和COM進行Web編程[M].北京:人民郵電出版社,2001:20-45.
[4] 米勒.Visual C++.NET開發人員指南[M].北京:清華大學出版社,2002:13-53.
[5] 王建康.大型聯網視頻監控系統中ICE中間件的設計與實現[D].北京:北京郵電大學,2010.