摘要:通過對現(xiàn)有線路工程放樣數(shù)據(jù)常用的計算程序的弊端的分析,提出了基于Web進行開發(fā),有效的解決了不同系統(tǒng)環(huán)境需要不同的客戶端的問題,設(shè)計了基于該方法的作業(yè)流程。
關(guān)鍵詞:線路工程放樣;MATLAB;JAVA
現(xiàn)在已有的線路工程放樣數(shù)據(jù)的計算程序,都集成在了GPS、 AUTOCAD、 ArcGIS等軟件之中,雖然這些軟件內(nèi)置的線路工程放樣數(shù)據(jù)計算功能也非常強大,可以根據(jù)用戶需求進行差異化定制以及使用,但是有一個非常大的弊端,就是移植性太差,對運行環(huán)境的要求太苛刻。例如AUTOCAD的exe安裝包在Windowns上可以運行,但是遷移到其他運行環(huán)境(如MACOS,IOS等)就無法運行了。針對這些問題,本文給出的辦法是基于Web進行開發(fā),因為各種系統(tǒng)運行環(huán)境雖然不同,但是都攜帶有瀏覽器。基于Web進行開發(fā)可以有效解決不同系統(tǒng)環(huán)境需要不同的客戶端的問題,開發(fā)周期短,工作量低,而且計算過程都是在瀏覽器上進行。
JAVA是由SUN公司發(fā)布的一種面向?qū)ο蟮某绦蛟O(shè)計語言,其語言本身的安全性較高,并且擁有MATLAB所不具備的網(wǎng)絡(luò)編程與多線程功能。但JAVA在數(shù)據(jù)處理和分析方面的能力則顯得非常羸弱,當數(shù)組矩陣比較大時,這個問題就顯得尤為突出。
MATLAB是由MathWork公司推出的一種具有高性能的數(shù)值計算功能和可視化的軟件,它集矩陣計算、符號運算、數(shù)值計算于一體,同時還在各種不同的領(lǐng)域推出新的MATLAB工具箱,該編程語言的語法簡單,功能強大,一條語句所具備的功能往往相當于其它高級語言之中的成百上千條語句。
一、設(shè)計思想
本文利用分層結(jié)構(gòu)來進行軟件開發(fā),不同的層次負責(zé)不同的功能。顯示層負責(zé)與用戶的交互,業(yè)務(wù)邏輯層負責(zé)數(shù)據(jù)的處理、計算。為了使軟件結(jié)構(gòu)更加明了,這里我在顯示層與業(yè)務(wù)邏輯層之間增加一個控制器,該控制器的功能主要是負責(zé)將用戶輸入的數(shù)據(jù)進行封裝,例如曲線類型,曲線方向,坐標系的選擇,曲線半徑數(shù)據(jù)等等。封裝的目的是為了在JAVA語言中更好地使用這些數(shù)據(jù),方便數(shù)據(jù)在瀏覽器,服務(wù)器之間傳輸。顯示層會根據(jù)不同的輸入來顯示不同的計算結(jié)果,這里采用動態(tài)網(wǎng)頁技術(shù)。業(yè)務(wù)邏輯層負責(zé)數(shù)據(jù)的處理,這里將利用MATLAB優(yōu)秀的計算能力來實現(xiàn)。
軟件流程圖
二、具體實現(xiàn)
(一)顯示層設(shè)計
顯示層的編寫將利用HTML語言與JSP語言來進行設(shè)計,其中HTML頁面是靜態(tài)頁面,用于設(shè)計顯示效果,動態(tài)頁面就是能根據(jù)不同的用戶訪問情況來顯示不同的內(nèi)容,本文所采用的實現(xiàn)方式是將HTML頁面效果用JSP來實現(xiàn)。
(二)控制器及業(yè)務(wù)邏輯層的設(shè)計
控制器的作用是完成頁面跳轉(zhuǎn)以及數(shù)據(jù)傳輸,業(yè)務(wù)邏輯層的作用是用來處理數(shù)據(jù)。本文是應(yīng)用了JAVA的多線程,網(wǎng)絡(luò)編程優(yōu)點,和MATLAB優(yōu)秀的數(shù)據(jù)計算能力來完成業(yè)務(wù)的處理,所以這里我們在業(yè)務(wù)邏輯層只需要完成JAVA與MATLAB的之間的數(shù)據(jù)傳輸即可。
MATLAB與JAVA之間的數(shù)據(jù)傳輸目前存在以下三種主流方式:
1.利用COM對象實現(xiàn)訪問。
COM 指的是通用對象模型( Common Object Model),是由Microsoft推出的一個二進制代碼標準。這個標準包含規(guī)范和實現(xiàn)兩大部分,這些規(guī)范并不依賴于任何語言和操作系統(tǒng)。在 Matlab 之中構(gòu)建 COM 對象時需要使用Com Builder 完成 Matlab 語句到 COM 對象的轉(zhuǎn)換,從而使 Java應(yīng)用程序可以使用COM 對象。
2.利用CORBA實現(xiàn)訪問。
CORBA 指的是公共對象請求代理結(jié)構(gòu) ( Common Object Request Broker Architecture) ,它是體系結(jié)構(gòu)之中最清晰、最完整,跨越平臺最多的構(gòu)件模型。使用 CORBA 來連接 Matlab的過程十分復(fù)雜,開發(fā)效率低。
3.利用JNI技術(shù)實現(xiàn)訪問。
JNI指的是本地編程接口( Java Native Interface) ,Matlab向 C語言提供了Matlab Engine函數(shù),而Java則通過 JNI技術(shù)來調(diào)用這些函數(shù),從而實現(xiàn)對Matlab程序的訪問[4]。
以上列出了三種訪問方法,本文所采用的方法是基于上述方法進行二次開發(fā)的工具類matlabcontrol Java API,這個工具類相當于一個代理,可以便捷的實現(xiàn)MATLAB與JAVA之間的數(shù)據(jù)訪問。
(三)數(shù)據(jù)算法在MATLAB中的實現(xiàn)
在完成了顯示層,控制層,業(yè)務(wù)邏輯層的編寫之后,還剩下最后一個層次,也就是MATLAB模塊的編寫,該層次的作用是根據(jù)傳入的數(shù)據(jù)計算應(yīng)當呈現(xiàn)給用戶的結(jié)果。根據(jù)曲線類型的不同選擇不同的算法,所謂的算法即一個個的計算公式。
三、結(jié)語
本文針對現(xiàn)有的線路工程放樣程序存在的問題,給出了利用B/S結(jié)構(gòu)進行開發(fā)的解決方案,本軟件實現(xiàn)的功能主要包括緩和曲線的計算,圓曲線的計算以及豎曲線的計算。并且在輸入輸出頁面都有友好的提示方便使用。本文以B/S結(jié)構(gòu)為基礎(chǔ)開發(fā)的線路工程放樣程序,實現(xiàn)了無客戶端限制,無系統(tǒng)環(huán)境限制的可在任意能上網(wǎng)終端進行使用的功能。
參考文獻:
[1]李金生.劉翠芝.劉巖.曲線放樣數(shù)據(jù)計算的幾種方法.等專科學(xué)校學(xué)報,2007,9(3):2829.
[2]任文杰.王偉.馬松輝.陳懷民.MATLAB和JAVA的混合編程研究實現(xiàn)[J].測控技術(shù),2009,28(01):00770079.
[3]王薇.MATLAB 的循環(huán)向量化編程方法研究.長春大學(xué)學(xué)報,2010,2:5759.
[4]王薇.楊麗萍.Java和Matlab混合編程及其應(yīng)用.長春大學(xué)學(xué)報,2012,22(10):11861189.
作者簡介:水夢琦(1993),女,漢族,湖北武漢人,在讀研究生,研究方向:測繪工程。