應用OpenLayers API開發WebGIS
本文轉載截錄自中央研究院計算中心通訊電子報2011年第19期,作者GIS組林佳樺,全文可至這裡觀看。
一、前言
Web GIS就是透過Internet的WWW(World Wide Web) 設計的GIS操作介面,使WebGIS具有GIS與Internet 的功能,有時又稱為Internet GIS或IGIS。
網際網路地理資訊系統(WebGIS)基於傳統GIS的功能與多圖層之概念,一般強調設計簡潔的系統介面與更簡單操作方式,透過開放應用系統介面(API)讓不同系統之間很容易地互相整合。而除了幾個軟體大廠投入此類新技術的開發外,開放源碼軟體(Open Source Software)亦在此領域蓬勃發展,且由於發展過程並非特定團體所主導,因此軟體開發中特別強調使用標準規範及開放架構,將可有效協助各組織以較低廉之成本建立開放式地理資訊服務。如Google Maps、Google Earth、OpenLayers、Microsoft Virtual Earth與Yahoo Map等軟體。
- 什麼是OpenLayers?
OpenLayers是一個用於開發WebGIS用戶端的JavaScript。OpenLayers建立地理空間資料的方法都符合OpenGIS的WMS和WFS規範標準,可以通過遠端服務的方式,將以OGC 服務形式發佈的地圖資料載入到基於瀏覽器的OpenLayers 用戶端中進行顯示。OpenLayers採用物件方式開發。OpenLayers支援的地圖來源包括了WMS,Google Maps、Yahoo! Map、Microsoft Virtual Earth等等,也可以用簡單的圖片作為源,與其他的圖層在OpenLayers 中進行套疊。
在操作方面,OpenLayers 除了可以在瀏覽器中幫助開發者建立地圖瀏覽的基本效果,比如放大(Zoom In)、縮小(Zoom Out)、平移(Pan)等常用操作之外,還可以進行選取面、選取線、feature選擇、圖層套疊等不同的操作。甚至可以對已有的OpenLayers 操作和資料支援類型進行擴充,為其賦予更多的功能。例如,它可以為OpenLayers 添加網路處理服務WPS 的操作介面,從而利用已有的空間分析處理服務來對載入的地理空間資料進行計算。同時在OpenLayers也可執行Ajax 效果。
- 為什麼使用OpenLayers?
近年來網路地理資訊的發展愈來愈蓬勃,目前大部份開發WebGIS系統平台都以Google Map API為主,而Google雖然提供免費作業平台,但近期也可以看到Google蒐集存取網路使用者所提供的資訊,做了一些分析與應用,這類疑似涉及資訊洩密的問題,使得高敏感度國家都不以採用Google Map API為開發對象。因此就一個WebGIS程式開發人員,若以資料安全考量的疑慮,有必要運用其他在功能上可以與Google並駕其驅的WebGIS API來進行系統開發。
OpenLayers是一個完全Open Source的API,為用以建立地圖及地理空間資訊的 Open Source程式語言,並且可達成Google Map API能應用的面向,因此,連美國白宮都使用OpenLayers來製作官方網頁。本篇文章說明運用OpenLayers做WMS、WFS、GoogleMap、KaMap、Yahoo Map、MSVirtualEarth、WorldWind等圖層套疊,以及建立基本的測量工具、整合ArcGIS server發佈的圖資(Map Tiles)測試跟資料整理。
二、OpenLayers API的簡介
OpenLayers API為Javascript的Map API,可於瀏覽器結合多來源之空間資料與地圖進行呈現並提供資料編輯與記錄之工具,採用JavaScript編寫,實現了類似Ajax功能的無刷新更新頁面,能夠帶給用戶豐富的桌面體驗。OpenLayers,允許開發者發展自己的網路地圖服務及商業運用。此外,OpenLayers與其它Map API亦有良好的相容性。目前,OpenLayers所能夠支援的格式有:XML、GML、GeoJSON、GeoRSS、JSON、KML、WFS、WKT(Well-Known Text)。OpenLayers所能夠利用的地圖資料資源相當豐富,在這方面提供給用戶較多的選擇,比如WMS、WFS、GoogleMap、KaMap、Yahoo Map、MSVirtualEarth、WorldWind及Microsoft Bing Map API等等。
其他還有多種功能與範例,後續可以參考本中心GIS組編製的OpenLayers技術手冊與程式範例(http://gissrv5.sinica.edu.tw/openlayers)。
三、參考文獻
http://opengeo.org/publications/opengeo-architecture/
http://openlayers.org/
http://dev.openlayers.org/releases/OpenLayers-2.10/examples/
http://trac.osgeo.org/openlayers/wiki/SphericalMercator/
http://opengeo.org/publications/opengeo-architecture/