《基于 MapXtreme Java 的 WebGIS 系統(tǒng)設計與實現(xiàn)》由會員分享,可在線閱讀,更多相關《基于 MapXtreme Java 的 WebGIS 系統(tǒng)設計與實現(xiàn)(6頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、豆丁網(wǎng)精品論文
基于 MapXtreme Java 的 WebGIS 系統(tǒng)設計與實現(xiàn)
崔昊 武漢理工大學信息學院,武漢 (430063) E-mail:ch_hzchhz@
摘 要:本文研究了 WEB GIS 平臺的架構(gòu)以及開發(fā) WEB GIS 的一般方法,然后結(jié)合實際 課題,實現(xiàn)了其中一種架構(gòu)方案――用 JSP、Applet 和 Servlet 相結(jié)合的方式架構(gòu)基于客戶 端模式的 WEB GIS 系統(tǒng)。最后給出了系統(tǒng)部分代碼和界面。
關鍵詞:地理信息系統(tǒng),Applet,MapXtreme for Java
中圖分類號:TP311
1 引言
WebGI
2、S 是將傳統(tǒng)的 GIS 系統(tǒng)與 Internet 相結(jié)合的一項技術。近年來,隨著 Internet 技 術的不斷發(fā)展與完善,傳統(tǒng)的單機式 GIS 系統(tǒng)正在逐步向網(wǎng)絡化發(fā)展。目前,WebGIS 系統(tǒng) 在網(wǎng)絡上已不少見,例如將 Ajax 技術應用到 GIS 系統(tǒng)的 Google Map,Baidu Map 等。只要 用戶擁有一臺接入 Internet 的計算機,就可以通過瀏覽器訪問到這些免費的在線地圖服務, WebGIS 系統(tǒng)給人們帶來了極大的方便。
本文研究了一種將 Applet 技術與 MapXtreme 相結(jié)合開發(fā) WebGIS 系統(tǒng)的方法,該系統(tǒng) 作為湖北京珠高速路面養(yǎng)護系統(tǒng)的一部分,已
3、成功應用到實際當中。
2 系統(tǒng)介紹
目前,我國高速公路總里程正在迅猛增長,交通運輸?shù)陌l(fā)展有力地推動著國民經(jīng)濟和 社會的進一步發(fā)展。與此同時,高速速公路的運營管理越顯重要。其中高速公路養(yǎng)護管理 最為關鍵。但在實際養(yǎng)護管理工作中,存在著 1)養(yǎng)護管理滯后。目前的管理模式基于傳統(tǒng) 的單機輔肋管理,作為養(yǎng)護管理部門不能及時了解高速公路全線路面病害情況與路面養(yǎng)護 狀況,因為大量的巡檢數(shù)據(jù)不能及時刷新,故無法及時、真實地了解養(yǎng)護工程的質(zhì)量、養(yǎng) 護進度等信息,只能事后處理和控制。2)養(yǎng)護工程管理較為復雜。路面信息的及時反映及匯 總,修復信息的改變,養(yǎng)護方案、歷史數(shù)據(jù)的存儲、查詢,養(yǎng)護工程計劃及費用預
4、算、實 施等,只有用現(xiàn)代計算機及其網(wǎng)絡技術構(gòu)成先進的管理系統(tǒng)和工作流程才能建立在大量的 數(shù)據(jù)收集、統(tǒng)計、分析的基礎上實現(xiàn),而這一方面沒有管理的信息化是無法完成的。
本套系統(tǒng)受湖北省京珠高速公路管理處委托開發(fā),旨在建立一套科學的高速公路管理系 統(tǒng),以提高高速公路運營管理效率, 及時掌握和了解其運營狀態(tài),進一步提高高速公路管理的 信息化、科學化、規(guī)范化,使高速公路保持優(yōu)良的使用狀態(tài)和服務水平,提高其經(jīng)濟效益和 社會效益。其中,電子地圖模塊作為系統(tǒng)的重要模塊之一,起到了方便用戶對具體位置的查 看、查詢等作用。對于歷史數(shù)據(jù)的統(tǒng)計、分析可以在電子地圖上以直方圖或餅圖形式直觀地 呈現(xiàn)給用戶,有助于管理人
5、員作出更加有效的養(yǎng)護方案,預算更加合理的養(yǎng)護費用[1]。
3 系統(tǒng)設計與實現(xiàn)
3.1 WebGIS 的系統(tǒng)架構(gòu)[2]
本系統(tǒng)基于MapXtreme for Java(以下簡稱MXTJ)開發(fā),MXTJ是100%的純Java類,兼容
Java2,具有Java語言的面向?qū)ο?、跨平臺性、支持多線程、安全性等所有特性。根據(jù)MapJ
對象的位置、客戶端的實現(xiàn)方式和數(shù)據(jù)發(fā)送回客戶端的方式,MXTJ提供了三種WebGIS的架 構(gòu)方案:服務器端模式、客戶端模式、中等模式。根據(jù)實際需求,系統(tǒng)采用基于Applet技術 的客戶端模式。
基于客戶端模式架構(gòu)的特點是 MapJ 對象部署在
6、客戶端的 applet 中,客戶機上需要
Java 虛擬機的支持。其結(jié)構(gòu)示意圖如圖 1 所示。
MapJ 對象
HTML 瀏覽器
Applet
Servelet 容器 用戶自定義的 Web 應用程序
MDF 文件
MapXtreme Java
地圖定義管理器
MDF 文件
JavaScript
MXTJ Web 應用程序
TAB 文件
地圖圖像
MapXtreme Servlet
數(shù)據(jù)庫表
圖 1 基于客戶端模式的 WebGI
7、S 架構(gòu)示意圖
Fig1 Design of WebGIS based on client model
如圖 1 所示,首先,由 MapXtreme for Java 提供的地圖定義管理器 MapXtreme Java Manager 將 MapInfo 的 TAB 文件以及綁定的數(shù)據(jù)庫表文件組織成.mdf 文件,然后 mdf 文件 由 Web 服務器發(fā)送給 Applet 以顯示地圖,最后,用戶與地圖的交互由 Applet 實現(xiàn),Applet 將用戶請求發(fā)送至 MapXtreme Servlet,后者做出響應渲染地圖,并將地圖圖像發(fā)送回客戶 機。這種模式的優(yōu)點是交互
8、能力強,用戶可以利用 Applet 實現(xiàn)客戶端繪圖,這有利于實現(xiàn) 區(qū)域選擇查詢、增加標注圖元以及鷹眼圖等復雜功能。
3.2 系統(tǒng)功能模塊及代碼實現(xiàn)
系統(tǒng)的運行界面如圖 2 所示。主要功能包括以下幾個部分:
3.2.1 地圖的基本功能 地圖的基本功能包括:放大、縮小、漫游以及查看圖層等。
圖 2 系統(tǒng)運行界面
Fig2 Main interface of the system
部分代碼示例如下:
public class EMap extends Japplet implements ActionListener,PropertyChangeListene
9、r , MouseListener,MouseMotionListener{
//定義mapPanel容納地圖
JPanel mapPanel = new JPanel();
//實例化VisualMapJ
VisualMapJ e_MapJ = new VisualMapJ();
//實例化工具條
MapToolBar e_mapToolBar = new MapToolBar();
//實例化各種地圖操作工具
ZoomOutMapTool zoomout=new ZoomOutMapTool();
……
……
ZoomInMapTool zoomin=new Zoom
10、InMapTool();
//將工具添加到工具條中
e_mapToolBar.add(zoomout);
……
……
e_mapToolBar.add(zoomin);
//將地圖對象添加到mapPanel中
panelMap.add(e_MapJ, BorderLayout.CENTER);
//將工具條對象添加到mapPanel中
panelMap.add(e_mapToolBar, BorderLayout.NORTH);
……
……
}
運行結(jié)果如圖 2 所示
3.2.2 區(qū)域查詢功能 區(qū)域查詢功能為了方便用戶在地圖上選擇查詢感興趣的區(qū)域,具體實
11、現(xiàn)思路是:用戶
點擊圓形選擇工具進行選擇,選擇完畢鼠標釋放時,自動在 Applet 中調(diào)用 JavaScript,將選
擇內(nèi)容傳給 Servlet 執(zhí)行數(shù)據(jù)庫查詢,最后將查詢結(jié)果顯示在 JSP 頁面上。 部分代碼如下所示:
首先實現(xiàn)鼠標監(jiān)聽接口中的方法:
public void mouseReleased(MouseEvent e){
//定義兩個 List 數(shù)組存放選擇內(nèi)容
java.awt.List jz_lis=new java.awt.List();//該 List 存放京珠路段編號
java.awt.List hr_lis=new java.awt.List();//該
12、 List 存放滬蓉路段編號
//選擇了圓選工具并進行拖拽時執(zhí)行搜索圖元方法
if(radius.isSelected()&&isDragged){
isDragged=false
//下面是圖元搜索方法,鑒于代碼太長這里省略。
foundFeature(){
……
}
//Applet 和 Servlet 或 JSP 通信有多種方法,這里使用了一種利用 JavaScript 傳參的方 法,利用 JavaScript 的強大功能,有時候會方便我們做一些數(shù)據(jù)的驗證等。
JSObject.getWindow (this).eval ("javascript:query()");
13、
}
}
用以下代碼將 Applet 嵌入在網(wǎng)頁 gisPage.jsp 內(nèi):
14、下面的 JavaScript 函數(shù) query()寫在頁面內(nèi),接收 Applet 中傳出來的參數(shù):
function query(){
var s1=document.eMap.jz_lis;
var s2=document.eMap.jz_lis;
……;
var condition="……";//構(gòu)造查詢條件
var u="http://IP:8080/GIS/gisSQL?condition="+condition;
……
}
最后由 Servlet 負責執(zhí)行數(shù)據(jù)庫查詢,將結(jié)果請求轉(zhuǎn)發(fā)給 JSP 頁面顯示(代碼省略)。
3.2.3 分析圖層和鷹眼圖功能 分析圖層:
15、 分析圖層是將數(shù)據(jù)庫中的數(shù)據(jù)以直方圖的形式直觀地顯示在地圖上,對于不同范圍的
數(shù)據(jù)以不同的顏色顯示,方便用戶對各區(qū)域的數(shù)據(jù)量有一個大概的了解。由于要分析的數(shù)
據(jù)來自數(shù)據(jù)庫,所以在 MapXtreme 中添加分析圖層需要兩個步驟:[3]首先將數(shù)據(jù)庫的數(shù)據(jù) 表和地圖的 MapInfo 表綁定,將綁定圖層添加到 MapJ 的 Layers 集合;第二步進行分析,將 分析圖層添加到 Layers 集合,并顯示。
鷹眼圖: 鷹眼圖在電子地圖中也是必不可少的功能之一,它是為了方便用戶瀏覽地圖而設,其
作用是顯示地圖框中所顯示的地圖在整幅地圖中的位置[4]。當主地圖放大到一定比例,視野 變得
16、很小時,對于長距離、大范圍的漫游操作是很不方便的,這個時候就要用鷹眼圖來控 制主地圖的定位。下面簡單介紹一下在 Applet 中設計鷹眼圖的基本思路。首先監(jiān)聽鼠標的
單擊事件,得到單擊的對象,如果單擊的是主地圖,那么判斷主地圖的中心或視野是否發(fā) 生改變,如果是,則調(diào)用相應方法來設置鷹眼圖的方框中心和大小;如果單擊的是鷹眼圖, 判斷鼠標是否發(fā)生拖拽事件,如果是,則根據(jù)用戶拖拽的框設置主地圖的視野和中心,如 果沒有拖拽只是單擊,則根據(jù)單擊的點和當前框大小來設置地圖的視野和中心。
運行結(jié)果如圖 3 所示,鷹眼圖中綠色的框即為主地圖的視野范圍。
3.2.4 其它功能
WebGIS 的其它功
17、能包括多點測距、圖層查看、圖層控制、圖元查找以及制作專題圖等 功能制作相對較為簡單,由于篇幅有限,不再一一介紹。
4 小結(jié)
圖 3 鷹眼圖
Fig3 Example of Overview Map
MapXtreme Java 是構(gòu)建基于 Internet 的地理信息系統(tǒng)的有力工具,由于它是純粹的 Java 類,擁有 Java 語言的優(yōu)越特性,使得熟悉 Java 的開發(fā)人員可以很快地掌握 Web GIS 開發(fā)的 方法。本文結(jié)合實際課題,介紹了用 MXTJ 開發(fā) WEB GIS 的基本方法,在此基礎上,深入 研究 MapXtreme 服務器端的工作原理
18、和掌握編程關鍵技術后,就可以根據(jù)用戶的不同需求, 開發(fā)出安全、高效、穩(wěn)健的 WEB GIS 應用系統(tǒng)。
參考文獻
[1] 李春雷,孫文波.We bGIS 在高速公路養(yǎng)護管理中的應用研究[J].交通標準化,2006,9:91-93.
[2] Troy.MapXtreme Java V4.8 Developer guid [M] .New York: MapInfo Corporation,2006.
[3] wtusmchen .空 間數(shù)據(jù)庫中 兩表聯(lián)合查詢 的結(jié)果分析 [EB/OL] .
/11-7449-7449 .htm,2005.
[4] 齊銳,屈韶琳,陽
19、琳赟.用 MapX 開發(fā)地理信息系統(tǒng)[M].北京:清華大學出版社,2003.
Design and Implementation of WebGIS System Based on
MapXtreme Java
Cui Hao
Wuhan University of Technology,Wuhan(430063)
Abstract
The elementary knowledge and the general method of developing WEB-GIS system was firstly introduced in this paper, and then ,based on an actual running example, one detailed programming
method—develop with JSP、Applet and Servlet was presented. At last, part of system code and
interface was given.
Keywords:WebGIS,Applet,MapXtreme for Java