分享

教程:基于MapServer的WebGIS开发...

 古罗 2008-01-10

教程:基于MapServer的WebGIS开发

[ 来源:互联网 | 时间:2007年09月15日 | 收藏本文 ] 【

摘要:WebGIS是将Web技术和GIS技术相结合的新技术,有着广泛的应用。通过WebGIS技术,客户端仅需使用浏览器(不一定包含专门插件)就可以对分布在Web上的GIS数据进行查询、分析等交互操作。

实现WebGIS技术之一是在服务器端使用CGI技术,由美国明尼苏达大学开发的MapServer就是采用这种技术。本文将详细介绍实现WebGIS的开源软件MapServer4.4.2的配置文件和它的两个独立模块,及应用它们开发WebGIS的方法。


关键词:MapServer,WebGIS,开源,CGI,脚本语言


1,背景介绍

地理信息系统对地表信息建立数学模型,利用计算机技术对数据进行存储,处理,分析。其中采用Web技术的地理信息系统即WebGIS。WebGIS的关键特征是面向对象、分布式和互操作。它将GIS数据和功能封装成对象,并且这些对像支持分布式计算,可以存储在不同的服务器上;对象通过一致的通信协议,可以方便的进行交换和交互操作[1]。

WebGIS的实现方法之一是利用Common Gateway Interface(CGI)技术。在服务器端通过CGI应用程序连接Web Server和GIS空间数据库,客户端仅须使用浏览器就可以对空间数据进行查询分析[2]。美国的明尼苏达大学(University of Minnesota),提供的WebGIS解决方案:MapServer,就是利用CGI技术。MapServer支持三层体系结构[3],如下:

CGI
 
GIS空间数据库
 
MapServer

CGI模块

或者

脚本语言+Mapscrīpt

Web服务器
 
客户端浏览器

相比与由商业企业提供的众多WebGIS解决方案,MapServer是开源项目。这就意味着你可以免费使用MapServer,并具有自行修改、复制以及再分发的权利[4]。同时MapServer还有众多的优点[5]:


1)       支持的矢量格式:ESRI shapefiles, PostGIS, ESRI的ArcSDE等(通过OGR库实现)。支持的栅格格式:TIFF/GeoTIFF, EPPL7等(通过GDAL库实现)。

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
 
Querymap

 
 
Symbol
 
Projection
 
WebObject
 
Reference Map
 
Outputformat

 
 
Scalebar
 
Lengend
 
Layer Object
 
Label Object
 
Label Object
 
Feature
 
Projection
 
Class Object
 
Join Object
 
Label Object
 
Style Object
 
Grid Object


MapFile的语法很简单。MapFile的关键字包括对象名(图2中的所有对象)、对象属性(keyword),对象结束标记“END”。对象名和对象结束标记“END”大小写不敏感;属性名大小写敏感,配置ESRI的shapfile文件要使用大写,PostGIS的却总是小写。在MapFile文件中,符号“#”对单行注释。MapFile文件以“.map”为扩展名,可以使用各种文字编辑器编写。以下是MapFile的一个例子:


#

# 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

#

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多