MapServer 7.0.3 Documentation 翻译

一、介绍

1.1 MapServer概览

MapServer是一个开源的项目。它目的是通过网络动态的显示空间地图。一些特性如下:

  • 支持查询和显示成百上千的栅格,矢量和数据库形式的数据。
  • 跨平台
  • 支持主流的脚本语言和开发环境(PHP、Python、perl、Ruby、Java、.NET)
  • 运行时投影
  • 高质量渲染
  • 高自定义应用输出
  • 许多随时可用的开源应用环境

最常用的基本实用场景是:Mapserver是一个CGI程序,在你的网络服务器上待命。当一个请求被发送到MapServer,它利用传递过来的URL请求和Mapfile文件来创建一个被请求地图的图片。这个请求还可能包含图例,比例尺、参考地图和被作为CGI变量传递的变量。

另请参阅:
术语表,它包含了许多本文档涉及到的术语。
MapServer能够通过MapScript或模板来扩展和自定义。它可以被构建为支持许多不同的矢量和栅格数据输入的形式。并且它能够生成多输出格式。大多数预编译的MapServer包含大多数的这些特性。
另请参阅:
编译 Unix和Win32版MapServer
注意:
MapScript 提供了一个Mapserver的脚本接口。用来构建一个网络或者是单机应用程序。MapScript能够独立于CGI MapServer而被使用。它是一个可加载的模块,它使得MapServer拥有了支持你最喜欢的脚本语言的能力。MapScript最近支持了PHP、Perl、Python、Ruby、Tcl、Java和.NET
本章不会详细的去讨论MapScript,请参考MapScript第五章。

1.1.2 剖析一个Mapserver例子


基本的MapServer 应用结架构
一个简单的Mapserver应用包含以下内容:

  • Map 文件:

    一个结构化的文本配置文件,用于你的MaoServer应用。它定义了你的地图区域。告诉MapServer程序你的数据在哪里向哪里输出图片。同样的也定义了你的地图图层,包含你的数据资源,投影和符号。该配置文件必须以*.map扩展名形式命名。否则mapServer无法识别。
    另请参阅:
    MapServer的Mapfile参考。

  • 地理数据

    mapServer能够支持多种地理数据格式。默认的数据格式是ESRI的Shape格式。许多其他格式也可以被支持,这将在“添加数据到你的站点”中一章讲到。
    另请参阅:
    矢量输入数据参考和栅格输入参考。

  • HTML网页

    作为用户和MapServer的接口。它们通常位于WEB的根目录下。最简单的形式是,MapServer能够被调用布放一个静态的Map图片到HTML页面上。为了使地图可交互,该图片被放置在一个HTML页面中。
    CGI程序(stateless)无状态记忆,他得到的每次请求都是新的,它们不记得上次在哪里被你的程序所调用了。基于此,每次你的应用发送一个到MapServer的请求。都需要以隐藏形式的变量或URL变量传送一个上下文信息(显示哪一层、你在地图的哪里、应用的模式,等等。)。
    一个简单的CGI程序可能包含两个HTML页面。
    -初始页面(Initialization file)
    使用隐藏形式的变量来传送初始查询。该查询被送往web Server 和MapServer。这种形式可以被放在其他页面中或者被传递来的初始化信息的URL中的变量所替换。
    控制MapServer怎样在浏览器中输出地图和图例。通过参考在模板HTML页中的Mapserver CGI变量 ,你可以MapServer 使用值来填充它们,这些值依赖于你的应用的最近的状态(例如,地图图片的名字,参考图片的名字,地图范围,等等。)。进而使用这些值来创建用于显示的HTML页面。模板同样确定了用户怎样与MapServer应用交互(浏览、缩放、平移和查询)。

另请参阅:
模板章

  • MapServer CGI

    接受请求和返回图片、数据,等的二进制或者可行程序。他位于网络服务器的cgi-bin或者脚本目录下。网络服务器用户,必须有执行该目录的执行权限,并且处于安全原因,它不应该在网络根目录下。默认情况下该问件名叫
    mapserv

  • Web/HTTP 服务器
    当被用户浏览器调用时,返回HTML页面。你需要一个工作的网络(HTTP)服务器,例如Apache 或者IIS(Microsoft Internet Information Server),装在你的Mapser所在的电脑上。

1.1.3 安装与要求
  • 硬件要求: 取决于你的性能要求。

  • 软件要求:Windows下推荐使用MS4W,(全家桶,应有尽有,方便快捷:) ),也可以选择性的安装OSGeo4W。
    本文档将假设你使用MS4W。
    注意:OSGEO-live 虚拟机同样包含立即可用的MapServer
    浏览器、文本编辑用来编辑你的HTML和Map文件。

  • 技巧
    额外的,学习一个MapServer应用的不同部分是怎样在一起协作运作的,以及Map文件的语法,构建一个基本的应用。要求你对许多不同的知识有所概念性的理解。
    HTML基础、基本的地理数据知识,如地图投影。由于你的应用变得越来越复杂,在SQL、DHTML/JavaScript、Java、数据库、表达式、编译和脚本相关的知识也是同样必要的。

Windows下安装
注意:预编译的二进制MapServer可从对应的页面下载。
MS4W(MapServer for Windows)是包含Apache Web服务器、MapServer和所有的依赖库和工具;MS4W同样包含多个附加的包,它们包含超过60个的预配置的Mapserver 配置文件(mapfiles)和数据,以下是MS4W的安装步骤:

  1. 下载MS4W(此步骤需要setup.exe)从http://ms4w.com/
  2. 执行安装文件。
  3. 点击同意按钮,接受使用协议。
    注意:MS4W 使用很开放的MIT/X license

  4. 选择要安装的包。确定选中“MapServer Itasca Demo Application”,之后会用到。
    注意:你也可以选择性的安装其它包。

  5. 点击“next”

  6. 点击“Browse…”按钮,选择安装目录,默认是在c盘下。

注意:文件夹将会支持

7. 点击“NEXT”。
8. 键入Apache Service 的端口号。大多数情况下使用80端口。除非该端口被占用或者其他情况出现。
注意: 你能够指定大于1024的值,如8081或8082等。

  1. 点击Install,安装
  2. 看到“Install Complete”,就表示安装完成,点击“close”。
  3. 在你的桌面上点击MS4W-Loaclhost快捷方式,你的浏览器应该会打开一个:http://127.0.0.1,并且加载MS4W的介绍页面。
  4. 为了证实MapServer正常工作,点击 Feature栏目下的 /cgi-bin/mapserver.exe 链接
    注意:如果Mapserver工作正常将会看到一串提示:No query information to decode. QUERY_STRING is set, but empty.

1.1.4 Mapfile简介

.map文件是Mapserver进行数据连接和风格化的基础配置。该文件是ASCII格式的文本,它由许多不同的“对象”组成。每个对象都包含许多可用参数。所有的mapfile文件相关的参数使用文档都可参见Mapfile参考文档一个简单的Mapfile文件示例如下,
MAP
NAME “sample”
STATUS ON
SIZE 600 400
SYMBOLSET “../etc/symbols.txt”
EXTENT -180 -90 180 90
UNITS DD
SHAPEPATH “../data”
IMAGECOLOR 255 255 255
FONTSET “../etc/fonts.txt”
#开始网络接口定义
WEB
IMAGEPATH “/ms4w/tmp/ms_tmp/”
IMAGEURL “ms_tmp”
END

#开始图层定义
LAYER
    NAME 'globel-raster'
    TYPE RASTER
    STATUS DEFAULT
    DATA bluemarble.gif
END

END

渲染后的Bluemarble 图片

注意:
- 注释以 # 号开始
- Mapserver使用从上到下的顺序。这意味着写在最后一层的层会在最后显示。(也就意味着会压在其它层上)。
- 建议使用相对路径
- 路径应被引号引起来。(英文单引号或双引号)。
- 上面的例子按照的是在下面的目录结构:
mapfile文件可以被放置与任何地方,只要它可以被webserver链接上。通常也应避免被网页直接访问。我们这里放在/home/msuser/mapfiles/
字体文件的位置与mapfile文件的位置相关。/home/msuser/etc/fonts。txt
数据集的存放位置,也依赖于mapfile。这里 /home/msuser/data/
符号文件的位置也依赖于mapfile。路径/home/msuser/etc/symbols.txt
mapServer产生的文件存放于/ms4w/tmp/ms_tmp/。Web 服务器必须可以在该文件夹下放置文件。Web服务器必须可以将该路径识别为/ms_tmp。(例如,网络服务器的网址是:www.ms.org,网络地址目录就是:www.ms.org/ms_tmp/.)

MAP 对象

MAP
NAME “sample”
EXTENT -180 -90 180 90
SIZE 800 400
IMAGECOLOR 128 128 255
END

  • EXTENT 表示对于整幅输出地图的输出范围
  • SIZE 表示地图的像素宽高。
  • IMAGECOLOR 是默认的图片背景色。
  • 注意:MapServer当前使用基于像素中心的扩展模型,这一点与GDAL或者WMS使用的有所不同。
    Layer 对象
  • 自Mapserver 5.0后,对mapfile的层数没有限制。
  • DATA参数与MAP对象的SHAPEPATH参数相关。
  • 如果在filename中没有提供DATA格式后缀扩展,Mapserver将会假设它是ESRI shape 格式。(.shp)

Raster 层

LAYER
NAME “bathymetry”
TYPE RASTER
STATUS DEFAULT
DATA “bath_mapserver.tif”
END
同见:Raster

Vector 层

矢量层包含可供显示的点、线或多边形。接下来的示例展示了如何使用多边形层单一显示线条。
LAYER
NAME “world_poly”
DATA ‘shapefile/countries_area.shp’
STATUS ON
TYPE POLYGON
CLASS
NAME ‘The World’
STYLE
OUTLINECOLOR 0 0 0
END # STYLE
END # CLASS
END # LAYER


使用矢量数据渲染后的BlueMarble

Class 和 STYLE 对象

  • 典型的样式信息写在Object的CLASS和STYLE中。
  • MapServer5.0后在mapfile中对class和mapfile的个数没有限制。
  • 下面的例子展示了怎样使用重叠的STYLE对象来用两种颜色显示一条道路线。
  • CLASS
    NAME “Primary Roads”
    STYLE
    SYMBOL “circle”
    COLOR 178 114 1
    SIZE 15
    END
    STYLE
    SYMBOL “circle”
    COLOR 254 161 0
    SIZE 7
    END
  • END

具有样式的道路

SYMBOLs
- 可以在mapfile中直接定义也可以单独在一个文件中定义。
- 分离文件的方式必须在MAP对象中使用SYMBOLSET参数

MAP
NAME “sample”
EXTENT -180 -90 180 90
SIZE 800 400
IMAGECOLOR 128 128 255
SYMBOLSET “../etc/symbols.txt”
END

symbols.txt 可能会包含
SYMBOL
NAME “ski”
TYPE PIXMAP
IAMGE “ski.png”
END

mapfile包含:
LAYER

CLASS
NAME “Ski Area”
STYLE
SYMBOL “ski”
END
END
END


有一个滑雪小人符号的图片。

其它参见:Cartographical Symbol Construction with MapServer, Symbology Examples, and SYMBOL

label 标签

  • 定义在CLASS对象中
  • LAYER中的LABELTIEM参数可以被用于指定作为标签的数据的属性该标签基于在FONTSET中声明的字体来显示。FONTSET文件包含可用字体名。以及文件用到的编码描述(详情参看Mapserver国际字符显示

一个Labels示例:

LABEL
FONT “sans-bold”
TYPE truetype
ENCODING “UTF-8”
SIZE 10
POSITION LC
PARTIALS FALSE
COLOR 100 100 100
OUTLINECOLOR 242 236 230
END # LABEL


带有雪人和文字的标签

CLASS表达式
Mapserver在一个Layer中支持三种类型表达式
1. 字符串比较
EXPRESSION “Africa”
2. 规则表达式
EXPRESSION /^9|^10/
3. 逻辑表达式
EXPRESSION ([POPULATION] > 50000 AND ‘[LANGUAGE]’ eq ‘FRENCH’)
注意:逻辑表达式应该避免使用,应为他们非常耗绘制时间。

同见:表达式

INCLUDE
添加MapServer4.10,mapfile的任何部分都可以被分离出来。通过INCLUDE参数引入。被引入的文件可以是任意的扩展,但是需要与 main.map相联系。
- LAYERs和STYLE都可以以独立文件的方式保存下来。

一下是一个引用某一个层的独立文件的例子:
文件shaderelief.lay包含:
LAYER
NAME “shaderelief”
STATUS ON
TYPE RASTER
DATA “GLOBALeb3colshade.jpg”
END

因此主mapfile文件会包含:
MAP

INCLUDE “shadedrelief.lay”

END

以下是Layer层*.lay文件和所有其他的WEB、REFERENCE、 SCALEBAR等存储在.ref文件中。

MAP
NAME “base”
#
# include reference objects
#
INCLUDE “../templates/template.ref”
#
# Start of layer definitions
#
INCLUDE “../layers/usa/usa_outline.lay”
INCLUDE “../layers/canada/base/1m/provinces.lay”
INCLUDE “../layers/canada/base/1m/roads_atlas_of_canada_1m.lay”
INCLUDE “../layers/canada/base/1m/roads_atlas_of_canada_1m_shields.lay”
INCLUDE “../layers/canada/base/1m/populated_places.lay”
END # MAP

警告:MapFiles文件必须以 .map后缀结尾,否则mapserver可能无法识别它们。include的文件随意。
**使Mapserver运行起来

  • 你可以运行./mapserver -v来运行mapserver。如果你使用MApserver的setup.exe安装包来安装MApserver你可以运行MS4W-Shell来运行命令。如果不是,需要在命令行下cd到安装目录下 执行 setenv.bat,然后执行以上命令。
  • 依赖于你的具体配置,输出应该是下面的样子:
    MapServer version 7.0.1 (MS4W 3.1.4) OUTPUT=PNG OUTPUT=JPEG OUTPUT=KML
    SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=CAIRO SUPPORTS=ICONV
    SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER
    SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=FASTCGI
    SUPPORTS=THREADS SUPPORTS=GEOS INPUT=JPEG INPUT=POSTGIS INPUT=OGR INPUT=GDAL
    INPUT=SHAPEFILE

你也可以发送一个http请求来直接使用CGI程序。http://127.0.0.1/cgi-bin/mapserv.exe
如果你收到了:No query information to decode. QUERY_STRING not set.,那么,安装时成功的。
运行示例:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值