遵循Java EE標準規範的開源GIS服務平臺之一:平臺架構

傳送門 ☞ 輪子的專欄 ☞ 轉載請註明 ☞ http://blog.csdn.net/leverage_1229

1平臺現狀

        近年來由於信息科技的演進,在其推動下地理信息系統的應用也較以往更爲廣泛;而對於空間資料(Spatial Data)的生成也已從早期必須經由專家學者處理才能發佈,到現在普通人只需要簡單的工具,甚至是通過自動設備就有可能生成這些具有地理信息的資料。
        然而空間資料的建立僅僅是提供服務最基本的一環,如果需要將這些原始的資料轉變成可以提供他人使用的服務,則需要額外的處理。完整的服務平臺架構如下所示。分爲用戶端(Client)、應用服務(Application Services)和服務提供者(Service Provider)三個部分。 
        就目前市面上的商用軟件而言,如果要建立地理信息的服務,已經存在很多種解決方案,在此不便評述。本文主要探討的是如何通過整合開源軟件(Open Source)來構建此服務平臺。此外,筆者從事過Java EE和Android開發,對Java EE平臺較爲熟悉。結合近期的業務需求,需要提供一種基於Java EE標準體系的GIS解決方案。因此,期望通過本文的介紹,能給那些想要轉型Web GIS應用的童鞋提供參考。

2應用服務

        以一般的信息系統爲例,即便後臺擁有功能強大的服務器主機與系統,通過該系統可以處理想打龐大的資料,不過資料畢竟是要給人操作的,如何提供友好的用戶界面也是相當關鍵的一環。對於地理信息系統,縱然我們擁有高效的服務器與強大的計算能力,也同樣需要提供一個良好的操作界面給用戶。
        在地理信息系統中,除了後臺可以處理地圖資源以外,在前端亦需要有一個合適的界面可以提供GIS的基本操作(如:縮放、平移、疊加圖層等)。

2.1OpenLayers

        OpenLayers是通過JavaScript腳本語言所開發的一種工具,提供豐富的地圖資源支持,包含由ArcGIS Server所發佈的資料(ArcGIS Cache)、服務(ArcGIS REST、ArcIMS等),對於其他在線地圖服務(如:Google Map、Bing Map等)都有很好的支持。非常適合用於開發地理信息系統的用戶界面。

3服務提供者

        在地理信息系統中,如果需要將具有空間屬性的資源顯示在網絡上,必須先借助適當的軟件才能達到,通過客戶端才能存取服務端提供的服務。

3.1GeoServer

        GeoServer是一套由Java語言開發的免費軟件,它提供分享和編輯具有空間信息的資源的功能。雖說它只是一套由社區所維護的軟件,不過對於一般商用軟件所具有的功能,它大多都也提供類似的服務。值得一提的是,由於它是免費軟件,所以對於標準的交換格式也都支持。在GIS領域中,由開發地理空間協會(Open Geospatial Consortium)所訂製的網絡地圖服務(Web Map Service,WMS)、網絡圖徽服務(Web Feature Service,WFS)、網絡網格資源服務(Web Coverage Service,WCS)、KML等資源交換規範,GeoService都支持。

        在地理信息系統中,爲了讓整個系統的實用性更高,往往都會搭配層疊豐富的形象資源,包含地圖、衛星影像、航空照片影像等。然而,如果資源數量龐大到需要耗費時間才能通過網絡傳送,可以預見整個系統的效率會大幅度降低。爲了解決加載大量地圖資源的問題,瓦片地圖(Map Tile)的技術相繼被提出。

3.2Map Tile

        瓦片地圖就是將影像資源依據一定的比例尺、命名規則、存儲目錄結構等事先定義好的規範進行處理。當需要展示特定區域的資源時,僅取出該範圍的若干片拼接在一起即可。如此一來,不僅可以節省即時處理龐大影像所花費的系統資源,而且大大降低了系統的延遲時間。因爲圖片資源都是已處理好的瓦片,獲取時僅需通過服務器提供服務即可。
        生成瓦片地圖的機制多種多樣,其中包括商用軟件的解決方案(如:ESRI ArcGIS Server生成Cache的方式),或者開發者可以依照相關規範自行編寫程序來生成切片;不過在免費軟件中,也有提供類似服務的軟件GeoWebCache。

3.3GeoWebCache

        GeoWebCache是一個採用Java實現用於緩存WMS(Web Map Service)Tile的開源項目。當地圖客戶端請求一張新地圖和Tile時,GeoWebCache將攔截這些調用然後返回緩存過的Tiles。如果找不到緩存再調用服務器上的Tiles,從而提高地圖展示的速度。實現更好的用戶體驗。
        針對大量數據的進行處理時,往往會使用數據庫系統(DBMS)進行管理,以增強其運行效率。因此,數據庫系統的使用在整個系統運行中是非常常見的一環。這類軟件包括商用軟件的解決方案,如:Oracle、SQL Server等,或者免費軟件MySQL等。
        同樣的問題也會出現在地理信息系統上,如果大量的數據需要存放在GIS上,採用原有的數據存儲方式,系統的執行效率勢必大大地降低。如果想要得到改善,就必須通過數據庫系統來管理大量的數據資源。然而地理信息的資源與普通資源最大的差異,也就是再於地理信息資源中含有大量的空間屬性。因此,被選爲處理空間資源的數據庫必須具有這項能力。
        近幾年來,Orace數據庫針對這個部分進行研發,誕生了Oracle Spatial;而Microsoft在新版本的SQL Server中也添加了處理空間屬性的功能。對於免費數據庫這塊,PostgreSQL本身作爲一個相當不錯的數據庫,再搭配PostGIS之後,也具有處理空間信息的能力。

3.4PostgreSQL

        PostgreSQL是一種對象-關係型數據庫管理系統(ORDBMS),也是目前功能最強大、特性最豐富和最複雜的自由軟件數據庫系統。它起源於伯克利(BSD)的數據庫研究計劃,目前是最重要的開源數據庫產品開發項目之一, 有着非常廣泛的用戶。PostGIS在對象關係型數據庫PostgreSQL上增加了存儲管理空間數據的能力,相當於Oracle的spatial部分。PostGIS最大的特點是符合並且實現了OpenGIS的一些規範,是最著名的開源GIS數據庫。

4總結

        由於地理信息技術的不斷髮展,GIS在開源軟件陣營中也得到了長足的進步。熟悉開源軟件特性的人都知道,想要把它們協同起來爲你服務,往往需要提供一種標準規範。本平臺所提供的標準規範正是Java EE。也就是說,我們構建的是一種遵循Java EE標準體系的GIS服務平臺架構。參與該服務平臺架構的組件有:OpenLayers+GeoServer+GeoWebCache+PostgreSQL+Eclipse/MyEclipse+Tomcat/Jetty,同時對所涉及的軟件進行了簡單介紹和職責分派。說明了在不借助商用軟件提供的解決方案的前提下,我們同樣也可以構建出具有高效能品質的地理信息服務。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章