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