阅读:1965回复:0
开源GIS的研究与应用 ——以MapServer为例
1、 引言
“3S”技术是目前IT领域的热门话题,而地理信息系统(GIS)随着Google Earth的流行被越来越多的人所熟知,它现在关联着我们日常生活的方方面面:它是科学家手中的显微镜,也是百姓出行的指南针;既是将军运筹帷幄的沙盘,也是出租车司机的导航仪。它上能助嫦娥奔月,下能检测印度洋海啸;大能纵观全球,小能观察办公室布局[1] (参见参考文献3)。在GIS流行的背后,也有越来越多的开源GIS在默默贡献自己的力量。 GIS在取得巨大发展的同时,也暴露出来一些问题:商业GIS软件的使用和维护费用越来越高,众多商业软件GIS的数据和操作并非完全能够转换和共享,造成一些信息孤岛。开放式地理信息系统联合会(Open GIS Consortium 简称OGC,),是在1994年成立的一个非盈利组织。OGC主要研究和建立了开发式地理数据交互操作规程(Open Geodata Interoperability Specification,简称OGIS),OGIS是一种规范,使用户和开发者能进行互操作。国际地理空间开发基金会(Open Source Geospatial Foundation)于2006年2月成立,OSGeo基金会的使命是支持开源地理信息软件和遥感软件的开发及推动其更广泛的应用,并对其支持的项目提供组织、法律和财政上的支持,促进OSGeo基金会基于地理信息开发标准软件及其互操作技术的开发、推广和普及。OSGeo中国中心2006年9月成立,它将帮助中国地区的用户和开发者更好地使用OSGeo基金会提供的源代码、产品和服务。OSGeo中国中心的成立必将推动开源GIS在我国地理空间信息系统研究方面的应用。 2、 开源GIS简介 目前的开源GIS项目包含了各种层次的产品,有大型的桌面GIS如GRASS,也有目前比较流行的WebGIS 如MapServer和Geoserver项目,还有开源的GIS数据库项目如PostGIS/PostgreSQL Spatial Database,还有一些数据转换如OGR和GDAL,地图投影算法库如Proj4和Geotrans等开源项目。各开源项目关系如图1所示: 开源GIS还远不止图中所列的项目,图1中所列出的项目是类型开源项目中比较出名的一些代表。GRASS是大型的GIS系统,最早由美国军方建筑工程研究实验室构建维护,后来贡献给开源社区,目前GRASS已经覆盖大多数GIS系统的操作函数,超过300个经典算法。GRASS就是一个开源版本ArcGIS。QGIS是一个用户界面友好的桌面GIS系统,使用基于QT的图形库实现,大名鼎鼎的KDE图形和Google Earth也是基于QT构建。而且QGIS可以很好地支持GRASS的算法接口,成为了GRASS的一个重要的前端表现工具,QGIS就是一个简化版本的GRASS。GRASS和QGIS都是跨平台的桌面GIS软件,可以运行在很多操作系统上,这一点与很多商业GIS系统也有不可。目前在国内比较流行的WebGIS有MapServer和GeoServer项目,MapServer底层采用C来编写,基于CGI脚本实现,页面调用支持PHP、JSP等多种语言,并对OGC的WMS和WFS提供支持。GeoServer基于Java和GeoTools库开发,它的功能全面遵循OGC开发标准,GeoServer对发布WFS-T和WMS提供便捷的支持,并以XML文件描述所有地图服务。基于Eclipse RCP的uDig开源项目既是一个GeoSpatial应用程序也是一个平台,开发者可通过这个平台来创建新的在uDig基础上衍生的应用程序,uDig是Web地理信息系统的核心组件。OpenLayers是一个用户开发WebGIS客户端的JavaScript包,实现访问地理空间数据的方法都符合行业标准,采用面向对象方式开发,并使用来自Prototype.js和Rico中的一些组件。PostgreSQL是一个开源的基于对象的数据,PostGIS则是为PostgreSQL提供空间支持,类似ArcGIS的空间数据引擎ArcSDE。 3、 MapServer MapServer最初名为UMN MapServer,UMN(University of Minnesota)是明尼苏达大学的缩写,它起源于明尼苏达大学自然资源学系和NASA(美国航空航天局)合作的UMN ForNet项目。MapServer的体系架构如2所示: MapServer主要包括两部门:外部调用和内部处理部分,外部调用主要是通过调用开源的库来访问空间数据,内部处理主要是通过GD投影变换来对地图进行渲染。 MapServer的工作流程如图3所示:①由Apache Web Server将用户的访问参数传送给Map Server;②MapServer(mapserv)接收到Web Server传送的参数时,先由参数所定义文档(mapfile)获得空间数据的名称等相关信息;③获得空间数据信息后,向空间数据发出数据服务请求;④在得到相应空间数据包括属性信息后,再把这些信息传递会MapServer;⑤MapServer通过空间变化等一些列处理,由GD Graphics library将空间数据转成PNG或者JPG图形;⑥GIS图形文件生成后,MapServer依照定义抓取指定的模版文档(template file),把相应的图形动态形嵌入html文档;⑦完成后,将生成的符合浏览器标准的HTML文档由Web Server将结果送给客户端显示。 4、 基于MapServer的WebGIS开发 MapServer是运行在CGI的环境下,它最初的目标是在CGI的环境下用户能够通过浏览器访问地图,在CGI的环境下,Apache通过 浏览器传递的变量触发MapServer,通过变量信息,MapServer产生供浏览器访问的地图和网页。一个CGI环境下的基于MapServer的WebGIS开发,主要需要定义好:mapfile和HTML的初始化文件。mapfile文件定义了地图对象和对象的表现形式,是地图的配置文件。 mapfile文件示例如下: SIZE 400 300 #定义图片文件大小 IMAGECOLOR 255 255 #定义图片文件颜色 IMAGETYPE JPEG #定义图片文件类型 WEB TEMPLATE "/var/www/htdocs/hello.html" IMAGEPATH "/var/www/htdocs/tmp/" IMAGEURL "/tmp/" END #定义生成图片的路径和生成的HTML文件 还有一个很重要是要初始化传递给MapServer的参数,示例代码如下: <body><form method=POST action="/cgi-bin/mapserv"> <input type="submit" value="Click Me"> <input type="hidden" name="map" value="/home/mapdata/hello.map"> <input type="hidden" name="map_web_imagepath" value="/var/www/htdocs/tmp/"> </form> <IMG SRC="[img]" width=400 height=300 border=0></body> 基于MapServer开发的WebGIS,运行界面如图4所示: 5、 结论 开源软件相对于安装方便、帮助文档齐全的商业软件,它对用户的要求相对要高,它往往需要用户有GIS概念基础,需要对多操作系统、多数据库、多格式有所掌握,目前使用起来还不是很简单,然而开源有着很好的开发型和扩展性,吸引着越来越多的学者和研究人员加入开源社区中来,随着开源软件的安装、帮助文档、以及软件的维护和支持的改善,开源GIS软件将有着美好的未来。 图4基于MapServer开发的Web GIS 参考文献: 1、Bill Kropla. Beginning MapServer:Open Source GIS Development 2005 2、孙剑.开源再显空间信息魅力,软件世界, 2007年22期 3、陈杰.GIS的开源夜宴,软件世界,2006年20期 4、http://www.osgeo.org.cn/index.php/Main_Page 5、http://www.freegis.org/ 6、http://mapserver.gis.umn.edu/ 7、http://www.foss4g2007.org/ |
|
|