目前,国内外著名的地理空间信息生产商、图商大都拥有自己成熟的产品线,基本涵盖了从数据采集、数据编辑、数据管理、空间数据互操作、空间分析,再到网络地理信息服务注册、发布、聚合等所有地理信息工程相关的功能模块。但是,好的服务必定会有‘好的价格’,更何况某些特定场景下的‘定制化’。这时,按照研发惯性,开源方案或许值得一试,在这里,使用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组成
1) 地理信息数据库和业务数据库
地理信息数据库:用于存储地理信息数据(包含矢量、地名地址、专题及瓦片等数据);
业务数据库:用于存储前端网站或者行业应用的关系型数据;
2) GIS服务器& Web应用服务器
GIS服务器用于提供WMS、WMTS、WFS和WCS等GIS服务;
Web应用服务器主要针对行业应用,用于调取GIS服务和后台的业务数据,以提供Web信息浏览服务;
3)客户端
面向用户,将所有信息在前端展示。
2.2 开源WebGIS解决方案
针对上述WebGIS组成,一套完整的开源WebGIS有着相应的解决方案:
图2: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页面服务,相比较之下,其需要更大的资源消耗,即便是简单的空间查询语句,对数据库的性能消耗也是不可小觑的。