《基于 MapXtreme Java 的 WebGIS 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》由會員分享,可在線閱讀,更多相關(guān)《基于 MapXtreme Java 的 WebGIS 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(6頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、豆丁網(wǎng)精品論文
基于 MapXtreme Java 的 WebGIS 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
崔昊 武漢理工大學(xué)信息學(xué)院,武漢 (430063) E-mail:ch_hzchhz@
摘 要:本文研究了 WEB GIS 平臺的架構(gòu)以及開發(fā) WEB GIS 的一般方法,然后結(jié)合實(shí)際 課題,實(shí)現(xiàn)了其中一種架構(gòu)方案――用 JSP、Applet 和 Servlet 相結(jié)合的方式架構(gòu)基于客戶 端模式的 WEB GIS 系統(tǒng)。最后給出了系統(tǒng)部分代碼和界面。
關(guān)鍵詞:地理信息系統(tǒng),Applet,MapXtreme for Java
中圖分類號:TP311
1 引言
WebGI
2、S 是將傳統(tǒng)的 GIS 系統(tǒng)與 Internet 相結(jié)合的一項(xiàng)技術(shù)。近年來,隨著 Internet 技 術(shù)的不斷發(fā)展與完善,傳統(tǒng)的單機(jī)式 GIS 系統(tǒng)正在逐步向網(wǎng)絡(luò)化發(fā)展。目前,WebGIS 系統(tǒng) 在網(wǎng)絡(luò)上已不少見,例如將 Ajax 技術(shù)應(yīng)用到 GIS 系統(tǒng)的 Google Map,Baidu Map 等。只要 用戶擁有一臺接入 Internet 的計(jì)算機(jī),就可以通過瀏覽器訪問到這些免費(fèi)的在線地圖服務(wù), WebGIS 系統(tǒng)給人們帶來了極大的方便。
本文研究了一種將 Applet 技術(shù)與 MapXtreme 相結(jié)合開發(fā) WebGIS 系統(tǒng)的方法,該系統(tǒng) 作為湖北京珠高速路面養(yǎng)護(hù)系統(tǒng)的一部分,已
3、成功應(yīng)用到實(shí)際當(dāng)中。
2 系統(tǒng)介紹
目前,我國高速公路總里程正在迅猛增長,交通運(yùn)輸?shù)陌l(fā)展有力地推動著國民經(jīng)濟(jì)和 社會的進(jìn)一步發(fā)展。與此同時,高速速公路的運(yùn)營管理越顯重要。其中高速公路養(yǎng)護(hù)管理 最為關(guān)鍵。但在實(shí)際養(yǎng)護(hù)管理工作中,存在著 1)養(yǎng)護(hù)管理滯后。目前的管理模式基于傳統(tǒng) 的單機(jī)輔肋管理,作為養(yǎng)護(hù)管理部門不能及時了解高速公路全線路面病害情況與路面養(yǎng)護(hù) 狀況,因?yàn)榇罅康难矙z數(shù)據(jù)不能及時刷新,故無法及時、真實(shí)地了解養(yǎng)護(hù)工程的質(zhì)量、養(yǎng) 護(hù)進(jìn)度等信息,只能事后處理和控制。2)養(yǎng)護(hù)工程管理較為復(fù)雜。路面信息的及時反映及匯 總,修復(fù)信息的改變,養(yǎng)護(hù)方案、歷史數(shù)據(jù)的存儲、查詢,養(yǎng)護(hù)工程計(jì)劃及費(fèi)用預(yù)
4、算、實(shí) 施等,只有用現(xiàn)代計(jì)算機(jī)及其網(wǎng)絡(luò)技術(shù)構(gòu)成先進(jìn)的管理系統(tǒng)和工作流程才能建立在大量的 數(shù)據(jù)收集、統(tǒng)計(jì)、分析的基礎(chǔ)上實(shí)現(xiàn),而這一方面沒有管理的信息化是無法完成的。
本套系統(tǒng)受湖北省京珠高速公路管理處委托開發(fā),旨在建立一套科學(xué)的高速公路管理系 統(tǒng),以提高高速公路運(yùn)營管理效率, 及時掌握和了解其運(yùn)營狀態(tài),進(jìn)一步提高高速公路管理的 信息化、科學(xué)化、規(guī)范化,使高速公路保持優(yōu)良的使用狀態(tài)和服務(wù)水平,提高其經(jīng)濟(jì)效益和 社會效益。其中,電子地圖模塊作為系統(tǒng)的重要模塊之一,起到了方便用戶對具體位置的查 看、查詢等作用。對于歷史數(shù)據(jù)的統(tǒng)計(jì)、分析可以在電子地圖上以直方圖或餅圖形式直觀地 呈現(xiàn)給用戶,有助于管理人
5、員作出更加有效的養(yǎng)護(hù)方案,預(yù)算更加合理的養(yǎng)護(hù)費(fèi)用[1]。
3 系統(tǒng)設(shè)計(jì)與實(shí)現(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
對象的位置、客戶端的實(shí)現(xiàn)方式和數(shù)據(jù)發(fā)送回客戶端的方式,MXTJ提供了三種WebGIS的架 構(gòu)方案:服務(wù)器端模式、客戶端模式、中等模式。根據(jù)實(shí)際需求,系統(tǒng)采用基于Applet技術(shù) 的客戶端模式。
基于客戶端模式架構(gòu)的特點(diǎn)是 MapJ 對象部署在
6、客戶端的 applet 中,客戶機(jī)上需要
Java 虛擬機(jī)的支持。其結(jié)構(gòu)示意圖如圖 1 所示。
MapJ 對象
HTML 瀏覽器
Applet
Servelet 容器 用戶自定義的 Web 應(yīng)用程序
MDF 文件
MapXtreme Java
地圖定義管理器
MDF 文件
JavaScript
MXTJ Web 應(yīng)用程序
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 服務(wù)器發(fā)送給 Applet 以顯示地圖,最后,用戶與地圖的交互由 Applet 實(shí)現(xiàn),Applet 將用戶請求發(fā)送至 MapXtreme Servlet,后者做出響應(yīng)渲染地圖,并將地圖圖像發(fā)送回客戶 機(jī)。這種模式的優(yōu)點(diǎn)是交互
8、能力強(qiáng),用戶可以利用 Applet 實(shí)現(xiàn)客戶端繪圖,這有利于實(shí)現(xiàn) 區(qū)域選擇查詢、增加標(biāo)注圖元以及鷹眼圖等復(fù)雜功能。
3.2 系統(tǒng)功能模塊及代碼實(shí)現(xiàn)
系統(tǒng)的運(yùn)行界面如圖 2 所示。主要功能包括以下幾個部分:
3.2.1 地圖的基本功能 地圖的基本功能包括:放大、縮小、漫游以及查看圖層等。
圖 2 系統(tǒng)運(yùn)行界面
Fig2 Main interface of the system
部分代碼示例如下:
public class EMap extends Japplet implements ActionListener,PropertyChangeListene
9、r , MouseListener,MouseMotionListener{
//定義mapPanel容納地圖
JPanel mapPanel = new JPanel();
//實(shí)例化VisualMapJ
VisualMapJ e_MapJ = new VisualMapJ();
//實(shí)例化工具條
MapToolBar e_mapToolBar = new MapToolBar();
//實(shí)例化各種地圖操作工具
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);
……
……
}
運(yùn)行結(jié)果如圖 2 所示
3.2.2 區(qū)域查詢功能 區(qū)域查詢功能為了方便用戶在地圖上選擇查詢感興趣的區(qū)域,具體實(shí)
11、現(xiàn)思路是:用戶
點(diǎn)擊圓形選擇工具進(jìn)行選擇,選擇完畢鼠標(biāo)釋放時,自動在 Applet 中調(diào)用 JavaScript,將選
擇內(nèi)容傳給 Servlet 執(zhí)行數(shù)據(jù)庫查詢,最后將查詢結(jié)果顯示在 JSP 頁面上。 部分代碼如下所示:
首先實(shí)現(xiàn)鼠標(biāo)監(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 存放滬蓉路段編號
//選擇了圓選工具并進(jìn)行拖拽時執(zhí)行搜索圖元方法
if(radius.isSelected()&&isDragged){
isDragged=false
//下面是圖元搜索方法,鑒于代碼太長這里省略。
foundFeature(){
……
}
//Applet 和 Servlet 或 JSP 通信有多種方法,這里使用了一種利用 JavaScript 傳參的方 法,利用 JavaScript 的強(qiáng)大功能,有時候會方便我們做一些數(shù)據(jù)的驗(yàn)證等。
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 負(fù)責(zé)執(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 集合;第二步進(jìn)行分析,將 分析圖層添加到 Layers 集合,并顯示。
鷹眼圖: 鷹眼圖在電子地圖中也是必不可少的功能之一,它是為了方便用戶瀏覽地圖而設(shè),其
作用是顯示地圖框中所顯示的地圖在整幅地圖中的位置[4]。當(dāng)主地圖放大到一定比例,視野 變得
16、很小時,對于長距離、大范圍的漫游操作是很不方便的,這個時候就要用鷹眼圖來控 制主地圖的定位。下面簡單介紹一下在 Applet 中設(shè)計(jì)鷹眼圖的基本思路。首先監(jiān)聽鼠標(biāo)的
單擊事件,得到單擊的對象,如果單擊的是主地圖,那么判斷主地圖的中心或視野是否發(fā) 生改變,如果是,則調(diào)用相應(yīng)方法來設(shè)置鷹眼圖的方框中心和大小;如果單擊的是鷹眼圖, 判斷鼠標(biāo)是否發(fā)生拖拽事件,如果是,則根據(jù)用戶拖拽的框設(shè)置主地圖的視野和中心,如 果沒有拖拽只是單擊,則根據(jù)單擊的點(diǎn)和當(dāng)前框大小來設(shè)置地圖的視野和中心。
運(yùn)行結(jié)果如圖 3 所示,鷹眼圖中綠色的框即為主地圖的視野范圍。
3.2.4 其它功能
WebGIS 的其它功
17、能包括多點(diǎn)測距、圖層查看、圖層控制、圖元查找以及制作專題圖等 功能制作相對較為簡單,由于篇幅有限,不再一一介紹。
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é)合實(shí)際課題,介紹了用 MXTJ 開發(fā) WEB GIS 的基本方法,在此基礎(chǔ)上,深入 研究 MapXtreme 服務(wù)器端的工作原理
18、和掌握編程關(guān)鍵技術(shù)后,就可以根據(jù)用戶的不同需求, 開發(fā)出安全、高效、穩(wěn)健的 WEB GIS 應(yīng)用系統(tǒng)。
參考文獻(xiàn)
[1] 李春雷,孫文波.We bGIS 在高速公路養(yǎng)護(hù)管理中的應(yīng)用研究[J].交通標(biāo)準(zhǔn)化,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].北京:清華大學(xué)出版社,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