天天看點

開源WebGIS探索

作者:閃念基因

目前,國内外著名的地理空間資訊生産商、圖商大都擁有自己成熟的産品線,基本涵蓋了從資料采集、資料編輯、資料管理、空間資料互操作、空間分析,再到網絡地理資訊服務注冊、釋出、聚合等所有地理資訊工程相關的功能子產品。但是,好的服務必定會有‘好的價格’,更何況某些特定場景下的‘定制化’。這時,按照研發慣性,開源方案或許值得一試,在這裡,使用WebGIS會是一個不錯的選擇。

一、開源GIS簡史

數字制圖和地理空間資訊系統(Geographic information System,GIS)的出現,徹底改變了人們對周圍世界思考、互動的方式。上世紀60年代,Lan McHarg(景觀設計師)首先提出了将位置資訊分層重疊用于決策的概念。大約同一時間,Roger Tomlinson(被人們稱之為“GIS之父”)完成了他的博士論文,主要研究使用計算方法處理分層的地理空間資訊。随後,Roger緻力于建立第一個計算機化的地理資訊系統——加拿大地理資訊系統(the Canada Geographic Infomation System),主要用于勘探測繪。

開源GIS的起源可追溯到1978年的美國内政部。從那時起,基于不同知識産權許可證的開源GIS,深入影響了許多行業的發展,包括政府和商業領域。開源GIS技術在過去的四十多年中持續發展,直到今天,演變出了許多具有開創性和影響力的應用。

1.1 GIS的起源:MOSS & GRASS

1978年,美國内政部建立了MOSS系統(the Map Overlay and Statistical System,地圖疊加和統計系統)。MOSS系統主要用于跟蹤和評估礦山開發對環境、野生植物、野生動物及其遷徙方式的影響。這是第一個廣泛部署、基于矢量、可互動的地理資訊系統。

随後不久,GRASS(“草”,Geographic Resource Analysis Support System, 地理資源分析支援系統)誕生。GRASS系統擁有350多個子產品用于處理栅格、拓撲向量、圖形圖像資料,該軟體最初設計提供給美國軍方使用,以協助土地管理和環境規劃。現如今,GRASS系統廣泛應用于科學研究和商業領域,包括地理空間資料管理和分析、圖像處理、空間和時間模組化,以及建立圖形和地圖。

1.2 GIS的發展:GeoTools、GDAL/OGR、PostGIS和GeoServer

1996年,利茲大學(the University of Leeds)開始建立一個基于Java的地理資訊庫的項目。其最終成果就是經典的GeoTools,一個可以操作空間資料的開源工具,如今被廣泛應用于Web地理空間資訊服務、網絡地圖服務和桌面應用程式,而且它還是現今最流行的地理服務系統GeoServer的核心元件。

四年後,一個跨平台的地理資訊庫GDAL(Geospatial Data Abstraction Library,地理空間資料抽象庫)誕生了。GDAL使得GIS應用程式可以支援不同的資料格式,它還附帶了各種有用的指令行工具,用于處理和轉換各種資料格式。GDAL支援超過50個栅格格式和20個矢量格式的資料,它是全世界使用最為廣泛的地理空間資料通路庫,支援的應用程式包括谷歌地球、GRASS、QGIS、FME(the Feature Manipulation Engine)和ArcGIS。

2001年,Refractions Research(加拿大IT咨詢機構)研發了開源項目PostGIS,使得空間資料可以存儲在Postgres資料庫。同年,前面提到的用于将空間資料釋出為标準Web服務的GeoServer建立。PostGIS和GeoServer項目都取得了令人難以置信的成功,是迄今為止被廣泛應用的開源GIS資料庫和GIS伺服器。

1.3 創新和教育:開源項目驅動

在開源GIS桌面系統中,QGIS被認為是其鼻祖。它于2002年釋出,內建了GRASS系統的分析能力,以及GDAL對于各種資料格式的支援,還提供了一個使用者友好的桌面應用程式進行資料編輯、地圖制圖與分析。QGIS可以和其他開源GIS進行互操作,例如,管理PostGIS資料庫,将資料釋出到GeoServer作為Web服務等。

在21世紀初,開源GIS繼續獲得發展動力,建立了開源孵化項目OSGeo和LocationTech。OSGeo于2006年推出,設計目标是支援開源GIS軟體的協同開發,以及促成相關軟體的廣泛應用。LocationTech是Eclipse基金會設立的一個工作組,旨在促進GIS技術在學術研究、産業和社群之間的合作。

2011年,“Geo for All”建立。它是開源地理空間基金會(Open Source Geospatial Foundation)的教育推廣項目,目的是使人人都能接觸到地理空間技術的教育機會。其緻力于在世界各地建立開源地理空間實驗室和研究中心,以支援開源的地理空間技術開發、教育訓練和研究。此外,可以算作該基金會的一項重要成果,其在網際網路上免費提供了許多開源GIS的教育資源,其中包括FOSS4G Academy和GeoAcademy。

1.4 标注化:OGC和OpenGIS

技術的發展必定伴随标準的形成,标準的相容對于GIS的發展,尤其是開源GIS的發展起到了重要的促進作用。

OGC(Open Geospatial Consortium,開放地理聯合會)是一個非盈利的國際标準組織,緻力于提供地理資訊行業軟體和資料及服務的标準化工作,它制定了資料和服務的一系列标準,GIS廠商按照這個标準進行開發可保證空間資料的互操作,其組成包括384家公司、政府機構、大學和個人。OpenGIS(Open Geodata Interoperation Specification,開放地理資料互操作規範)由OGC提出。其協定包括WMS(Web Map Service,網絡地圖服務)、WFS(Web Feature Service,網絡要素服務)、WCS(Web Coverage Service,網絡栅格服務)、WPS(Web Processing Service,網絡處理服務)、WMTS(Web Map Tile Service,網絡地圖瓦片服務)。

二、WebGIS架構

2.1 WebGIS組成

通常,一套完整的WebGIS架構方案主要包括以下三個部分:

圖1:WebGIS組成

開源WebGIS探索

1) 地理資訊資料庫和業務資料庫

  • 地理資訊資料庫:用于存儲地理資訊資料(包含矢量、地名位址、專題及瓦片等資料);
  • 業務資料庫:用于存儲前端網站或者行業應用的關系型資料;

2) GIS伺服器& Web應用伺服器

  • GIS伺服器用于提供WMS、WMTS、WFS和WCS等GIS服務;
  • Web應用伺服器主要針對行業應用,用于調取GIS服務和背景的業務資料,以提供Web資訊浏覽服務;

3)用戶端

面向使用者,将所有資訊在前端展示。

2.2 開源WebGIS解決方案

針對上述WebGIS組成,一套完整的開源WebGIS有着相應的解決方案:

圖2:WebGIS架構

開源WebGIS探索
  • 資料生産桌面軟體:使用uDig、QGIS、Grass等開源桌面GIS軟體采集、加工地理資訊資料;
  • 資料存儲:關系型資料使用PostGIS或者MySQL Spatial資料庫存儲地理資訊資料和關系型業務資料,非關系型資料使用mongodb資料庫(瓦片、圖像);
  • GIS伺服器:使用GeoServer、MapServer等生産地圖瓦片,注冊、釋出地理資訊服務;
  • Web伺服器:使用Geomajas、Tomcat或apache搭建網站,在網頁中嵌入地圖容器加載地圖,使用niginx作為反向代理或者負載均衡;這裡,web應用伺服器相對于GIS伺服器而言是用戶端,相對于浏覽者而言是伺服器;
  • 前端渲染:個人用戶端或者web應用伺服器的前端展示。地理資訊服務使用OpenScales、支援Javascript的Openlayers或Leaflet地圖容器前端展示;前端其他資料展示使用Javascript、vue等流行網頁API;

當然,除此之外,也需要一些支撐性的軟體服務,比如雲環境、作業系統等。

以上列舉了開源WebGIS各個環節可使用的軟體或工具架構。在實際項目中,則應該根據需要進行選擇和使用,比如:uDig(QGIS) + PostgreSQL/PostGIS(Mongo)+ GeoServer + Tomcat + Openlayers組合。倘若,業務有高性能、高可用的需求,還應使用叢集技術,搭建資料庫叢集、GIS伺服器叢集、Web應用伺服器叢集等,以增加服務的備援,提高服務性能。畢竟地圖服務不是簡單的Web頁面服務,相比較之下,其需要更大的資源消耗,即便是簡單的空間查詢語句,對資料庫的性能消耗也是不可小觑的。

作者:劉豔鵬

來源:微信公衆号:搜狐技術産品

出處:https://mp.weixin.qq.com/s/LR4uS5gXheGFd5eSdhMc0Q