轉帖|其它|編輯:郝浩|2010-08-23 10:45:55.000|閱讀 1123 次
概述:“數字地球”概念被人們所廣泛接受與響應,從而使因特網環境下的空間信息處理技術也愈來愈受到重視.“數字地球”說穿了就是高速因特網+空間數據基礎設施+GIS+RS+GPS+各行各業的應用.筆者所在的中國測繪科學研究院政府地理信息系統工程中心在為政府首腦服務的“9202工程”中,也開展了因特網GIS的研究.本文旨在闡述WebGISJAVA小應用程序的工作原理,以及研究中所采用的設計思想、技術路線、試驗結果及一些經驗與思考,以期對同行有所借鑒.
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
引 言
隨著電信網、有線電視網、因特網三網融合步伐的加快和第二代因特網技術的日趨成熟,因特網速度正穩步而飛速地提高,可以預見,因特網的觸手將無所不在.由此可見,因特網正在成為信息化社會人們進行聯系、交流、獲取信息的的重要工具.另外,更由于美國副總統戈爾所倡導的“數字地球”概念被人們所廣泛接受與響應,從而使因特網環境下的空間信息處理技術也愈來愈受到重視.“數字地球”說穿了就是高速因特網+空間數據基礎設施+GIS+RS+GPS+各行各業的應用.因特網上的GIS,也稱WebGIS,是“數字地球”的支撐技術之一,目前正在成為各國爭奪的一個制高點.美國ESRI公司、MapInfo公司、AutoDesk公司等GIS軟件廠商都正在競相研制WebGIS產品.國內主要的GIS軟件廠家也都在積極研究WebGIS產品,以迎接“數字地球”的挑戰.武漢測繪科技大學龔健雅、袁湘儒、韓海洋等人用JAVA語言實現了“吉奧之星”的Web版本,并對其技術路線、實現方法進行了介紹。北京大學李琦、楊超偉、王京傲等人對WebGIS的體系結構策略也進行了討論,并基于AutoDesk公司的MapGuide實現了一個WebGIS系統.筆者所在的中國測繪科學研究院政府地理信息系統工程中心在為政府首腦服務的“9202工程”中,也開展了因特網GIS的研究.本文旨在闡述WebGISJAVA小應用程序的工作原理,以及研究中所采用的設計思想、技術路線、試驗結果及一些經驗與思考,以期對同行有所借鑒.
1 WebGIS小應用程序的工作模式
在因特網上,用戶只需用一個瀏覽器(Browser),如Netscape公司的Navigator或Microsoft公司的I.E.,鍵入網址,就能打開連在因特網服務器上的網頁(Homepage),網頁是用HTML語言(HyperTextMarketLanguage超文本標識語言)編寫,而用JAVA語言編寫的小應用程序(Applet)則可以嵌入到網頁中.由于這些小應用程序可以完成GIS所需的各種交互式圖形與數據庫操作,因而,當用戶用瀏覽器打開WebGIS服務器上的網頁時,嵌在網頁中的小應用程序就被瀏覽器裝入瀏覽器所在的用戶計算機的內存中,并自動啟動,通過讀取網頁所在服務器站點上的空間數據與屬性數據,就可在用戶端的計算機屏幕上顯示電子地圖,并響應用戶的放大、漫游、查詢、空間量算等指令,以進行各種GIS操作.因特網GIS小應用程序工作模式與傳統GIS程序的工作模式相比,其最大特點就是在最終用戶手里沒有它所要操作的GIS程序及數據,而這些程序及數據均放在WebGIS服務器一端.網上最終用戶手里只有,也只需要有一個通用的瀏覽器就可以工作.JAVA小應用程序(Applet)之所以稱之為小應用程序,是因為它的工作方式是嵌入在網頁中,并由瀏覽器啟動運行;與JAVA小應用程序相對應的是JAVA應用程序(Application),但它不是嵌在網頁中,由JAVA驅動器直接啟動,而是由JAVA虛擬機直接啟動.JAVA小應用程序與JAVA應用程序相比,它有很多安全性方面的限制,例如它不能讀取JAVA小應用程序所在目錄(及其子目錄)以外的任何目錄下的數據,也不能在客戶端進行任何讀寫操作,這些限制雖然制約了小應用程序的一些功能,但它保證了小應用程序不會對網絡和客戶端產生破壞行為.而JAVA應用程序則沒有小應用程序在安全性上的諸多限制,它可以登錄到別的目錄和別的服務器上進行讀寫操作,因此在“瀏覽器/小應用程序/應用服務程序”的“三層架構”中,可用它作為應用服務程序.因特網上的GIS小應用程序和GIS應用服務程序及數據,都是放在因特網的Web服務器上,因此人們也常將因特網GIS稱之為WebGIS.
2 界面及主要功能“地學之窗”
界面的頂部為菜單條;左半部為地圖主窗口;右上部為索引圖,也稱鷹眼圖窗口,它在信息查詢時,用于顯示空間要素的文本、圖片等多媒體信息(如圖2右上部窗口所示).右下部窗口用于顯示控制設置(如圖1右下部窗口所示)和信息查詢時屬性數據庫顯示(如圖2右下部窗口所示).“地學之窗”Web1.0具有如下功能:
(1)圖幅選擇 可通過菜單選擇,也可用鼠標在圖上點取次一級的行政區劃,例如在全國圖上選省,在省圖上選地區,但用戶選擇新的圖幅后,需要重新裝入新圖幅的空間數據;
(2)地圖放大、縮小、漫游功能;
(3)顯示設置 即設置各邏輯層的顯示與否,以及設置放大到多大的倍率時才顯示(見圖1右下角);
(4)信息查詢 查詢與某層空間要素對應的屬性數據庫(見圖2右下角)或文檔圖片等多媒體信息.
(5)空間量算 可以用鼠標在圖上量算距離和面積.
2.1 數據組織方式
“地學之窗”Web1.0的數據組織方式與“地學之窗”VisualC++版的數據組織方式及格式基本一致.若以圖幅為單元,其圖形數據格式完全一致,均采用內部二進制文件,但在系統控制和屬性數據庫方面略有區別,而是采用Fox2.x格式的dbf庫管理.其空間幾何元素由面狀、線狀和點狀要素組成,簡稱為面、線、點、注記,每一個空間幾何要素都有一個層號(LayerNo).經過預處理之后,面、線、點數據存放在內存數組中;屬性數據庫存放在dbf文件中,當用戶確定了查詢哪一層的信息后,才從WebGIS服務器讀取所對應的屬性數據庫.
2.2 數據調度策略
指令,調入相應圖幅的數據.當調入一個圖幅的數據時,空間數據和注記數據將一次性調入.這樣,裝載一幅圖需要花費一定的初始化時間,但數據一旦裝入,圖形的放大、縮小、漫游就都在用戶端進行,因而使系統的響應速度得以提高,但各層所掛的屬性數據庫是在用戶確定對哪層進行信息查詢后,再調入相應層的屬性數據庫,各空間要素所掛的文本、圖片等多媒體信息是在用戶查到該空間要素后才調入.
2.3 顯示控制機制
從GIS專業人員的角度來看,地圖數據分為面、線、點、注記進行采集、管理是合理的,而傳統的GIS產品的顯示也確實是按面、線、點、注記,并分層控制的.但從非GIS專業用戶的角度來看,就太煩瑣、太復雜了.例如,用戶常常搞不清二級河流是面狀的,還是線狀的.因此,從用戶的角度考慮,不應將圖面上的元素分為面、線、點和注記.例如用戶只需關心一級或二級河流這樣的邏輯概念,要顯示一級河流,不管是面狀、線狀的一級河流以及注記都應顯示出來,要關閉也同時關閉,而不應讓用戶再去分別設置一級河流的面要素、線要素、注記是否顯示,以及顯示比率等等.基于這樣的認識,“地學之窗”Web1.0的顯示控制機制作了重大改進,即對用戶而言,不再區分面、線、點、注記,而只提供一個邏輯層的顯示控制界面。這不但使操作界面更加簡潔,而且方便了用戶.
2.4 運行效率測試
經測試,“地學之窗”Web1.0在Windows98/NT、Unix操作系統上均可運行.“地學之窗”Web版在某100M的ATM內部網上運行時,程序裝載和讀2M數據量的文件時,所花時間不到1min,使進行圖形放大、漫游、查詢等操作,沒有等待的感覺,用戶認為這個速度完全可以接受.用33.6Kbps的Moden,通過電話線撥號上網調用“地學之窗”Web1.0時,裝載程序(.class文件123K)約需1min;裝載800K數據約需5min;裝載2M數據需15min.數據裝載之后,其進行圖形放大、漫游、查詢的響應速度都很快,沒有等待的感覺,但其數據裝載速度是難以為用戶所接受的.因此,目前“地學之窗”Web1.0若在低速的廣域網上使用,還有待于網絡速度的大幅度提高,或者需改進體系架構與數據調度方式.
3 幾點經驗及思考
作者在開發“地學之窗”Web版的過程中,積累了一些成功的經驗與失敗的教訓,并對現在版本的不足之處也有所認識,對改進途徑也有所思考,希望能與同行共享這些經驗教訓和思考.
3.1 “地學之窗”Web版的改進途徑
從筆者所作的試驗和理論推算可知,用電話線撥號上網使用“地學之窗”Web1.0時,數據傳輸速率是一大瓶頸,解決這一瓶頸的方法有三:
(1)等待因特網的提速
在“三網融合”的大趨勢下,可以預見不久的將來,國內因特網的速度將會大幅度提升,因為國內大中城市的有線電視網普及率很高,專家認為只要稍加改造,加上電纜調制解調器(CableModem)之后,用戶共享速率可達10~30Mbps[8,9],是現在電話線撥號上網速率的500倍以上,在這樣的網絡速率下,一次性可調入1~10M的圖形數據,這樣用戶將沒有等待的感覺.
(2)改變程序的體系結構
采用“瀏覽器/JAVA/小應用程序/JAVA應用服務程序”這樣的三層架構,即在Web服務器端始終運行一個GIS應用服務程序,用來為前端的小應用程序提供數據讀取和數據組織服務.但如果僅僅采用三層架構,在數據的調度策略上,還是一次將一幅圖的空間數據全部裝載的“胖客戶機”策略,則其數據在網絡上的傳輸量與由小應用程序直接讀是一樣的.若這樣的話,總體效率可能還不如“瀏覽器/JAVA小應用程序”這樣的兩層結構,因而還得改進數據調度策略.
(3)改進數據調度策略
即在小應用程序與服務程序之間實施一次只傳輸一幀繪圖矢量數據的“瘦客戶機”策略,這對程序與數據的結構設計提出了較高的要求,但這樣的優點是不必一次把一個圖幅的空間數據全部裝載到用戶端,其缺點是客戶端的每一個請求(不論大小)都必須傳到服務器端進行處理,結果再通過網絡傳到客戶端,這樣將使系統的響應速度受到一定影響,而且客戶端的CPU與內存等資源由于大部分時間都處于空閑狀態而未得到充分利用.
(4)“動態分配任務”的調度策略
動態分配任務就是根據網絡速度、網絡忙閑程度、圖幅數據量大小、任務大小,動態地分配客戶端與服務器端的任務.例如一個區域初次顯示時,先由服務器組織第一幅畫面的數據傳給客戶端顯示.然后根據該圖幅的數據量,確定是否傳輸整幅圖形的數據,若數據量太大,則不傳;若不是太大,則在客戶端顯示第一幅畫面以及響應用戶其它請求的同時,將該圖幅的其它數據整理后傳給客戶端,以后的放大、漫游、查詢等大部分操作就在客戶端進行.這樣,既不像胖客戶機那樣初始化時用戶等待時間太長,又不像瘦客戶機那樣,客戶的每一個操作都要通過網絡傳到服務器,再返回到客戶端.由此可見,動態分配任務的調度策略融合了瘦客戶機/胖客戶機兩者的優點,應該具有最高的效率,但它對程序的設計也提出了更高的要求.
3.2 JAVA語言在不同瀏覽器上的差別
雖然JAVA語言號稱具有跨平臺功能,但即使是在Windows平臺上,當使用不同的瀏覽器時,有的JAVA函數的工作情況是有所差異的,這就影響到程序的通用性,由于在因特網上是不好規定用戶只能使用什么瀏覽器的,因此程序開發者應盡量避免使用在不同瀏覽器上會有不同表現的類和函數.例如:
(1)PopupMenu類,按照語言規范,可以加到Button上去,如oneButton.add(onePopupMenu),但這只能在I.E.或AppletViewer上正常工作,而在Netscape下,則onePopupMenu的所有子菜單項都顯示為oneButton的內容.改進的方法是采用onePanel.add(onePopupMenu)方式,則在任何瀏覽器下都可以工作.
(2)創建字體的構造函數Font(Stringname,intstyle,intsize),其中的參數name,在I.E.下,可以是“System”或“楷體”,甚至任何字符串都能顯示出漢字來,但這樣設置的字體,在AppletViewer或Netscape下,則將漢字顯示為方框.若將name設置為“宋體”、“Monospaced”、“SansSerif”、“Serif”之一,則在任何瀏覽器下都能正常顯示漢字.
(3)JDK1.2在Netscape下運行時,Frame或JFrame里有若干組件(Component)——Panel、Canvas、Button等,當改變JFrame大小,重新設置這些組件的位置與尺寸時,整個窗口和部件都會被多次重畫,例如有15個組件,就會重畫15次,因而產生非常強的閃爍感,令用戶感覺非常不舒服.而這種現象在I.E.下,或Netscape使用JDK1.1.6下就沒有.作者通過反復試驗,發現只有采取如下的方法才能消除這種莫名其妙的閃爍,即用setVisible(false)先將這些組件設為不可見,然后用remove()將這些組件移出,然后用add()將這些部件加入,再用setBounds()設置這些部件的位置與尺寸,最后再用setVisible(true)將這些部件設為可見.
(4)available()函數是DataInputStream、InputStream等類的一個函數.按照JAVA語言規范,它的功能是返回輸入流,在沒有阻塞的情況下,可以讀出的字節數,即它應返回由DataInputStream打開的文件的字節數.但是用Netscape瀏覽器或在網絡方式運行時,它的返回值常常小于DataInputStream打開的文件的字節數.因而不能用available()函數確定文件大小.一個較笨,但可行的方法是先分配一個很大的數組,一直讀到InputStream拋出一個異常為止,記下讀出的字節數,即可作為文件的字節數.
(5)鍵盤消息響應在I.E.下,沒有什么問題,但在Netscape下,只要響應過Button、Check、List、Choice等控件的消息,則各個Panel、Canvas上再也接收不到鍵盤消息,盡管這時還可以響應鼠標消息.這時必須用requestFocus()函數使Panel、Canvas等組件重新獲得鍵盤輸入焦點,以接收鍵盤消息.
(6)J++6.0的錯誤捕捉和動態跟蹤功能常常出錯,例如在某處捕捉到數組越界,但實際上在這里并沒有數組越界,而是在這之前的某個地方已經有數組越界,或使用了空指針,系統內存已經混亂了,因此在程序調試階段,要盡可能多設錯誤捕獲陷阱,以便及時準確地捕獲錯誤.
3.3 HTML、JavaScript、JAVA合理集成
因特網上的GIS應用是多種多樣的,充分發揮好HTML、JavaScript、JAVA各自的優勢非常重要.有的應用根本不需要用JAVA編程,因為用HTML語言制作的頁面本身就具有很強的表現力,可以設置菜單、動態跳轉,顯示文本、圖片、動畫等.而且JavaScript語句可以直接嵌在HTML頁面中,解釋性執行,有點象VB,語法又與JAVA類似.因此JavaScript具有比JAVA的Applet多得多的網頁控制能力和一定的編程能力,如函數定義、函數調用、條件判斷、循環、動態獲取系統日期、處理鼠標消息的等功能,很多功能的實現比用JAVA編程還來得簡單,因此在構筑因特網GIS應用時,若充分利HTML頁面中JavaScript的編程功能會使系統很多功能的實現更簡單容易.JAVA編程能夠實現各種復雜的圖形與數據庫操作以及更強的GUI控制能力,是因特網GIS應用的最高層次,但并不一定每一個系統都需要用JAVA來實現.筆者建議用JAVA開發因特網GIS應用的研究者,應花費一定時間了解JavaScript和HTML,這能收到事半功倍的效果.
4 結 論
用JAVA開發“瀏覽器/小應用程序”架構的WebGIS——“地學之窗”Web1.0可跨平臺運行,且在高速網上運行效果良好,但在低速網上運行初始化時間太長,應改進為“瀏覽器/小應用程序/應用服務器”架構,并采用“瘦客戶機”的調度策略或“動態分配任務”的調度策略.
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載