基于Linux的WebGIS平台架构方案
2013-08-28苏小冰
苏小冰
(西南林业大学,云南 昆明 650224)
1 引言
近年来,随着操作系统的发展,Linux作为一个开源的操作系统,拥有良好的安全性、可靠性和稳定性,尤其在可靠性方面,Linux和很多商用的UNIX系统具有可比性。它比大多数的桌面操作系统更加的稳定可靠,特别是作为Web服务器、数据库服务器时,它的这一特点将会使它在众多操作系统中脱颖而出。
与此同时,随着计算机技术的快速发展,地理信息系统(GIS,Geographic Information System)应用程度的不断深入和应用范围的逐渐扩大,GIS正处于急剧变化与发展之中,WebGIS成为近年来GIS研究领域的一个前沿课题。如今已有很多基于Linux的WebGIS软件,因此建立一个基于Linux的WebGIS平台,把Linux的安全、稳定可靠与WebGIS结合起来,有利于GIS软件的研究、开发和应用。
2 常见的Web系统架构
随着Web技术的发展,出现了数据与服务处理分离、服务与数据分布式等变化,交互性能大大增强,其系统架构也由原来的两层架构发展成为三层架构乃至多层架构(N-tier architecture)。多层架构是在三层架构的基础上对中间层进行细分,对于典型的三层架构,系统被划分为:表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。表示层负责内容的展现和与用户的交互;业务逻辑层是表示层与数据访问层的桥梁,负责逻辑的判断、业务处理、数据传递等;数据访问层完成所有与数据库交互的操作。使用三层或多层架构可以使系统结构清楚,分工更明确,有利于后期的维护和升级。
目前,现有的WebGIS按照负载的轻重和处理性质分为基于服务端的WebGIS模式和基于客户端的Web-GIS模式。基于服务端的WebGIS大部分都采用的是三层或多层架构,GIS的绝大部分功能是在服务器端实现,而基于客户端的 WebGIS则采用插件技术(Plugin)模式、ActiveX模式和GIS Java Applet模式,GIS数据和数据处理功能在客户端实现,对于一般应用具有操作方便、灵活等优点,但对于处理大量数据和完成复杂的GIS空间操作能力有限。因此,本文主要探讨基于服务端的WebGIS实施方案。
3 WebGIS软件分析
当前,支持Linux系统的商用WebGIS软件已有很多,这类软件提供了丰富的GIS功能,例如制图、地图查询、地理编码等空间分析功能,还附带了WebGIS的管理和维护等工具,此外还为专业用户提供了二次开发的接口,比如ArcGIS Server为用户提供用于空间数据管理、制图、3D可视化和基于浏览器的编辑、地理处理、空间分析、建模等功能。对于开发人员而言,提供的多层组件可用于为桌面、移动客户端、智能客户端、网络浏览器和企业模式构建和部署Java的应用和服务。这类商业软件功能强大、界面友好,但软件和维护费用高,有时受条件限制,不能选用。其实在Linux系统下,还有一些开源的 WebGIS软件做的也不错,比如 MapServer,它起源于明尼苏达大学自然资源学系和NASA(美国航空航天局)合作的UMN ForNet项目。
MapServer是一套基于胖服务器端/瘦客户端模式的实时地图发布系统,客户端发送数据请求时,服务器端实时的处理空间数据,并将生成的数据发送给客户端。MapServer基于C语言,利用GEOS、OGR/GDAL对多种矢量和栅格数据的支持,通过Proj.4共享库实时的进行投影变换。同时,还集合PostGIS和开源数据库PostgreSQL对地理空间数据进行存储和SQL查询操作,基于ka-map、MapLab、Cartoweb和Chameleon等一系列客户端JavaScript API来支持对地理空间数据的传输与表达,并且遵守OGC制定的 WMS、WFS、WCS、WMC、SLD、Gml和Filter Encoding等一系列规范,支持GNU/Linux等Unix系统、Windows及MacOS X等。
MapServer的工作流程如图1所示:①用户的访问的参数由 Apache Web Server传递给 MapServer;②MapServe收到Web Server传送的参数时,先由参数所定义的文档(Map File)中获得空间数据的相关信息;③获得空间数据信息后,向空间数据发出数据服务请求;④在得到相应空间数据后,再把这些信息传递给MapS-erver;⑤MapServer通过空间变换等一系列处理后,由GD Graphics library将空间数据生成为PNG或JPG图形;⑥图形文件生成后,MapServer按照定义获取指定的模版文档(Template File),把相应的图形动态的嵌入到html文档中;⑦最后,将生成的符合浏览器标准的html文档由Web Server将结果返回给客户端。
图1 MapServer工作流程
4 方案总体设计
经以上分析,笔者提出一种基于Linux的WebGIS平台方案,如图2所示,前端模块选择Openlayers,A-pache提供WEB服务,MapServer提供地图服务。
图2 WebGIS平台方案
OpenLayers是一个用于开发WebGIS客户端的JavaScript包。OpenLayers实现访问地理空间数据的方法都符合行业标准,比如OpenGIS的WMS和WFS规范。在使用中通过OpenLayers.Layer.WMS可以直接调用 MapServer地图服务,在操作方面,OpenLayers除了可以在浏览器中帮助开发者实现地图浏览的基本效果,比如放大(Zoom In)、缩小(Zoom Out)、平移(Pan)等常用操作之外,还可以进行选取面、选取线、要素选择、图层叠加等不同的操作。甚至可以对已有的OpenLayers操作和数据支持类型进行扩充,为其赋予更多的功能。
WEB服务负责将复杂的GIS功能转交给地图服务器处理,并将地图服务器处理后的结果返回给客户端。提供WEB服务的Apache是世界使用排名第一的Web服务器软件,它免费、稳定且性能卓越,可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
MapServer提供地图服务,前面也介绍了 MapS-erver的特点和工作流程,在MapServer工作过程中,MapFile文件很重要,它是MapServer唯一能够识别的地图配置文件,文件中包含了对数据源、数据格式、用户交互、相关规范的支持等描述信息。
地图数据则可以灵活的选择不同的存储方式,MapServer自身支持多种矢量、栅格格式数据,比如ESRI的shapefile。此外MapServer还集合PostGIS和开源数据库PostgreSQL对地理空间数据进行存储和SQL查询操作。因此,可以根据不同的应用进行选择地图数据的存储方式。
关于开发,可以使用 MapServer CGI模块或 Map-Script模块开发WebGIS程序。利用MapServer CGI模块开发要准备MapFile需要的资源,配置MapFile,设计用户交互界面(即html文件,可以使用脚本语言,如JavaScript)。利用MapScript模块就需要其他服务器端解决方案(指脚本语言),MapScript支持的语言有PHP、Perl、Python、Java、Tcl等,程序员在服务器端就可以使用这些语言通过调用MapScript的API灵活的进行开发。
5 系统的实现
基于上述方案,笔者采用Ubuntu操作系统,根据数据配置了Mapfile文件,使MapServer能正确的发布地图数据,并使用Openlayers连接访问 MapServer,在浏览器中实现了地图的放大、缩小、平移、距离度量、点查询等基本功能,以及比例尺、鹰眼地图、地图单位等信息的显示。
本方案所涉及的软件全为免费的开源软件,整体框架兼容OGC规范,可以方便地与其他支持WMS规范的系统进行互操作。并且在使用中,整个系统能够流畅的进行各种操作,系统运行稳定。当然本方案也由不足之处,在进行二次开发的时候,由于不同软件支持的开发语言不同,如Openlayers使用JavaScript和html语言,MapServer使用PHP或Java等开发语言,因此复杂的二次开发需要开发人员掌握多种编程语言才能进行熟练的开发。
6 结语
本文提出的方案成本低廉,系统架构较易扩展,支持多种数据源,对于简单的应用可以快速的开发实现,复杂的应用也可通过二次开发实现,对于中小型Web-GIS系统或者研究都是一个不错的选择。
[1]Jeff McKenna.An Introduction to Map Server[EB/OL].[2011-11-20].http://www.mapserver.org/introduction.html.
[2]赵 芳.基于 MapServer的教育地理信息系统构建[J].测绘科学,2011,36(1):180~183.
[3]刘 南,刘仁义.WebGIS原理及其应用——主要WebGIS平台开发实例[M].北京:科学出版社,2002.
[4]于占福.Linux平台下基于矢量格式的 WebGIS平台的研究与实现[D].北京:中国科学院遥感应用研究所,2004.
[5]吕 宁.基于WebGIS的网络地图服务的设计与实现[D].武汉:中国地质大学,2006.
[6]路金阁,杨永国.基于开源软件的 WebGIS服务器构建[J].测绘与空间地理信息,2008,31(5):145~147.