

下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、封面文本對利用 J2ME 網(wǎng)絡(luò) API 接口 javax.microedition.io.HttpConnection 實(shí)現(xiàn)與服務(wù)器進(jìn)行數(shù)據(jù)傳遞,服務(wù)器端利用 Servlet 來響應(yīng)用戶查詢請求 java 專有類和方法來進(jìn)行地圖數(shù)據(jù)處理,以及在客戶端顯示、放大、縮小、平移、 色渲染出來進(jìn)行了研究。關(guān)鍵詞 :J2ME,MapXtreme ,地理信息系統(tǒng),渲染作者: PanHongliang僅供個人學(xué)習(xí)來建立 HTTP 連接 ,使用 Mapxtreme for 查詢地點(diǎn)用黃DESIGN AND IMPLEMENTATIONOFURBAN GEOGRAPHICINFORMATIONSYSTEMBAS
2、ED ON J2MEABSTRACTUsing network API interface javax.microedition.io.HttpConnection to set up to connection between theserver and the client and transmit datas. It responds to user queriesrequest with Servlet at server-side.Itprocesses map data by MapXtreme for java.It study how to show enlarge、 redu
3、ce、 translation 、render map.Itdiscusses the problems encountered on development process and the solve.Keywords: J2ME, MapXtreme, geographic information system, rend目錄第一章 緒論 01.1 引言 01.2 城市地理信息查詢系統(tǒng)的應(yīng)用與前景 0第二章 相關(guān)技術(shù)介紹 02.1 什么是 J2ME022 J2ME 的架構(gòu) 02.3 MAPXTREME FOR JAV筒介 12.4 SERVLET技術(shù) 22.5 基于 J2ME 的地理信息服
4、務(wù)系統(tǒng)特點(diǎn)22.5.1基于移動互聯(lián)網(wǎng)絡(luò)移動 22.5.2移動性 22.5.3瘦客戶 22.5.4終端技術(shù)的先進(jìn)性 2第三章 系統(tǒng)分析與設(shè)計 33.1 需求分析 33.2 系統(tǒng)總體結(jié)構(gòu) 33.2.1 系統(tǒng)總體結(jié)構(gòu)分析33.2.2 服務(wù)器端的分析以HTTP方式發(fā)送請求 43.2.3 客戶端的分析設(shè)計53.2.4 分析手機(jī)的地理信息服務(wù)系統(tǒng)的難點(diǎn)和相應(yīng)策略5第四章 系統(tǒng)的關(guān)鍵技術(shù)分析與實(shí)現(xiàn) 74.1 用戶界面顯示 74.2 服務(wù)器端的分析 94.2.1地圖數(shù)據(jù)連接 94.2.2實(shí)現(xiàn)地圖縮放 94.2.3空間查詢 錯誤!未定義書簽。 第五章 結(jié)論 13 參考文獻(xiàn) 14 致謝 14面的圖表描述了不同的虛
5、擬機(jī)、配置和簡表之間的關(guān)系。它同時把J2SE API 和它的 Java 虛第一章 緒論1.1 引言隨著 3G 時代的到來,無線通信迅猛發(fā)展,手機(jī)地圖查詢這種新穎的功能將得到快速的發(fā)展。 現(xiàn)在,人們獲得信息的方式正在經(jīng)歷著以位置服務(wù)為主要特征的深刻變革,這就為手機(jī)地圖查詢這 一功能的普及提供了一個良好的環(huán)境。目前,越來越多的廠商在Su n,摩托羅拉,西門子和愛立信等公司的技術(shù)主持下,開始開發(fā)基于 J2ME 平臺的無線應(yīng)用服務(wù)?;?J2ME 的城市地理信息查詢 系統(tǒng)正是其中極具代表性的服務(wù)工程,目前已經(jīng)有許多網(wǎng)站提供地理信息的查詢,但在嵌入式設(shè)備中提供此項服務(wù)的系統(tǒng)還很少見?;?J2ME 的城
6、市地理信息查詢系統(tǒng)正是面向嵌入式設(shè)備而開發(fā) 的,具有界面友好,功能全面,性能穩(wěn)定,易于擴(kuò)展等特點(diǎn),基本能滿足用戶的地理信息查詢需 求。1.2 城市地理信息查詢系統(tǒng)的應(yīng)用與前景隨著技術(shù)的快速發(fā)展, GIS(地理信息系統(tǒng))已經(jīng)在很多部門和領(lǐng)域得到了廣泛的應(yīng)用,這些領(lǐng) 域包括資源開發(fā)、環(huán)境保護(hù)、城市規(guī)劃建造、土地管理、農(nóng)作物調(diào)查與結(jié)產(chǎn)、交通、能源、通訊、 地圖測繪、林業(yè)、房地產(chǎn)開發(fā)、自然災(zāi)害的檢測與評估、金融、保險、石油與天然氣、軍事、犯罪 分析、運(yùn)輸與導(dǎo)航、 110 報警系統(tǒng)公共汽車調(diào)度等方面得到了具體應(yīng)用。與此同時 , 無線移動設(shè)備得到廣泛使用,各大生產(chǎn)廠商加大了對J2ME 技術(shù)的支持, J2M
7、E 技術(shù)是目前在許多移動設(shè)備上受到廣泛支持的一種技術(shù),可以在與臺式機(jī)相比資源有限的環(huán)境中得到應(yīng) 用,與先前的Symbian 等技術(shù)相比,具有平臺開放性高,介入門檻低等優(yōu)點(diǎn),因此在此基礎(chǔ)上的無 線設(shè)備應(yīng)用開發(fā)就更有著廣泛的意義。將傳統(tǒng)的 GIS 技術(shù)和支持移動設(shè)備應(yīng)用開發(fā)的 J2ME 技術(shù)進(jìn) 行結(jié)合,構(gòu)造能夠方便快捷的查詢地理信息查詢的系統(tǒng),就顯得更具有應(yīng)用價值。在 GIS 領(lǐng)域,目前許多公司和科研機(jī)構(gòu)提供了非常好的應(yīng)用解決方案,其中比較成熟的有美國 的 MapInfo 公司,他們的 Map-Info 系列產(chǎn)品,可以提供從單機(jī)到網(wǎng)絡(luò)的整個應(yīng)用的開發(fā)接口,比 較完善的產(chǎn)品包括 MapX,MapIn
8、fo 等,這中間的 MapXtreme for Java 產(chǎn)品是完全基于 Java 的開發(fā) 接口,可以提供完整的跨平臺的基于網(wǎng)絡(luò)的地理信息的查詢和處理。第二章 相關(guān)技術(shù)介紹2.1 什么是 J2MESun Microsystems 將 J2ME 定義為 “一種以廣泛的消費(fèi)性產(chǎn)品為目標(biāo)的高度優(yōu)化的 Java 運(yùn)行時 環(huán)境,包括尋呼機(jī)、移動電話、可視電話、數(shù)字機(jī)頂盒和汽車導(dǎo)航系統(tǒng)?!弊詮?1999 年 6loperConference 上聲明之后2, J2ME 為小型設(shè)備帶來了 Java 語言的跨平臺功能,允許移動無線設(shè)備共 享應(yīng)用程序。有了 J2ME, Sun 已經(jīng)使 Java 平臺能夠適應(yīng)集成了
9、或基于小型計算設(shè)備在 Java One Dive 的用戶產(chǎn)品。2.2 J2ME 的架構(gòu)J2ME 使用配置和簡表定制 Java 運(yùn)行時環(huán)境(JRE)。作為一個完整的 JRE,J2ME 由配置和簡表 組成,配置決定了使用的 JVM ,而簡表通過添加特定于域的類來定義應(yīng)用程序。配置將基本運(yùn)行 時環(huán)境定義為一組核心類和一個運(yùn)行在特定類型設(shè)備上的特定JVM 。我們將在 J2ME 配置一章中詳細(xì)討論配置。簡表定義應(yīng)用程序,特別地,它向 J2ME 配置中添加特定于域的類,定義設(shè)備的某種 作用。擬機(jī)進(jìn)行了比較。雖然 J2SE 虛擬機(jī)通常被稱為一種 JVM ,但是 J2ME 虛擬機(jī)、 KVM 和 CVM 都是
10、JVM 的子集。 KVM 和 CVM 均可被看作是一種 Java 虛擬機(jī) - 它們是 J2SE JVM 的壓縮版,并特定 于 J2ME 。圖 2-1 不同虛擬機(jī)、配置和簡表之間的關(guān)系2.3 MapXtreme for java 簡介MapXtreme for Java 版是企業(yè)級的地圖繪制開發(fā)工具,可實(shí)現(xiàn)數(shù)據(jù)的可視化和地圖繪制,幫助 企業(yè)作出更加出色的決策,并更加有效地進(jìn)行運(yùn)營和管理資產(chǎn)。在可管理的服務(wù)器網(wǎng)絡(luò)上實(shí)現(xiàn)應(yīng)用 程序的運(yùn)行,不僅在很大程度上提高了規(guī)模效益,如降低硬件和管理成本,同時還明顯改善了應(yīng)用 程序性能、可靠性和安全性。使用MapXtreme for Java 構(gòu)建的應(yīng)用程序既可適
11、用于企業(yè)內(nèi)部網(wǎng),也 可適用于公共的因特網(wǎng)。MapXtreme for Java 是一個 100% 的純 Java 類( Java 2 兼容)集合,借助于這一集合,可將應(yīng) 用程序部署到各種系統(tǒng),無論是 Windows 、 UNIX 系統(tǒng),還是這兩種系統(tǒng)的混合環(huán)境。MapXtreme 提供了支持多平臺、高質(zhì)量、高性能的易用解決方案來滿足各種地圖繪制需求。有 以下優(yōu)點(diǎn):(1)多平臺支持 出于安全性、可靠性和性能方面的種種原因,諸如電訊和保險業(yè)等眾多面向最終用戶的行業(yè), 均采用了 UNIX 系統(tǒng);而與此同時,同一企業(yè)中的不同用戶,還有可能使用 Windows 系統(tǒng)。在多 平臺上部署類似解決方案是常見的
12、需求之一。借助于基于 Java 的地圖繪制應(yīng)用程序,開發(fā)人員編 寫一個程序,即可在支持虛擬機(jī)的多種平臺上運(yùn)行。將MapXtreme Java 部署在服務(wù)器端運(yùn)行,即可充分利用現(xiàn)有的 UNIX 或 Windows 資源。開發(fā)人員可以在一個系統(tǒng)上存儲和控制數(shù)據(jù),同時通 過編程從其他運(yùn)行虛擬機(jī)的計算機(jī)實(shí)現(xiàn)相應(yīng)數(shù)據(jù)的訪問。(2)高擴(kuò)展性對于使用 MapXtreme 創(chuàng)建企業(yè)級地圖繪制解決方案的組織而言, 所開發(fā)的應(yīng)用程序不僅應(yīng)該 可以良好運(yùn)行,而且還應(yīng)該可以支持需要訪問各種應(yīng)用的所有用戶。 MapXtreme 為此采用基于組件 的策略,提供了可靠的多線程解決方案,確保了出色的適應(yīng)性和擴(kuò)展性。借助于此,
13、企業(yè)即可根據(jù) 組織的具體需求來擴(kuò)展應(yīng)用程序。(3)快速部署借助于 MapXtreme ,用戶可以實(shí)現(xiàn)應(yīng)用程序的快速開發(fā)、安裝和部署。本產(chǎn)品為此提供了用于 快速開發(fā)原型的 Web Application Builder 向?qū)?,以及展?MapXtreme Java 基本概念和知識的若干示 例應(yīng)用程序。這些示例應(yīng)用程序既可以進(jìn)一步開發(fā)為專用的應(yīng)用程序,也可以作為用戶自行開發(fā)應(yīng) 用程序所依賴的基礎(chǔ)。MapXtremeJava 與所有 J2EE 驗證的 Web 服務(wù)器/ 瀏覽器兼容,并且不使用 專屬的插件。使用 MapXtreme Java 可以構(gòu)建兩層和三層 Web 地圖繪制程序,處理源自客戶機(jī)的地
14、圖數(shù)據(jù)請 求。借助于其靈活的可擴(kuò)展體系結(jié)構(gòu),可根據(jù)具體繪圖需要,向客戶機(jī)發(fā)送軟件、控制對于敏感數(shù) 據(jù)的訪問和隨需求的增長來擴(kuò)展應(yīng)用程序。程序員尤其可以:? 設(shè)計只具備所需的特性和信息的定制地圖? 通過程序創(chuàng)建靜態(tài)和動態(tài)對象? 自定義圖元的外觀、位置和行為? 監(jiān)聽類似用戶鼠標(biāo)點(diǎn)擊的地圖事件,初始化地圖的變更對于要使用地圖繪制應(yīng)用程序的最終用戶而言,可為其提供工具來實(shí)現(xiàn):? 縮放和平移,以更改地圖視野? 選擇圖元并繪制搜索區(qū)域? 查詢圖元以獲取更多信息? 創(chuàng)建專題影線表示,例如基于數(shù)據(jù)庫數(shù)據(jù)的顏色編碼地圖? 控制對象和標(biāo)注的可見性和樣式2.4 Servlet 技術(shù)Servlet 是使用 Java
15、Servlet 應(yīng)用程序設(shè)計接口 ( API ) 及相關(guān)類和方法的 Java 程序。 除了 Java Servlet API ,Servlet 還可以使用用以擴(kuò)展和添加到 API 的 Java 類軟件包。 Servlet 在啟用 Java 的 Web 服務(wù)器上或應(yīng)用服務(wù)器上運(yùn)行并擴(kuò)展了該服務(wù)器的能力。 Java servlet 對于 Web 服務(wù)器就好象 Java applet 對于 Web 瀏覽器。Servlet 裝入 Web 服務(wù)器并在 Web 服務(wù)器內(nèi)執(zhí)行,而 applet 裝入 Web 瀏覽器并在 Web 瀏覽器內(nèi)執(zhí)行。 JavaServlet API 定義了一個 servlet 和
16、Java 服務(wù)器之間的一個標(biāo)準(zhǔn) 接口,這使得 Servlets 具有跨服務(wù)器平臺的特性。我們在研究和設(shè)計支持地圖查詢和顯示系統(tǒng)中間 , 利用 MapXtreme for Java 結(jié)合 Servlet 構(gòu)造一個地圖應(yīng)用的服務(wù)器 , 利用 J2ME 來設(shè)計移動設(shè)備端的 應(yīng)用界面和響應(yīng)接口 , 可以實(shí)現(xiàn)從地圖查詢顯示到相關(guān)應(yīng)用的一系列功能。2.5 基于 J2ME 勺地理信息服務(wù)系統(tǒng)特點(diǎn)2.5.1 基于移動互聯(lián)網(wǎng)絡(luò)移動互聯(lián)網(wǎng)的發(fā)展推動網(wǎng)絡(luò)地理信息技術(shù)從PC 機(jī)走向手機(jī)和 PDA 等移動設(shè)備?;谝苿踊ヂ?lián)網(wǎng)絡(luò)的 Java 手機(jī)的地理信息服務(wù)具有移動互聯(lián)網(wǎng)絡(luò)帶寬較小、時延較大、連接可靠性較低等特性。2.
17、5.2 移動性移動的互聯(lián)網(wǎng)方便了網(wǎng)絡(luò)用戶在移動中,隨時隨地地獲取所需的GIS 信息和服務(wù)。移動地理信息服務(wù)系統(tǒng)具有可以提供給移動中的用戶的當(dāng)前位置和方便的查詢自己感興趣的或周圍的地理信息 等功能,移動性是傳統(tǒng)的互聯(lián)網(wǎng)絡(luò)所不能比擬的優(yōu)勢。2.5.3 瘦客戶基于手機(jī)終端的地理信息服務(wù)系統(tǒng)受手機(jī)設(shè)備的特性限制,是客戶端向服務(wù)器端請求地圖圖像,并進(jìn)行顯示,服務(wù)器進(jìn)行空間數(shù)據(jù)的選取和圖像生成的工作。而Java 手機(jī)由于采用了 J2ME 技術(shù),所以允許用戶進(jìn)行一些智能化的處理。普通的Java 手機(jī)由于受存儲器容量、處理器速度等限制,只能進(jìn)行極少量運(yùn)算,因而在普通手機(jī)上開發(fā)基于矢量的地理信息應(yīng)用難度相對較大
18、。而PDA型的 Java 手機(jī)由于處理器和存儲器及顯示能力方面的限制相對較小,可以承擔(dān)較多的計算工作,客 戶端可以請求部分地圖圖形數(shù)據(jù),解讀這些數(shù)據(jù),執(zhí)行地圖的生成和顯示的工作,并執(zhí)行一些簡單 的查詢。這種情況下,客戶端由于是矢量格式的圖形,故可以在數(shù)據(jù)允許的范圍內(nèi),執(zhí)行某些基于 矢量的地圖操作。如新太集團(tuán)移動終端產(chǎn)品事業(yè)部推出的面向 Motorola A6288 、 388 廣深指南,其客 戶端就采用了基于矢量格式的地圖。2.5.4 終端技術(shù)的先進(jìn)性采用 J2ME 技術(shù)作為客戶端技術(shù)有很多優(yōu)點(diǎn)。首先,J2ME 軍決方案具有”智能化”的特點(diǎn),這種智能化特點(diǎn)能辨認(rèn)出用戶訪問的信息是本地的還是 I
19、nternet 上的。如果是在本地,則將存儲區(qū) 域中的信息調(diào)出來供用戶瀏覽;若是 Internet 上的,則將所需要的信息或程序下載到存儲區(qū)。其 次,從用戶操作的角度講,J2ME 能提供更多更靈活的交互方式。在 J2ME 平臺支持下,手機(jī)可以生 成并顯示基于矢量的圖形,并且可以提供給用戶基于矢量的圖形操作。再次,從顯示效果來看,通過使用 J2ME 技術(shù),用戶將不再被限制在 WA 設(shè)備的有限的單色接口,而是可以很容易地享受到豐富多彩的生動的圖像和應(yīng)用。此外,J2ME 還可以提供離線的服務(wù)。第三章 系統(tǒng)分析與設(shè)計3.1 需求分析與以往人們需要購買紙質(zhì)地圖產(chǎn)品不同,現(xiàn)在人們并不需要直接購買地圖產(chǎn)品,
20、而是通過購買 汽車、手機(jī)或上網(wǎng)等途徑使用電子地圖產(chǎn)品。隨著手機(jī)的日益普及,無線通信的多樣化服務(wù)越來越 接近普通消費(fèi)者,而基于J2ME 的城市地理信息查詢系統(tǒng)正是其中極具代表性的服務(wù)工程,目前已 經(jīng)有許多網(wǎng)站提供地理信息的查詢,但在嵌入式設(shè)備中提供此項服務(wù)的系統(tǒng)還很少見,J2ME 城市地理信息查詢系統(tǒng)正是面向嵌入式設(shè)備而開發(fā)的,具有界面友好,功能全面,性能穩(wěn)定,易于擴(kuò)展 等特點(diǎn),依托專業(yè)的地圖服務(wù)器 MapXtreme 的支持,基本能滿足用戶的地理信息查詢需求。打開手機(jī),就能看到自己在地圖中的確切位置,無論走到哪里都不存在迷路的問題了。通過手 機(jī)地圖,迅速查找離自己最近的車站、飯店、旅館等信息,
21、對于駕車用戶,可以方便分析自己的駕 車路線,如果第三方軟件通過 Google 地圖開發(fā)交通道路塞車信息等服務(wù),那么對于大城市的駕車者 來說,可以為此節(jié)省大量時間,我想即使是付費(fèi)服務(wù),也有很多人愿意掏錢購買這么有用的服務(wù) 的,畢竟中國的手機(jī)用戶遠(yuǎn)遠(yuǎn)高于上網(wǎng)用戶。所以上我覺得開發(fā)基于J2ME 的城市地理信息系統(tǒng)非常有必要,也很有前景,必定會受到手機(jī)用戶的喜愛。3.2 系統(tǒng)總體結(jié)構(gòu)在研究和設(shè)計支持地圖查詢和顯示系統(tǒng)中間,利用 MapXtreme for Java 結(jié)合 Servlet 構(gòu)造一個地 圖應(yīng)用的服務(wù)器,利用 J2ME 來設(shè)計移動設(shè)備端的應(yīng)用界面和響應(yīng)接口,可以實(shí)現(xiàn)從地圖查詢顯示 到相關(guān)應(yīng)用
22、的一系列功能。3.2.1 系統(tǒng)總體結(jié)構(gòu)采用 MapXtreme for Java 作為地圖服務(wù)器端,用于對地理數(shù)據(jù)進(jìn)行查詢和處理,并結(jié)合Servlet技術(shù)對客戶端的請求進(jìn)行響應(yīng),這樣可以很好的結(jié)合MapXtreme 地理信息處理和 Servlet 的多線程處理能力。系統(tǒng)客戶端使用 J2ME 標(biāo)準(zhǔn) API 和 MIDP 類庫,因此具有很好的通用性,當(dāng)用戶使用地 點(diǎn)查詢功能時,系統(tǒng)提示用戶輸入要查詢的地名,從服務(wù)器上返回地圖圖片數(shù)據(jù),在客戶端顯示。 系統(tǒng)總體結(jié)構(gòu)分析圖如圖3-1 所示。圖 3-1 系統(tǒng)總體結(jié)構(gòu)分析圖 在系統(tǒng)中間沒有考慮無線網(wǎng)絡(luò)與客戶端以及與服務(wù)器端的網(wǎng)關(guān),系統(tǒng)環(huán)境中要求無線網(wǎng)絡(luò)和支
23、 持 HTTP 協(xié)議, Web 服務(wù)器通過 HTTP 流接受從客戶端發(fā)送過來的請求和發(fā)送處理的結(jié)果,地圖服 務(wù)響應(yīng)處理模塊則是系統(tǒng)的核心部分,專門負(fù)責(zé)對地圖數(shù)據(jù)的實(shí)際處理和返回。地圖數(shù)據(jù)采用了 MapInfo 的 Tab 表格式,這些文件劃分為概念類似于工作空間的geoset (擴(kuò)展名為.gst) 組。 例如, 數(shù)據(jù)中有一個 world.tab 文件和一個 world.gst 文件。 geoset World.gst 是一種元 數(shù) 據(jù) 文 件 ,用 于 說 明 一 個 包 括 world.tab 和 其 他 文 件 的 .tab 文 件 集 合 。 用 myMap.loadGeoset(geo
24、setName,dataDir, servletURL) 。來進(jìn)行加載,其中 geosetName 是到 geoset 的 完整路徑, dataDir 是 geoset 中引用的 .tab 文件在服務(wù)器計算機(jī)上的位置(可能和 MapXtremeServlet 不在相同的計算機(jī)), servletURL 是 MapJ 使用遠(yuǎn)程 DataProviderRef 時到 MapXtremeServlet 的路徑 (如果使用 LocalDataProviderRef ,參數(shù)為空)。MapXtreme Java 還提供了采用.mdf 格式的數(shù)據(jù)集?;?XML 的地圖定義是說明地圖圖元和設(shè) 置的文本文件,
25、打破 geosets 的限制條件,所以建議使用地圖定義。那么如何來加載地圖定義呢?要顯示現(xiàn)有地圖定義,可執(zhí) 行以下操作:myMap.loadMapDefi nitio n(m_fileToLoad)。其中 m_fileToLoad為地圖文件所放置的絕對地址??蛻舳酥饕峁┯脩舨樵兊妮斎虢涌诤团c服務(wù)器端連接的接口,并且在手機(jī)上顯示查詢結(jié)構(gòu)(查詢后的地圖),同時還具有對地圖進(jìn)行放大,縮小和移動的功能。服務(wù)器主要以HTTP 方式接收客戶端請求,并根據(jù)請求將地圖數(shù)據(jù)以數(shù)據(jù)流傳輸?shù)姆绞椒祷亟o客戶端。系統(tǒng)結(jié)構(gòu)框圖如圖3-2圖 3-2 系統(tǒng)結(jié)構(gòu)框圖3.2.2 服務(wù)器端的分析由于客戶端是與服務(wù)器端的Servl
26、et 進(jìn)行通信,服務(wù)器端主要是如何配合客戶端的功能設(shè)計。Servlet 的核心內(nèi)容就是要對客戶端發(fā)來的請求進(jìn)行處理,然后將處理結(jié)果寫入響應(yīng)中發(fā)送到客戶端。servlet 有良好的生存期的定義,包括如何加載、實(shí)例化、初始化、處理客戶端請求以及如何被 移除。這個生存期由javax.servlet.Servlet 接口的 init,service 和 destroy 方法表達(dá)。(1)加載和實(shí)例化容器負(fù)責(zé)加載和實(shí)例化一個servlet。實(shí)例化和加載可以發(fā)生在引擎啟動的時候,也可以推遲到容器需要該 servlet 為客戶請求服務(wù)的時候。首先容器必須先定位servlet 類,在必要的情況下,容器使用通常的
27、Java 類加載工具加載該servlet,可能是從本機(jī)文件系統(tǒng),也可以是從遠(yuǎn)程文件系統(tǒng)甚至其它的網(wǎng)絡(luò)服務(wù),可以通過JavaWeb 服務(wù)器的 HTTP Web 服務(wù)的 servlet 控制頁面來控制。容器加載servlet 類以后,它會實(shí)例化該類的一個實(shí)例。需要注意的是可能會實(shí)例化多個實(shí)例,例如一個servlet 類因為有不同的初始參數(shù)而有多個定義。servlet 只加載一次,servlet 的多個線程將處理客戶的多個請求。(2)初始化servlet 加載并實(shí)例化后,容器必須在它能夠處理客戶端請求前初始化它。初始化的過程主要是 讀取永久的配置信息,昂貴資源(例如 JDBC 連接)以及其它僅僅需要
28、執(zhí)行一次的任務(wù)。通過調(diào)用 它的 in it 方法并給它傳遞唯一的一個(每個 servlet 定義一個)ServletCo nfig 對象完成這個過程。給 它傳遞的這個配置對象允許servlet 訪問容器的配置信息中的名稱值對(name-value)初始化參數(shù)。這個配置對象同時給servlet 提供了訪問實(shí)現(xiàn)了ServletContext 接口的具體對象的方法,該對象描述了 servlet 的運(yùn)行環(huán)境。在 servlet 被適當(dāng)?shù)爻跏蓟?,容器就可以使用它去處理請求了。每一個請求由 型的對象代表,而 servlet 使用 ServletResponse 回應(yīng)該請求。這些對象被作為 遞給servl
29、et 。在 HTTP 請求的情況下,容器必須提供代表請求和回應(yīng)的HttpServletResponse 的具體實(shí)現(xiàn)。需要注意的是容器可能會創(chuàng)建一個 servlet 實(shí)例并將之放入等待服 務(wù)的狀態(tài),但是這個實(shí)例在它的生存期中可能根本沒有處理過任何請求。(4) 服務(wù)結(jié)束 容器沒有被要求將一個加載的 servlet 保存多長時間,因此一個 servlet 實(shí)例可能只在容器中存活了幾毫秒,當(dāng)然也可能是其它更長的任意時間(但是肯定會短于容器的生存期)當(dāng)容器決定將之 移除時(原因可能是保存內(nèi)存資源或者自己被關(guān)閉),那么它必須允許 servlet 釋放它正在使用的任 何資源并保存任何永久狀態(tài)(這個過程通過調(diào)
30、用 destroy 方法達(dá)到)。容器在能夠調(diào)用 destroy 方法 前,它必須允許那些正在 service 方法中執(zhí)行的線程執(zhí)行完或者在服務(wù)器定義的一段時間內(nèi)執(zhí)行(這個時間段在容器調(diào)用 destroy 之前)。一旦 destroy 方法被調(diào)用,容器就不會再向該實(shí)例發(fā)送任 何請求。如果容器需要再使用該servlet,它必須創(chuàng)建新的實(shí)例。destroy 方法完成后,容器必須釋放servlet 實(shí)例以便它能夠被垃圾回收。本系統(tǒng)的 Servlet 運(yùn)行在 MapXtreme for java 服務(wù)器中 , 具體實(shí)現(xiàn)以下功能(1)連接地圖數(shù)據(jù)。(2) 生成相應(yīng)的地圖圖片。(3) 發(fā)送到客戶端。3.2.
31、3客戶端的分析設(shè)計本系統(tǒng)的主要功能是要在服務(wù)器端完成的??蛻舳酥饕谟谔峁┙o用戶一個操作界面, 而這一點(diǎn)是與移動設(shè)備的特點(diǎn)相關(guān)的,移動設(shè)備的處理能力、資源有限, 所以需要盡量將計算處理集中于服務(wù)器端完成,減小客戶端的負(fù)擔(dān)、提高效率。而要集中于服務(wù)器端完成的首要條件就是必須能與 服務(wù)器通信,J2ME 技術(shù)中 MIDP 網(wǎng)絡(luò)庫中是以 HTTP 作為網(wǎng)絡(luò)協(xié)議的,這使得 MIDP 設(shè)備實(shí)現(xiàn)網(wǎng) 絡(luò)接口變得非常簡單??蛻舳斯δ軐?shí)現(xiàn)具體分為以下幾個模塊:(1) 發(fā)送用戶選擇的城市、地點(diǎn)類型、輸入的地名信息等到服務(wù)器;(2) 接受服務(wù)器端返回的地圖數(shù)據(jù);(3) 選用合適的方法顯示地圖。3.2.4 地理信息服務(wù)
32、系統(tǒng)的難點(diǎn)和相應(yīng)策略(1) 手機(jī)存儲器和海量的數(shù)據(jù)之間的尖銳沖突。雖然現(xiàn)在很多手機(jī)都有了好幾個 G 的存儲容量,但是,我們必須要考慮到現(xiàn)在還是有很多的用 戶的手機(jī)沒有存儲卡的。為了克服這個限制,我們必須采用比較合理的數(shù)據(jù)結(jié)構(gòu),對數(shù)據(jù)進(jìn)行縱向 分層、橫向分塊、多次請求等策略,以減少一次請求傳到手機(jī)終端的數(shù)據(jù)量。(2) 手機(jī)處理器處理速度比較慢。相對于電腦來說,那手機(jī)的處理速度實(shí)在是沒法比擬的。所以在開發(fā)針對手機(jī)設(shè)備的GIS 應(yīng)用系統(tǒng)時數(shù)據(jù)的輸入、解讀、地圖的生成和顯示等都會比較慢,因而我們要盡可能地減少手機(jī)處理器 的負(fù)擔(dān),盡可能將大量的計算工作放在服務(wù)器端。(3) 連接無線網(wǎng)絡(luò)時延時比較大,網(wǎng)絡(luò)
33、傳輸速度比較慢。當(dāng)前 GSM 移動通信網(wǎng)的傳輸速度是每秒 9.6 千比特,GPRS 移動通信網(wǎng)的傳輸速度理論上可達(dá) 每秒 171.4千比特,實(shí)際上 GPRS 的數(shù)據(jù)傳輸速率每秒只有 20-30 左右。這時我們就必須盡可能的 減少客戶和服務(wù)器的交互,減少每一次傳輸?shù)绞謾C(jī)設(shè)備的數(shù)據(jù)量,并且充分利用客戶端已有的數(shù) 據(jù)。3)處理請ServletRequest 類service 方法的參數(shù)傳HttpServletRequest 和第四章系統(tǒng)的關(guān)鍵技術(shù)的實(shí)現(xiàn)4.1 用戶界面顯示用戶界面的顯示,借助菜單,按鈕等標(biāo)準(zhǔn)元素幫助用戶方便地對手機(jī)進(jìn)行操作,并將 結(jié)果以圖形的方式顯示給用戶。手機(jī)屬于 CLDC 規(guī)格,
34、而在 CLDC 中本事并沒有包含任何的用戶界面包,這些包被定義在 MIDP 中。在 MIDP 中,使用 java.microeditio n.lcdui 包來獲得界面對象。在java.microediti on .Icdui 包里面的界面對象是由及 Canvas 兩類,而 Screen 是高級屏幕對象,MSDP GUI 的核心是 Screen,而每個Display 對象,它管理這屏幕的顯示。當(dāng)調(diào)用Displayable 繼承而來的,其中有分為ScreenCa nvas 是低級屏幕對象。MIDP 的應(yīng)用程序(MIDIet )會于唯一的一個Display 對象的 setCurrent ()函數(shù)時候
35、,屏幕就被顯示。地圖的顯示,調(diào)用了MIDIet 中的 Display.getDisplay(this)方法和 Display 對象中的 setCurrent ( Display d )函數(shù)來顯示主界面對象。做移動 GIS 并使用 J2ME+MapxTreme 模式那么其中一個問題很讓人頭痛,那就是如何將 MapxTreme 渲染出來的 Image 返回給客戶端。J2ME 接收數(shù)據(jù)的時候是將 InputStream 轉(zhuǎn)換成 Byte 然后再進(jìn)行處理的??梢詫apXtremeRender 出來的圖片現(xiàn)保存到硬盤然后通過InputStream iStrm = new FileInputStream
36、(curpath+*.gif)。方法將其轉(zhuǎn)化為 InputStream 然 后再轉(zhuǎn)化為 Byte, imageData = baos.toByteArray()。,把得到的數(shù)據(jù)流轉(zhuǎn)化為 Byte,然后再 渲染出來。手機(jī)客戶端與后臺 MapXtreme 服務(wù)器通過網(wǎng)絡(luò)通信程序進(jìn)行數(shù)據(jù)傳輸。在J2ME 中有javax.micrioeditio n.io 包,在該包中提供了Conn ection 框架,由一組接口構(gòu)成,包括了Conn ection 接口及子接口。在CLDC 中定義了 7 個接口,其中包括 Co nten tCo nn ection,在MIDP 增加了一個 HttpConnection
37、 接口。Connector 類可以用來進(jìn)行網(wǎng)絡(luò)等各方面的輸入及 輸出,有用的都是Connector 的 open ()函數(shù)。同時用 HttpConnection 接口建立 HTTP 連接,實(shí)現(xiàn)網(wǎng)絡(luò)的連接。在 J2ME 中有 2 種實(shí)現(xiàn)線程的方法,可以是java.lang.Runnable 以及 java.lang.Thread 的方式,這里采用了后者,java.lang.Thread 類表示一個線程類,它定義了設(shè)置和查詢線程屬性的函數(shù)和啟動線程運(yùn)行的run ()函數(shù)。從服務(wù)器端獲得數(shù)據(jù)一般是先給定一個URL 地址以打開與服務(wù)器的連接,然后從中打開數(shù)據(jù)流,最后從中讀取數(shù)據(jù)。主要用到了Connec
38、tor 類和 HttpConnection 接口。在向服務(wù)器提交數(shù)據(jù)時有兩種方法:Get 和 Post。HttpConnection c = null ;System.out.print(url)。Stri ngBuffer strbuf = new Stri ngBuffer()。ByteArrayOutputStream baos = new ByteArrayOutputStream()。/保存讀入的圖片數(shù)據(jù) Data InputStream dis = null。byte imageData = null。try/打開對象 c = (HttpConnection)Connector.o
39、pen(url)。/System.out.println(url)。/客戶端名稱c.setRequestProperty(User-Age nt, Profile/MIDP-2.0)。/可以接受的 MIME 類型c.setRequestProperty(Accept, text/html,*/*)。int len = (int)c.getLength()。dis = c.openDatalnputStream()。打開輸入流System.out.println(len)。/如果取得了長度則讀入全部的數(shù)據(jù)if(le n0)byte data = new bytelen。dis.readFully
40、(data)。for(int i = 0。idata.length。i+)/strbuf.append(char)datai)。baos.write(datai)。else /否則逐個逐個字節(jié)讀入int ch。while(ch=dis.read()!=-1)/strbuf.append(char)ch)。baos.write(ch)。catch(Excepti on e)System.out.println(Error3+e)。finally/把不要用到的變量置空msg.setText(strbuf.toString()。strbuf = null。if(dis!=null)dis.close
41、()。if(c!=null)c.close()。f.setTitle(null)。imageData = baos.toByteArray()。將 Image 轉(zhuǎn)化為 Byte 類型try/使用 createImage 方法創(chuàng)建 Image,數(shù)據(jù)信息已經(jīng)在imageData 數(shù)組中image = image.createImage(imageData,0,imageData.length)。if(image =null)/ 如果 image 為 null 提示出錯了Alert alert=new Alert(ERROR,NOT FOUND, null, null) 。alert.setTime
42、out(2000)。alert.setType(AlertType.ERROR)。catch(NullPoi nterException e)System.out.pri ntln (NullPoi nterExceptio n)。/f.append(image)。xianshi()。渲染地圖下面圖 4-1 為渲染地圖的結(jié)果。圖 4-1 地圖渲染4.2 服務(wù)器端的功能實(shí)現(xiàn)服務(wù)器端可以具體分為:連接地圖數(shù)據(jù)、接受客戶端的請求、生成地圖圖片數(shù)據(jù)、發(fā) 送數(shù)據(jù)等幾個核心的流程。4.2.1 地圖數(shù)據(jù)連接使用 MapXtreme for java 中的特有類 MapJ,可以裝載 gst 格式的文件,該文件
43、可以 通過 MapDefinition Manager 裝載 tab 文件來進(jìn)行生成,這是 MapJ 可以裝載的一種圖 形定義格式,然后可以進(jìn)行比例尺以及圖形尺寸和相關(guān)特征的加載。if (m_fileToLoad.e ndsWith(.gst)myMap.loadGeoset(m_fileToLoad, m_mapPath, null)。else myMap .lo adMapDefi niti on( m_fileToLoad)。然后對地圖進(jìn)行渲染。II為 MapJ 建立 renderer 來渲染地圖try MapXtremelmageRe nderer rr = new MapXtreme
44、lmageRe nderer(m_mxtURL)。II 按照參數(shù)繪制地圖rr.render(lmageRequestComposer.create(myMap,NUM_OF_COLORS,BACKGROUND_COLOR, image/gif) 。以數(shù)據(jù)流的格式輸出到客戶端rr.toStream(res.getOutputStream()。4.2.2 實(shí)現(xiàn)地圖縮放主要對地圖實(shí)現(xiàn)放大、縮小等操作。此項功能得到最終的放大(縮小)的圖片,并把 下載路徑傳回客戶端。這個功能與目前許多地理信息網(wǎng)站提供的功能相似,而網(wǎng)站上直接 由鼠標(biāo)點(diǎn)選放大縮小地址的設(shè)計給了我們啟發(fā), 手機(jī)端雖然沒有鼠標(biāo), 但我們設(shè)法結(jié)
45、合使 用方向鍵的功能設(shè)計出了自己的“鼠標(biāo)”,也就是用戶可以點(diǎn)擊右邊的軟鍵,然后選取操 作菜單中的zoomln”或“ zoomOut”即可達(dá)到放大縮小的功能。如圖 4-2 所示。int tool = NO_TOOL。II放大,縮小,平移或是查詢/監(jiān)聽是否要用到工具if (reqParam = req.getParameter(tool)!=n ull) tool = Integer.valueOf(reqParam).intValue()。/得到前面地圖的中心坐標(biāo)DoublePoint newpoint = myMap.getCenter()。/取得放大比例double newZoom = my
46、Map.getZoom()。if (tool = ZOOMN _TOOL) newZoom /= 2.0。else if (tool = ZOOM_OUT_TOOL) newZoom *= 2.0。圖 4-2 地圖縮放4.2.3 空間查詢查詢是根據(jù)用戶輸入條件,查找到相關(guān)信息并在地圖上顯示對應(yīng)的圖形和屬性數(shù)據(jù)。接收到客戶端的地點(diǎn)查詢時在地圖數(shù)據(jù)某個圖層上找到相應(yīng)點(diǎn)的坐標(biāo),關(guān)于這一點(diǎn)可以通 過對圖層中的列信息中的特征項和所查找的名稱相匹配的手段來實(shí)現(xiàn)。/調(diào)用 removeTheme 方法來移除取消前面的地圖特征主題MapperServlet.removeTheme(myMap)。下面來處理查詢,
47、并高亮顯示查找到的那個點(diǎn)/Feature 對象的集合,構(gòu)成地圖的各個圖層通常在每個圖層中都擁有相同的圖元類型FeatureSet featureset = n ull。Feature feature = null。/ Feature 對象/Attribute attribute = new Attribute(La nZhou)。ArrayList a = new ArrayList()。/ QueryParams qp = new QueryParams(bGeometry,bRe nditi on ,bPrimarykey,/bLabelPoint,bRasterInfo,bLabelRe
48、ndition, SearchType.entire)。限制某個圖元返回的信息/QueryParams 類還可以指定搜索類型,SearchType.partial :查詢返回與搜索區(qū)域交叉的圖丿元。QueryParams queryParams = new QueryParams(true, true, false, true, true, true, SearchType.partial)。/layer 得到特征圖層的信息FeatureLayer layer = (FeatureLayer) myMap.getLayers().get(Asia Major Cities)。int colCo
49、unt = layer.getTableInfo().getColumnCount()。特征圖層的所有列數(shù)String coiname。歹 U 名if (layer != null) for(int i=0。i-1)sb.append(newZoom)。/找到的圖元的坐標(biāo)screenpoint = feature.getGeometry().getBounds().center()。newpoint = screenpoint。sb.append(”newpoint:+newpoint)。/咼亮顯示Select ion Theme selTheme = new Selectio nTheme(
50、LocateFeature)。創(chuàng)建一個 SelectionTheme/創(chuàng)建 Selection 對象,并且把選擇的圖元加入Selection sel = new Selection()。sel.add(feature)。/把 Selection 對象加入到 SelectionThemeselTheme.setSelecti on( sel)。/設(shè)置 SelectionTheme 的顯示渲染的樣式 com.map in fo.graphics.Re nditi onrend =com.map in fo.graphics.Re nditi onl mpl .getDefaultRendition
51、()。/填充顏色,字體大小,框格的背景色ren d.setValue(com.mapi nfo.graphics.Re nditio n. FILL, Color.YELLOW)。ren d.setValue(com.mapi nfo.graphics.Re nditio n.SYMBOL_FOREGROUND,Color.YELLOW)。ren d.setValue(com.mapi nfo.graphics.Re nditio n.FONT_FAMIL Y,MapInfo Symbols)。ren d.setValue(com.map in fo.graphics.Re nditio n.
52、FONT_SIZE, new Float(30)。ren d.setValue(com.mapi nfo.graphics.Re nditio n.STROKE, Color.YELLOW)。ren d.setValue(com.mapi nfo.graphics.Re nditio n.STROKE_WIDTH, 3)。char c = new char1。c0 = (char) 36。ren d.setValue(com.mapi nfo.graphics.Re nditio n.SYMBOL_STRING ,new String(c)。selTheme.setRendition(rend
53、)。layer.setSelectable(true)。/添加 SelectionTheme 到指定的 layer 的 theme 列表中去 layer.getThemeList().add(selTheme)。break。下圖為輸入 Wuhan 并查找到,以黃色來顯示。圖 4-3 地點(diǎn)查詢這項功能后期擴(kuò)展后還可以根據(jù)用戶輸入的查詢地址提供該地址周邊的各類環(huán)境信 息,包括商店、交通、餐飲等等,直接面向真正的商業(yè)應(yīng)用。還可以提供放大的詳細(xì)的圖 片信息,使用戶獲得的單次服務(wù)更加超值,提升本系統(tǒng)的市場競爭力。這一功能的實(shí)現(xiàn)原理是服務(wù)器端對于用戶的首次查詢有一張基礎(chǔ)地圖,用戶所輸入的 坐標(biāo)值正是在這一
54、基礎(chǔ)圖上查詢的,而服務(wù)期端則根據(jù)用戶坐標(biāo)和基礎(chǔ)圖兩個參數(shù)搜索出 相應(yīng)的符合要求的圖片,并返回客戶端相關(guān)信息。后期還可以擴(kuò)展查找最短路徑的功能。在人們出行的時候,可能不熟悉那個地方,那 么有了這項功能,那他就可以隨時隨地查找路線圖,非常方便快捷。第五章 結(jié)論地理信息系統(tǒng)的應(yīng)用范圍已經(jīng)越來越廣泛 ,但目前在小型移動設(shè)備上進(jìn)行圖形化查詢 和應(yīng)用地理信息還不是非常普遍 , 本文嘗試?yán)?J2ME 與MapXtreme for Java 相結(jié)合構(gòu)造 了一個地圖的查詢和顯示系統(tǒng) , 該系統(tǒng)可以極大的方便移動地理信息的查詢和相關(guān)應(yīng)用 隨 著 J2ME 支 持 設(shè) 備 的 不 斷 增 加 , 相 信 能 得 到 進(jìn) 一 步 的 應(yīng) 用 。參考文獻(xiàn)1 孫燕剛,基于 MapXtreme for Java 定制 JSP 標(biāo)志的 WebGIS 研究,地理空間信息,2007 ; 05: 152 卜建明,基于 MapObjects 的上海市地理信息查詢系統(tǒng),計算機(jī)工程,2006; 13:2693 王婷,基于 MapXtreme 的城市報警監(jiān)控系統(tǒng)的實(shí)現(xiàn),微計算機(jī)信息,2008; 07:1404 李小根,MapXtreme 的基本構(gòu)架及其應(yīng)用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年籃球裁判員對賽事的主觀影響試題及答案
- 家族企業(yè)股份贈與合同(2篇)
- 2024年國際體育經(jīng)紀(jì)人合作模式試題及答案
- 農(nóng)作物繁育員考試技巧試題及答案
- 游泳救生員考試復(fù)習(xí)的試題及答案
- 足球裁判員理論知識測試與試題及答案
- 成功案例游泳救生員考試試題及答案
- 2024年足球裁判員考試有效復(fù)習(xí)方案及試題與答案
- 2025年中國不銹鋼雙耳油格市場調(diào)查研究報告
- 解答所有疑惑的裁判員考試試題及答案
- 水塘排水、清淤質(zhì)量檢驗記錄表
- 上海龍之夢麗晶大酒店客房預(yù)訂單
- 加強(qiáng)施工管理、嚴(yán)格保護(hù)環(huán)境
- 水污染控制工程課程設(shè)計說明書
- 抗拔樁裂縫計算表格(自動版)
- 血透室傳染病登記本
- 婦產(chǎn)科學(xué)孕期B族鏈球菌感染課件
- 建筑工程施工質(zhì)量控制要點(diǎn)ppt課件
- 《藥疹(Drug Eruption)》PPT課件
- 評茶員(高級)鑒定理論試題
- 第十套廣播體操詳解
評論
0/150
提交評論