WebGIS概述
所謂 WebGIS,通俗 的來(lái)說(shuō) ,就是地 理信息系統(tǒng)同互聯(lián) 網(wǎng)絡(luò)的結(jié)合。通過(guò) Internet技術(shù) ,可以在 Web上實(shí)現(xiàn)空間數(shù)據(jù)的分享 ,讓用戶能夠?qū)@些空間數(shù)據(jù)進(jìn)行瀏覽 以及使用等。在 WebGIS中,通過(guò) WW1N的某個(gè)節(jié)點(diǎn) ,互聯(lián)網(wǎng)用戶就可以對(duì) WebGIS站點(diǎn)中的各種空間數(shù)據(jù)進(jìn)行訪問(wèn) ,還可以進(jìn)行專題圖制作 ,進(jìn)行空間檢索 以及空 間分析等活動(dòng)。綜上所述 ,WebGIS就是由主機(jī) 、數(shù)據(jù)庫(kù) 、終端組成的,通過(guò) Intenet/In—tranet形成 的網(wǎng)絡(luò)信息系統(tǒng)。在 WebGIS中 ,GIS功能層以及數(shù)據(jù)管理層為網(wǎng)絡(luò) Client端 ,通過(guò) Client端來(lái)獲取和應(yīng)用各種信息 ;此外 ,網(wǎng)絡(luò) Server端就是信息數(shù)據(jù)維護(hù)層 ,主要進(jìn)行信息數(shù)據(jù)的提供 以及進(jìn)行系統(tǒng)服務(wù)等。因此 ,WebGIS系統(tǒng)從結(jié)構(gòu)上 主要分為 4個(gè)部分 :用來(lái)顯示空間數(shù)據(jù)信息以及進(jìn)行 Client端在線處理的 WebGIS涮覽器 ;用來(lái)均衡 網(wǎng)絡(luò)負(fù)載 ,促進(jìn)空間信息更加網(wǎng)絡(luò)化的 WebG1S信息代理 ;還有用來(lái)對(duì)客戶端查詢請(qǐng)求以及空間分析請(qǐng)求進(jìn)行處理的 We—bGIS服務(wù)器 ;最后是 WebGIS編輯器 ,主要是進(jìn)行空間數(shù)據(jù)處理等工作。
WebGIS項(xiàng)目的開發(fā)主要是B/S架構(gòu)。最流行的是客戶端javascript,服務(wù)器端java。 另外還有flex客戶端。
客戶端主要完成用戶交互、向服務(wù)器端發(fā)送請(qǐng)求并傳參以及組織顯示服務(wù)器端返回的結(jié)果等。 服務(wù)器端則完成數(shù)據(jù)庫(kù)增刪查改、業(yè)務(wù)功能等。
服務(wù)器端最底層是數(shù)據(jù)層,完成對(duì)數(shù)據(jù)的增刪查改。常用的數(shù)據(jù)庫(kù)有oracle、mysql等。最基本的方法是, java語(yǔ)言使用jdbc,組織相應(yīng)的sql語(yǔ)句實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作。 更便捷的方法是使用第三方框架,如hibernate。 hibernate實(shí)現(xiàn)了數(shù)據(jù)庫(kù)表與java類對(duì)象的映射orm,利用hql語(yǔ)句方便的進(jìn)行數(shù)據(jù)庫(kù)操作。
數(shù)據(jù)層上面是邏輯事務(wù)層。邏輯事務(wù)層對(duì)應(yīng)著各個(gè)功能模塊,功能模塊實(shí)現(xiàn)特定的功能,功能模塊的底層一般包含對(duì)數(shù)據(jù)庫(kù)DAO類的調(diào)用。這一層中包含接受客戶端請(qǐng)求的特殊類,如servlet類、action類等。 可用的框架有spring、structs2等。
客戶端是由界面和腳本(響應(yīng)函數(shù))構(gòu)成的。 html+javascript的組合: 界面是由div等標(biāo)簽+css樣式組合渲染而成;腳本則完成界面初始化、單擊、跳轉(zhuǎn)等事件的響應(yīng)。
客戶端最重要的一個(gè)工作就是向服務(wù)器端發(fā)送請(qǐng)求并獲取響應(yīng)結(jié)果。 這里不得不提到AJAX。 不同的js框架都提供了自己的AJAX實(shí)現(xiàn)。 dojo提供了xhrPost、xhrGet等實(shí)現(xiàn)提交請(qǐng)求、傳遞參數(shù)、獲取響應(yīng)結(jié)果并進(jìn)行相應(yīng)的處理。
客戶端也可以通過(guò)調(diào)用webservice的方式來(lái)獲取需要的結(jié)果。
WebG1S實(shí)現(xiàn)技術(shù)分析
隨著 WebGIS的發(fā)展 ,當(dāng)下常用的 WebGIS實(shí)現(xiàn)技術(shù)有 :公共網(wǎng)關(guān)接 口,也就是 CGI;服務(wù)器應(yīng)用程序接 口,通常所說(shuō) 的 ServerAPI;動(dòng)態(tài)服務(wù) 器端頁(yè) 面(ActiveServerPage)以及插件 法(Plugins)、客戶端控件(AetiveXContro1)和 Java技術(shù)等。下 面分別進(jìn)行介紹和分析。
CGl技 術(shù)
公共 網(wǎng)關(guān)接 口(CommonGateInterface)也就是說(shuō)的 CGI,是一種 WWW服務(wù)器主機(jī)進(jìn)行各種對(duì)外服務(wù)的一個(gè)標(biāo)準(zhǔn)接 口。CGI技術(shù)是一種最早用來(lái)進(jìn)行 Web動(dòng)態(tài)性 以及交互性增強(qiáng)的技術(shù)方法 ,進(jìn)行 Web互動(dòng)時(shí) ,遠(yuǎn)程客戶端通過(guò)瀏覽器來(lái)進(jìn)行數(shù)據(jù)操作請(qǐng)求 ,然后服務(wù)器對(duì)數(shù)據(jù)請(qǐng)求進(jìn)行理解 ,通過(guò)后臺(tái) CGI程序?qū)?shù)據(jù)進(jìn)行處理 ,最后將處理結(jié)果反饋給遠(yuǎn)程用戶。利用 CGI技術(shù)來(lái)進(jìn)行 WebServer擴(kuò)充 ,操作起來(lái)更加簡(jiǎn)單 ,對(duì)程序的調(diào)用 只需要通過(guò)某個(gè)簡(jiǎn)單的命令參數(shù)就可 以進(jìn)行 ,其次 ,CGI程序也能夠進(jìn)行獨(dú)立運(yùn)行 ,更容易進(jìn)行調(diào)試 。同時(shí) ,網(wǎng)絡(luò) Server在 CGI訪問(wèn)控制方面比較嚴(yán)格 ,也很好的保證 了系統(tǒng)的安全性。最后 ,以 CGI技術(shù)為規(guī)范的應(yīng)用程序可 以在 WebServer上進(jìn)行移植 ,為計(jì)算機(jī)平 臺(tái)的數(shù)據(jù)操作提供 了很大的便利。但是 ,CGI技術(shù)模式的 WebGIS也存在一定 的缺陷。
?。?)性能方面。
應(yīng)用 CGI技術(shù)時(shí) ,面對(duì)大負(fù)荷的請(qǐng)求環(huán)境 ,CGI往往會(huì)出現(xiàn)性能不佳的問(wèn)題。在 CGI技術(shù)環(huán)境下 ,面對(duì)一個(gè)新請(qǐng)求 ,Server都會(huì)對(duì)該請(qǐng)求進(jìn)行新進(jìn)程的構(gòu)建 。這些新程序構(gòu)建所造成的負(fù)荷給 Server的運(yùn)行造成了很大的負(fù)擔(dān)。
(2)運(yùn)行狀態(tài) 。
在 WebGIS應(yīng)用 中,不同的 CGI程序?qū)?shù)據(jù)的共享不能夠 自然區(qū)別開來(lái) ,因此 ,每個(gè)程序進(jìn)程都是相對(duì)獨(dú)立的 ,也不能利用內(nèi)部存儲(chǔ)變量等方法來(lái)進(jìn)行信息傳遞。采用外部存儲(chǔ)技術(shù)來(lái)進(jìn)行信息傳遞,嚴(yán)重影響了webCCI的運(yùn)行狀態(tài)。
?。?)網(wǎng)絡(luò)傳輸負(fù)荷大。
在 CGI技術(shù)應(yīng)用 中,服務(wù)器端以及客戶端傳輸?shù)目臻g數(shù)據(jù)信息都是 JPEG以及 CIF格式的圖像 ,直接影響了對(duì)空間數(shù)據(jù)進(jìn)行可視化操作 以及分析??蛻舳诉M(jìn)行空 間數(shù)據(jù)傳輸時(shí) ,多次數(shù)據(jù)傳輸之間不能形成必要的聯(lián)系 ,直接造成網(wǎng)絡(luò)傳輸負(fù)荷增大。
ServerAPI技術(shù)
相對(duì) 于 CGI技術(shù) 來(lái) 說(shuō) ,ServerAPI對(duì) WebServer的擴(kuò)充更為有效。在 ServerAPI環(huán)境下 ,原來(lái) 的 CGI程序被應(yīng)用函數(shù)所替代 ,例如微軟 的 ISAPI。應(yīng)用 函數(shù)屬于共享庫(kù) 的一部分 ,共享對(duì)象 只進(jìn)行一次加載 ,在加載完成之后 ,加載 內(nèi)容在 Server中占用一段地址空間 ,當(dāng)該加載項(xiàng)再次進(jìn)行請(qǐng)求 時(shí) ,就只需要進(jìn)行一次函數(shù)調(diào)用就可以了。因此 ,相對(duì)于 CGI技術(shù)來(lái)說(shuō) ,ServerAPI對(duì)進(jìn)程的擴(kuò) 充 ,大大減少 了程序創(chuàng)建所造成 的通信負(fù)載 ,因此 ,具有更快 的運(yùn)行速度 。但是 ,ServerAPI技術(shù)環(huán)境下 ,客戶端不能很好 的進(jìn)行數(shù)據(jù)管理 ,因此 ,在 WebCGI技 術(shù)解決方面 ,ServerAPI技術(shù)同樣存在網(wǎng)絡(luò)傳輸負(fù)荷大的缺陷。
ASP技術(shù)
ActiveServerPage技術(shù)是微 軟開發(fā) 的一套 服務(wù)器端腳本環(huán)境 ,利用 ASP技術(shù) ,能夠?qū)?HTML網(wǎng)頁(yè) 、ASP指令以及 ActiveX控件等結(jié)合起來(lái) ,創(chuàng)建一個(gè)動(dòng)態(tài) 、交互 以及高效的應(yīng)用程序。在該 Web服務(wù)器應(yīng)用程序中,服務(wù)器端用來(lái)進(jìn)行 ASP文件存儲(chǔ) ,客戶端對(duì)ASP文件發(fā)送請(qǐng)求時(shí) ,服務(wù)器端對(duì) ASP文件進(jìn)行解釋,然后形成 HTML網(wǎng)頁(yè) ,反饋和傳遞給客戶端。相對(duì) 于 CGI技術(shù)來(lái)說(shuō) ,ASP技術(shù) 在接 口對(duì)象化方 面進(jìn)行 了有效的改善 ,對(duì)收集 的各種數(shù)據(jù)進(jìn)行 自動(dòng)分析 ,起到了很好 的數(shù)據(jù)處理效果。最后 ,ASP技術(shù)存在同CCI以及 ServerAPI技術(shù)一樣 的缺陷,沒有對(duì)網(wǎng)絡(luò)傳輸 負(fù)荷問(wèn)題進(jìn)行有效 的解決 ,進(jìn)行 WebGIS網(wǎng)絡(luò)傳輸時(shí) ,同樣承擔(dān)著很大的壓力
Plug—in以及 ActiveXControl技 術(shù)
Plu in和 ActiveXControl就是通 常所說(shuō) 的插件和控件 ,利用 Plug—in以及 ActiveXControl技術(shù) ,能夠?qū)g覽器的功能進(jìn)行擴(kuò)充 ,從而對(duì)一些 自定義 的GIS數(shù)據(jù)文件格式進(jìn)行分析和解釋。例如 Plug—in技術(shù) ,在瀏覽器啟動(dòng)的過(guò)程中 ,可以 自動(dòng)對(duì) Plu in動(dòng)態(tài)鏈接庫(kù)進(jìn)行裝載 ,當(dāng)瀏覽器訪問(wèn)頁(yè)面 中嵌入某種格式元素 ,瀏覽器就能夠在插件鏈接庫(kù)中尋找匹配的插件 ,進(jìn)而對(duì)格式元素進(jìn)行分析 和解釋。因此 ,插件技術(shù)利用本地代碼來(lái)進(jìn)行數(shù)據(jù)執(zhí)行 ,運(yùn)行速度快 ,在瀏覽器處理功能方面,插件和空間技術(shù)也能夠很好的進(jìn)行矢量地圖數(shù)據(jù)處理。同時(shí) ,插件和空間技術(shù)在一定程度上開始具備客戶端邏輯 ,這樣就可以實(shí)現(xiàn)客戶 同服務(wù)器之間的負(fù)載平衡 ,減少了網(wǎng)絡(luò)帶寬壓力 。但是對(duì)于用戶來(lái)說(shuō) ,需要在本地機(jī)器上安裝瀏覽器嵌人功能模塊 ,這就造成很大的不便 ,同時(shí)也不夠安全。
Java語(yǔ)言
Java技術(shù)誕生于 1994年 ,Java語(yǔ)言 自從推 出以來(lái) ,就得到廣泛推廣 。Java語(yǔ)言應(yīng)用簡(jiǎn)單 、操作性 、動(dòng)態(tài)性好 ,安全性高 ,也能夠進(jìn)行移植 。是一種跨平臺(tái)、適合分布式計(jì)算機(jī)的編程語(yǔ)言 。Java語(yǔ)言對(duì)網(wǎng)絡(luò)平臺(tái)上的各種資源都具有較高 的兼容性 ,因此 ,Java語(yǔ)言對(duì)互聯(lián)網(wǎng)以及分布式語(yǔ)言環(huán)境十分適應(yīng)。在用戶端上下載 Java程序 ,就可 以在服務(wù)器上運(yùn)行各種操作 ,因此 ,到 目前為止 ,Java語(yǔ)言是實(shí)現(xiàn) webGIS技術(shù)開發(fā)和應(yīng)用的最理想的技術(shù)。Java語(yǔ)言在 WebGIS中的開發(fā)和實(shí)現(xiàn)主要分 2種 。
?。?)僅僅客戶端采用 Java技術(shù)的 WebGIS系統(tǒng)。
當(dāng)只有客戶端采用 Java技術(shù)時(shí) ,服務(wù)器端 以現(xiàn)有系統(tǒng)代碼為基礎(chǔ) ,通過(guò) CGI數(shù)據(jù)傳輸協(xié)議來(lái)實(shí)現(xiàn)Java程序交互功能。在這種情況下 ,系統(tǒng)開發(fā)就相當(dāng)簡(jiǎn)單了 ,系統(tǒng)和程序的開發(fā)時(shí)間被大大縮短 ,也能夠保證系統(tǒng)的功能功能 ,滿足制圖以及地理空間分析等工作 的需要 ,同時(shí)也能夠?qū)崿F(xiàn)一定程度上的跨平 臺(tái)服務(wù) 。
?。?)客戶端 以及服務(wù)器均采用 Java技術(shù) 的 We—bGIS系統(tǒng)
在這種模式下 ,Java語(yǔ)言技術(shù)的優(yōu)勢(shì)能夠最大限度的發(fā)揮出來(lái) ,借助 Java技術(shù)為客戶端 以及服務(wù)器端之間建立服務(wù) 網(wǎng)絡(luò)提供技術(shù)支持這一優(yōu)勢(shì) ,可 以很好的實(shí)現(xiàn) WebGIS系統(tǒng)開發(fā) 。但是 ,值得注意的是 ,目前 大量 的系統(tǒng)都 是基 于 c/c++的 GIS系統(tǒng) ,因此 ,需要對(duì)這些 系統(tǒng)都開發(fā)相應(yīng) 的 Java版本 ,這些直接造成 了系統(tǒng)開發(fā)的難度 。同時(shí) ,進(jìn)行 Java技術(shù)系統(tǒng)開發(fā)時(shí) ,程序 的執(zhí)行速度慢也是一個(gè)難題 ,為了解決這一問(wèn)題 ,一些軟件公 司通過(guò)編譯器來(lái)進(jìn)行解決 ,在Java程序執(zhí)行前對(duì)字節(jié)碼進(jìn)行 翻譯 ,然后借助 CPU進(jìn)行運(yùn)行 ,極大 的提高了 Java技術(shù) 的程序執(zhí)行速度 。因此 ,相對(duì)于傳統(tǒng) c/c++程序 ,Java在開發(fā)時(shí)間上大大縮短 了,應(yīng)用性能大大提高 ,文件執(zhí)行過(guò)程 中占用的系統(tǒng)資源也 比較少 。同時(shí) ,Java技術(shù)具有很好的跨平臺(tái)優(yōu)勢(shì) ,在技術(shù)支持以及執(zhí)行速度等方面 同樣具有很好 的優(yōu)勢(shì)。利用 Java技術(shù)進(jìn)行 WebGIS開發(fā)可 以兼容各種資源 ,很好的促進(jìn)瀏覽器 的運(yùn)行 ,進(jìn)行各種空間數(shù)據(jù)操作等 ,對(duì)于 WebGIS技術(shù)的發(fā)展 ,作用是十分重要 的
通過(guò)對(duì)各種 WebGIS開發(fā)技術(shù) 的介紹 ,分析 了CGI、ServerAPI、ASP等技術(shù)的優(yōu)缺點(diǎn) ,最終得出利 用Java技術(shù)進(jìn)行 WebGIS系統(tǒng)開發(fā)和應(yīng)用 ,是一個(gè)很好的選擇 ,通過(guò) Java技術(shù)為 WebGIS系統(tǒng)開發(fā)和發(fā)展提供有效 的的技術(shù)支持 ,為用戶對(duì)系統(tǒng)使用提供便利 ,促進(jìn)地理信息系統(tǒng)的發(fā)展 ,同時(shí)也可 以實(shí)現(xiàn) WebGIS朝著大眾化 ,社會(huì)化的方向發(fā)展。
評(píng)論