尹巖雷
邯鄲銀行信息科技部,河北邯鄲 056002
GIS(地理信息系統(tǒng))是收集、存儲、管理和分析數(shù)字地理空間信息的系統(tǒng),它是一種特定的十分重要的空間信息系統(tǒng)。隨著人們生活水平的提高,其應用也越來越廣泛。由于類似于手機的手持設備已經(jīng)成為了人們生活必不可少的工具,也是伴隨著人們時間最長的工具,因此將GIS應用與手機之上將會給人們的生活與工作帶來更多的方便。
Mobile GIS(移動地理信息系統(tǒng))就是以WWW的Web頁面作為GIS軟件的用戶界面,把Internet和GIS技術結(jié)合在一起,能夠進行各種交互操作的GIS,它是一種大眾化的GISoWeb頁面使用超媒體技術和超文本鏈接語言,使得對WWW的操作更富有靈活性和趣味性。以Web作為GIS的用戶界面,將一改以往GIS軟件用戶界面呆板生硬的面孔,更利于GIS大眾化。本文首先對移動GIS系統(tǒng)的進行分析,然后對系統(tǒng)的功能模塊進行設計。
系統(tǒng)的執(zhí)行單元即為功能模塊,合理的模塊劃分對系統(tǒng)針對不同的應用進行功能的裁減是非常有幫助的。按照實際需要,我們把本系統(tǒng)的功能模塊分成了圖層控制模塊、地圖操作模塊、GPS數(shù)據(jù)獲取和現(xiàn)實模塊、數(shù)據(jù)管理模塊、空間分析模塊。
該模塊的基本操作包含了恢復原始試圖、地圖的平移與縮放。還能控制是不是要顯示比例尺、指南針。
該模塊包含了圖層的疊放次序控制與可見性控制,還能控制是否要顯示具體的圖層的標注。
該模塊主要有分析、路徑查詢和按照圖形來查屬性的功能。
本模塊將移動終端的運算能力充分挖掘出來了,通過周邊查詢、按照關鍵字來查位置,從而實現(xiàn)通過路徑查詢來找到各個空間。由于路徑查詢的算法十分復雜,所以把它放在服務器端來運算,而客戶端則完成了本地顯示和解析返回的結(jié)果。本系統(tǒng)尚未涉及到一些更高級的GIS的空間分析模塊,像是三維分析、面或線狀地物分析、疊置分析等。
該模塊在有效組織與存儲地圖數(shù)據(jù)的基礎之上,有效的管理了地圖的數(shù)據(jù),包含了地圖信息元數(shù)據(jù)的查看、地圖數(shù)據(jù)的刪除、增加。增加地圖數(shù)據(jù)的時候要向服務器端發(fā)出數(shù)據(jù)請求,將返回的數(shù)據(jù)解析以后再存儲至相應的文件系統(tǒng)或者是RMS當中。
該模塊的主要功能就是使得支持藍牙的移動設備使用藍牙來對附近的GPS數(shù)據(jù)進行讀取。在獲取GPS數(shù)據(jù)之后,要對坐標進行變換,不但能在手機的地圖上顯示出當前所在位置,還能進行導航和路徑顯示。
按照上述對功能模塊的設計,該手機具有的具體功能包括地圖操作、圖層控制、地圖的打開和瀏覽、數(shù)據(jù)請求、地圖數(shù)據(jù)的管理、圖形屬性的互查、路徑查詢和顯示等。依據(jù)各操作的關聯(lián)性與邏輯聯(lián)系,主界面將會提供四項功能,它們分別是打開地圖、關于本系統(tǒng)、新地圖請求和本地數(shù)據(jù)管理。主界面不會涉及到低級的用戶界面當中的圖形繪制,使用MIDP高級界面來實現(xiàn)的。其中,新地圖請求界面的功能是讓用戶能便捷、直觀地對新數(shù)據(jù)請求所需參數(shù)進行組合,向服務器提交所生成的規(guī)范的URIJ。它的作用是和服務器進行數(shù)據(jù)的交互,將本地數(shù)據(jù)的更新完成。本地數(shù)據(jù)管理則是提供本地的地圖數(shù)據(jù)的元數(shù)據(jù)查看、刪除、打開等功能。在打開地圖中提供了兩種地圖打開的方法,分別為打開RMS列表和文件系統(tǒng)當中的瀏覽svg格式的文件。在打開地圖的基礎之上,再提供各項對地圖的操作,例如圖形查找、路徑的查詢和顯示、圖層控制、屬性查找等。為了方便用戶的操作,將會在每一個界面上提供幫助窗口,用來提供說明或操作方面的信息。
移動GIS系統(tǒng)的結(jié)構(gòu)主要是由三部分組成的:數(shù)據(jù)源、服務器部分、客戶端部分,分別承載于數(shù)據(jù)層、中間層和表現(xiàn)層。數(shù)據(jù)層包含了存有屬性數(shù)據(jù)和空間數(shù)據(jù)的大型對象關系的數(shù)據(jù)庫,不但提供數(shù)據(jù),還提供了一個空間數(shù)據(jù)的引擎。中間層包含了互聯(lián)網(wǎng)、MaPServer、移動互聯(lián)網(wǎng)、webserver等部分,一方面提供了和移動終端的相互操作,另一方又提供了各種GIS的應用,同時還進行對空間數(shù)據(jù)的轉(zhuǎn)換與處理。表現(xiàn)層則是客戶端的載體,包含了各種不同的移動終端,能夠為移動GIS系統(tǒng)離線服務的模式提供新的支持,也能和移動終端進行同步互聯(lián)。
本移動GIS系統(tǒng)的客戶端開發(fā)采用了NetBeans IDE5.5的開發(fā)環(huán)境,用NetBeans mobility5.5來配合,用最新的WTK2.5作為Java開發(fā)包。
2.2.1 地圖數(shù)據(jù)的加載
所謂地圖加載就是在移動終端顯示出SVG文檔的過程。在引入(import)必要的API包之后,可以在MIDlet當中用ScalableGrephics類來直接地繪制出一個Scalablelmage到Grephics對象上面,還能夠通過參數(shù)來對屏幕上的繪制起點進行控制。SVGImage為ScalableImage的子類之一,提供了底層DOM文檔訪問和事件處理的直接聯(lián)系。在繪制之前,一定要用bindTarget方法吧傳遞至繪制方法當中的Grephics對象與ScalabeGraphics實例綁定起來,并且在完成繪制之后調(diào)用releaseTargct()的方法。
2.2.2 地圖基本的操作
盡管通過對SVG文檔當中的坐標來運行transform的方法進行平移與變換也能夠?qū)崿F(xiàn)漫游于對地圖的縮放,但是因為其中所涉及的坐標的變換需要數(shù)學運算,對某個元素進行特殊變換的時候可以使用這種方法,但是在進行整體運算的時候就會顯得效率太低。
在SVG文檔當中,

圖1 地圖放大前后的對比圖
2.2.3 根據(jù)關鍵字來查位置

圖2 查詢的結(jié)果
所謂屬性查詢是指依據(jù)用戶所輸入的關鍵字來搜索相關地理要素,并且把它突出顯示出來。在搜索的時候首先要將制定的圖層當中的每個要素遍歷,然后把符合條件的要素都添加進一個列表當中去。要是搜索的結(jié)果為空,要提醒用戶重新搜索;要是結(jié)果僅有一個,就直接顯示出來;要是結(jié)果有多條記錄,就生成一個結(jié)果列表,讓用戶從中進行第二次選擇再顯示出來。
在高亮顯示搜索的結(jié)果的時候,要把它放在當前屏幕中央的位置。可以采取獲取結(jié)果實體中心的邊界坐標或是中心坐標,然后再對viewBox屬性進行調(diào)整的方法來實現(xiàn)。然而,獲得用路徑、矩形或者圓等表示的地理要素的位置坐標的方法是不一樣的,并且在對線要素和多邊形要素進行高亮度顯示的時候要ui要素最小的邊界矩形(MBR)進行計算,按照屏幕大小和圖形大小的關系來確定viewBox的大小。搜索的結(jié)果如圖2所示。
2.2.4 路徑的查詢
所謂路徑查詢是指顯示兩點間的路徑信息,要實現(xiàn)此功能要借助于服務器。客戶端向服務器提交起訖點的路徑方式(最省時、最短等)和點位信息,服務器端在計算了路徑之后,向客戶端返回查詢結(jié)果,移動終端解析了數(shù)據(jù)之后,利用程序來生成

圖3 路徑的查詢界面和查詢結(jié)果的界面
本文設計與實現(xiàn)的移動GIS系統(tǒng),是真正意義上的MVC架構(gòu),與通常以JS技術實現(xiàn)的靜態(tài)方式有根本區(qū)別。
[1]陳靜,龔健雅,朱欣焰,李清泉.基于J2EE的分布式WebGIS[J].測繪通報,2004(2):27-30.
[2]戚銘堯,池天河,霍亮.Web-GIS的企業(yè)級解決方案探討[J].計算機科學,2003,30(2).
[3]周穎.基于WebGIS的移動信息發(fā)布系統(tǒng)研究[D].北京.北京移動大學碩士論文,2004,3:19-22.