教程:基于MapServer的WebGIS开发摘要:WebGIS是将Web技术和GIS技术相结合的新技术,有着广泛的应用。通过WebGIS技术,客户端仅需使用浏览器(不一定包含专门插件)就可以对分布在Web上的GIS数据进行查询、分析等交互操作。 实现WebGIS技术之一是在服务器端使用CGI技术,由美国明尼苏达大学开发的MapServer就是采用这种技术。本文将详细介绍实现WebGIS的开源软件MapServer4.4.2的配置文件和它的两个独立模块,及应用它们开发WebGIS的方法。
地理信息系统对地表信息建立数学模型,利用计算机技术对数据进行存储,处理,分析。其中采用Web技术的地理信息系统即WebGIS。WebGIS的关键特征是面向对象、分布式和互操作。它将GIS数据和功能封装成对象,并且这些对像支持分布式计算,可以存储在不同的服务器上;对象通过一致的通信协议,可以方便的进行交换和交互操作[1]。 WebGIS的实现方法之一是利用Common Gateway Interface(CGI)技术。在服务器端通过CGI应用程序连接Web Server和GIS空间数据库,客户端仅须使用浏览器就可以对空间数据进行查询分析[2]。美国的明尼苏达大学(University of Minnesota),提供的WebGIS解决方案:MapServer,就是利用CGI技术。MapServer支持三层体系结构[3],如下: CGI CGI模块 或者 脚本语言+Mapscrīpt Web服务器 相比与由商业企业提供的众多WebGIS解决方案,MapServer是开源项目。这就意味着你可以免费使用MapServer,并具有自行修改、复制以及再分发的权利[4]。同时MapServer还有众多的优点[5]:
2) 对shapefile文件,可以建立四元树空间索引。 3) 完全支持定制的template的输出。 4) 支持微软和Apple公司共同研制的字型标准TrueType。 5) 支持分块的(tiled)矢量和栅格数据。 6) 地图元素(如比例尺、图例,参照图等)自动控制 。 7) 图像比例自动调节。 8) 利用逻辑或正则表达式生成专题地图。 9) 特征标注(包含标注冲突解决)。 10) 可以通过URLs动态的对MapServer进行配置。 11) 支持动态的投影变换。 12) 对Open Geospatial Consortium若干网络规范的支持:WMS (client/server), non-transactional WFS (client/server), WCS (server only), WMC, SLD, GML和Filter Encoding[6]。 2,MapServer的组成及开发方法 MapServer是使用C语言编写的开源软件,它本身又依赖一些开源的或免费的库,如Shapelib, FreeType, Proj.4, GDAL/OGR[5]。 (一)必须的库: a)GD Library:MapServer通过使用GD graphics library来表现GIF, PNG和JPEG格式的图像。这些图像通过MapServer CGI在浏览器上浏览。 b)Regex:Regex是一个正则表达式库。 (二)可选的库: a) JPEG library:由GD调用生成JPEG图像。 b) PNG library:由GD调用生成PNG图像。 c) Zlib:由libpng用来提供图形压缩功能。 d) FreeType 2:由GD.调用提供TrueType支持。 e) PROJ.4:Proj.4用于动态的投影变换。WMS, WFS或WCS Services也需要它的支持。 f) GDAL/OGR:MapServer使用GDAL/OGR库来读入raster (GDAL) and vector (OGR)格式的数据 g) ArcSDE:ArcSDE是ESRI公司的空间数据库引擎(它不是免费的)用于支持MapServer进入SDE数据库。 h) EPPL7:用来读取EPPL7数据库和旧版本的Erdas LAN/GIS文件。它是作为MapServer的内置库。 MapServer可以看作是两个独立模块的统称:MapServer CGI模块和Mapscrīpt模块。在服务器端可以使用任一模块,编写WebGIS程序。不过它们使用相同的配置文件MapFile。本文的重点就是介绍MapFile文件,及使用两个模块开发WebGIS的方法。 2.1,MapFile文件 MapFile文件将各种地图要素组织成具有层次关系的对象系统[5]。数据来源,使用的数据格式,用户交互和对OGC协议的支持也在MapFile中定义。MapFile中包括的对象及其层次关系: MapObject
# Start of map file # NAMECHINA STATUS ON SIZE 400 300 SYMBOLSET ../etc/symbols.sym FONTSET ../etc/fonts.txt EXTENT 73 35 137 45 UNITS DD SHAPEPATH "../data/china" IMAGECOLOR 255 255 255 # # Start of web interface definition # WEB TEMPLATE "/ms4w/apps/myapps/htdocs/temp.html" IMAGEPATH "/ms4w/tmp/ms_tmp/" IMAGEURL "/ms_tmp/" END#END WEB # |
|