MapServer是由
美国明尼苏达大学开发的开源WebGis软件,它具有强大的空间数据的网络发布功能。MapServer支持多种数据格式,使得在WebGis中整合空间数据和非空间数据变得更加容易。
简介
MapServer是由
美国明尼苏达大学和
美国太空总署(NASA)开发的一个开源的WebGIS软件。MapServer作为WebGIS解决方案,它是面向对象的,基本配置文件MapFile和MapScript模块的API组织都是基于对象的。MapServer通过支持OGC协会的若干标准,支持分布和互操作。MapServer是基于胖服务器/瘦客户端模式开发的webgiS平台,读取地理数据,并利用
GD库绘制好jpg/png/gif格式的图片后再传回客户端浏览器。MapServer支持在
Windows、
UNIX、
Linux等多种平台。MapServer支持OGC的WMS/WFS服务规范。MapsServer本身是由C语言编写的程序,提供了两种开发模式,一种是基于CGI的,另一种是MapScript方式。MapScript支持的语言:PHP,
Perl,
Python,
java,
Tcl,
C#等。MapServer可以看作是两个独立模块的统称:MapServer CGI模块和MapScript模块。在服务器端可以使用任一模块,编写WebGIS程序。
MapFile文件将各种地图要素组织成具有层次关系的对象系统。数据来源,使用的数据格式,用户交互和对OGC协议的支持也在MapFile中定义。MapFile的语法很简单。MapFile的关键字包括对象名、对象属性(keyword),对象结束标记“END”。
Maplab是基于web的Map文件编辑工具和脚本调试工具,是构建在MapServer上的界面。MapLab有三个主要的模块,MapEdit、MapBrowser及GMapFactory。PHP/MapScript是一个可以让PHP动态地载入的模块,使MapServer可以在PHP环境中使用MapScript的功能,如此使用者可以在PHP的环境中控制MapServer。
MapServer已实现两个OGC界面规范分别为WMS(Web Map Service)和WFS(Web FeatureService)。Opengis网络地图服务规范(WMS)的原始设计理念是希望从网络上多重分布的数据库中提取地理图形及部分属性资料以产生客制化的地理图形,这类图形一般以JPEG、GIF或PNG图形格式存储。此外,还支持SVG及WebCGM(web computer graphics metafile)。OpengiS网络特征服务(WFS)主要描述展现OGC特征资料的运作方式,让服务器和使用者能够在图层上沟通,获得图层底下各特征的信息,核心协定是GML。WFS的使用者可以使用一般OGC网络服务提出请求的方法,即透过URL传送CGI参数和WFS服务器进行互动。此外使用者还可以透过XML对WFS服务器提出要求。
工作流程
MapServer的主要工作流程:
(1)由Web服务器将用户的访问参数及要求的CGI参数传给MapServer。
(2)MapServer接收到Web服务器传送的参数后,再由参数中所定义的Mapfile路径读取Mapfile文件。根据Mapfile中指定的数据路径读取相关地理数据,并将读取的数据根据Mapfile文件中的设置进行制图。
(3)第(2)步所传送的信息被PostGIS接受后,对PostGIS下达请求。
(4)空间数据库将空间与属性数据发送到MapServer进行处理。
(5)MapServer通过一系列处理,由GD Library将空间数据转成PNG或IPG。
(6)MapServer根据Mapfile中的设置,读取特定的Template file进行制图工作。通过编辑Template file可以设计MapServer Applications在浏览器中显示的界面。
(7)在地图制图工作完成后,将保存至客户端参数中指定的位置。并由Web服务器返回给客户端浏览器显示。
库
MapServer是使用C语言编写的开源软件,它本身又依赖一些开源的或免费的库,如Shapelib、FreeType、Proj.4、GDAL/OGR。
(一)必须的库:
1)GD Library:MapServer通过使用GD graphics library来表现GIFPNG和JPEG 格式的图像。这些图像通过MapServer CGI在
浏览器上浏览。
(二)可选的库:
1)JPEG library:由GD调用生成JPEG图像。
2)PNG library:由GD调用生成PNG图像。
3)Zlib:由libpng用来提供图形压缩功能。
4)FreeType 2:由GD.调用提供TrueType支持。
5)PROJ.4:Proj.4用于动态的投影变换。WMS、WFS或WCS Services也需要它的支持。
6)GDAL/OGR:MapServer使用GDAL/OGR库来读入raster(GDAL)andvector(OGR)格式的数据
7)ArcSDE:ArcSDE是ESRI公司的
空间数据库引擎(它不是免费的)用于支持MapServer进入SDE数据库。
8)EPPL7:用来读取EPPL7数据库和旧版本的Erdas LAN/GIS文件。它是作为MapServer的内置库。
特点
1、先进的地图输出发布功能。包括:图像比例自动调节;特征标注(包含标注冲突解决);完全支持定制的模板的输出,生成个性化界面;支持微软和APPLE公司共同研制的字型标准TrueType;地图元素(如比例尺、图例,参照图等)自动控制;利用逻辑或正则表达式生成专题地图。
2、支持当前流行的脚本语言和开发环境:支持:PHP,
Perl,
Python,
java,
Tcl,
C#等语言;跨系统平台支持:
Windows、
UNIX、
Linux等。
3、支持目前流行的绝大多数矢量栅格数据格式:支持的矢量格式:ESRI shapefiles、PostGIS、ESRI的ArcSDE等(通过OGR库实现);支持的栅格格式:TIFF/GeoTIFF,EPPL7等(通过GDAL库实现)。对
shapefile文件,可以建立
四叉树空间索引。支持分块的矢量和栅格数据。
4、可以通过URLS动态进行配置;支持动态的投影变换;对OGC若干网络规范:WMS、WFS、WCS、WMC、SLD、GML和Filter Encoding都有较好的支持。