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