MAP 对应是 MapFile 中的“root”对应,它包含其他所有的对象,它是应用级 MAP 级的参数。
在第一部分的部分列出的是一些通用的参数,详细的参数在稍后的部分讲解。
[name]
.[feet|inches|kilometers|meters|miles|dd]
.[minx] [miny] [maxx] [maxy]
/
)开始。取值: [path/filename.ext
。/
)开始。取值: [path/filename.ext]
。例子:
# =======================================================
# General Settings of the MapFile:
# NAME: Name of the Map [keep short!]
# EXTENT of the Map: minY minY maxX maxY
# STATUS: normally on, just use for testing
# SHAPEPATH: Path to the root dir of the data
# =======================================================
NAME "hangzhou"
UNITS METERS
EXTENT 745000 156000 758000 165000
STATUS ON
FONTSET d:/mapserver/sym_fonts/fonts.txt
SYMBOLSET d:/mapserver/sym_fonts/shade.sym
SHAPEPATH d:/gis_data/hangzhou/
例子:
# ======================================================= # General
Output Settings of the MapFile:
# OUTPUTFORMAT specifications
# SIZE of the output map in pixel
# WEB: output location definition
# QUERYMAP: highlight color of selected objects
# =======================================================
IMAGETYPE PNG
SIZE 600 518
WEB
IMAGEPATH "/home/gronline/mapimage/"
IMAGEURL "/mapimage/"
END
QUERYMAP
COLOR 255 0 0
STYLE hilite
END
在 MapFile 文件中可以定义以下组件:
图 1 鹰眼图示例
比例尺工具条
例子:
# ================================================================
# Components: Reference Map, Legend, Scale Bar
# ================================================================
# ------------------------------------
# Reference Map Definition
# ------------------------------------
REFERENCE
IMAGE images/overview_wormerl.png
EXTENT 114052 499083 124436 505124
STATUS ON
COLOR -1 -1 -1
OUTLINECOLOR 255 0 0
SIZE 150 130
END
# ------------------------------------ # Legend Definition
# ------------------------------------
LEGEND
STATUS embed
POSITION ur
END
# ------------------------------------
# Scale Bar Definition
# ------------------------------------
这部分包括了从图层生成地图的过程中投影等的说明。
CONFIG:~用来配置~PROJ.4 库中 EPSG 文件的位置。使用这个配置可以 PROJ.4 使用你指定的文件, 他的一个好处是可以避免设置对应的环境变量。如:CONFIG PROJ_LIB /tmp/proj/
。 设置其他的值将会传递给 CPLSetConfigOption()
, 这样你可以控制 GDAL 和 OGR 驱动的行为。 详细信息请参考 GDAL 的文档。取值:[key] [value]
。
DATAPATTERN:This defines a regular expression to be applied
to requests to change DATA parameters via URL requests (i.e.
map_layername _data=...
). If a pattern doesn't exist then web users
can't monkey with support files via URLs. This allows you to isolate one
application from another if you desire, with the default operation being
very conservative. See also TEMPLATEPATTERN below. 取值: [regular
expression
DEBUG:对 MAP 对象启用调试。系统运行的详细信息将输出到 WEB 对象指定的 LOG 文件中。 详细信息请参考 DEBUG 部分。
IMAGECOLOR :初始化地图的颜色,如背景色。 当启用透明时 (TRANSPARENT ON),指定的颜色会被应用到透明区域。 取值: [r] [g] [b]
。
SACLE:Computed scale of the map。通常在程序中而不是在 MapFile 中使用。
TEMPLATEPATTERN:This defines a regular expression to be applied to
requests to change TEMPLATE parameters via URL requests
(i.e. map_layername_template=...
). If a pattern doesn't exist then web users
can't monkey with support files via URLs. This allows you to isolate one
application from another if you desire, with the default operation being
very conservative. See also DATAPATTERN above.
取值: [regular expression]
一般考虑在自定义输出格式时,需要使用 IMAGETYPE 关键词,OUTPUTFORMAT 对象 仅当你需要改变默认的输出格式时才设定,在进行设置前你应参考一下内容:
1. 图像大小对图像的表现有很大的影响(生成图像、图像传输需要的时间)。使用 256 色模式比使用 RGB 模式生成的图像要小。1. 根据数据的不同,你应考虑使用不同的位深(color depth),比如你使用的是卫星影像或是航拍影像,你应该使用 RGB 模式生成图像。 在这种情况下使用 JPEG 生成的图像比使用 PNG24 生成的图像小得多。1. 使用 JPEG 输出时,你可以使用 QUALITY 选项来减小图像大小。1. 使用 GD 或 AGG 图像库。
GD 是一个动态创建图像的开源库。GD 可以创建 PNG、JPEG、GIF 等格式的图像,GD 原始支持生成 GIF 图像。但是,自从被 Unisys 收购后,它非正式地支持” Graphics Draw”。
Anti-Grain Geometry(AGG)是一个使用 C++开发的高质量二维图像渲染库。它具有抗锯齿和 sub-pixel 分辨率。这样就可以创建高质量的图像。MapServer5.0 版本及其高版本支持 AGG。对于同一个 MapFile,可以使用 AGG 进行渲染,也可以使用 GD。
图 2 AGG 处理的图像
这部分将说明怎样定义和选择输出格式 OUTPUTFORMAT
。一个 MapFile 种可以定义一到多个 OUTPUTFORMAT 对象,支持的输出格式包括 PNG、GIF、JPEG、GeoTiff、 Flash 等。
Flash(swf)需要 MING 库的支持。
1. NAME:MapFile 中 IMAGETYPE 中使用的输出格式的名称。取值:[name]
。1. DRIVER:生成对应格式输出的驱动名称。如果没过驱动支持多种格式,那么其格式的定义是固定的。 如 GD 的驱动名称可能是 GD/Gif
, GD/PNG
, GD/WBMP
and GD/JPEG
;
Flasf 的驱动名称是 SWF。 GDAL 的驱动名称如 GDAL/GTiff。 PNG, JPEG,GIF 可以使用 GDAL 或 GD 生成(GD 的效率更高)。取值: [name]
1. IMAGEMODE:生成输出图像的图像模式。并不是所以的非栅格格式的图像都与 Flash 一样。 并不是所有支持的格式都有所有的组合情况。例如。GD/GIF 只支持 PC256。
1. PC256:~使用~256 色生成一个假彩色图像(MapServer 的传统模式)
1. RGB:以 24 位 Reb/Green/Blue 模式渲染图像。支持所以的颜色但是不支持透明。
1. RGBA:以 24 位 Reb/Green/Blue/Alpha 模式渲染图像。支持所以的颜色并支持透明。
1. INT16:以 16 为 Integer(整数)位深来渲染单波段数据。当前仅对使用 GDAL 的栅格图像和 WMS 图层有效。
1. FLOAT32:~以~32 为 Float(浮点数)位深来渲染单波段数据。 当前仅对使用 GDAL 的栅格图像和 WMS 图层有效。 取值:\[PC256/RGB/RGBA/INT16/FLOAT32\]
[type]
.例子:
MIMETYPE "application/x-shockwave-flash"
MIMETYPE "application/x-pdf"
MIMETYPE "image/gif"
MIMETYPE "image/jpeg" MIMETYPE "image/png"
EXTENSION:生成对应文件类型文件的后缀,如.png、.gif 等。取值: [type]
。
TRANSPARENT:使用这个参数来表明是否对这种格式的图像启用透明。 注意:透明在 IMAGEMODE 为 RGB 时无法使用,并不是所有的格式都支 持透明。 当使用透明时,一个 8 位的假彩色图像在透明区域被生成, 所以以这种颜色填充其他地图部分也将会是透明的,故应使用一个为适应的颜色做为背景色。
- GD/JPEG:"QUALITY=n"选项可以用来设置JPEG 图像的生成质量,取值范围 0-100
- GD/PNG:"INTERLACE=[ON/OFF]",设置是否隔行渲染图像。
- GDAL/GIF:"INTERLACE=[ON/OFF]",设置是否隔行渲染图像。
- GDAL/GTiff:~支持的参数如下~
- TILED=YES,
- BLOCKXSIZE=n,
- BLOCKYSIZE=n,
- INTERLEAVE=[PIXEL/BAND],
- COMPRESS=[NONE,PACKBITS,JPEG,LZS,DEFAULT]
[option]
。 如果定义的 OUTPUTFORMAT 在 MapFile 中没有定义,那么程序将隐式使用。以下的定义:
AGG 库相关:
OUTPUTFORMAT
NAME 'AGG_PNG'
DRIVER AGG/PNG
IMAGEMODE RGB
FORMATOPTION "QUANTIZE_FORCE=ON"
FORMATOPTION "QUANTIZE_DITHER=OFF"
FORMATOPTION "QUANTIZE_COLORS=256"
END
OUTPUTFORMAT
NAME 'AGG_JPEG'
DRIVER AGG/JPEG
IMAGEMODE RGB
FORMATOPTION "QUALITY=100"
END
GD Graphics 库相关:
OUTPUTFORMAT
NAME **gif**
DRIVER "GD/GIF"
MIMETYPE "image/gif"
IMAGEMODE PC256
EXTENSION "gif"
END
OUTPUTFORMAT
NAME **png**
DRIVER "GD/PNG"
MIMETYPE "image/png"
IMAGEMODE PC256
EXTENSION "png"
END
OUTPUTFORMAT
NAME **png24**
DRIVER "GD/PNG"
MIMETYPE "image/png"
IMAGEMODE RGB
EXTENSION "png"
END
OUTPUTFORMAT
NAME **jpeg**
DRIVER "GD/JPEG"
MIMETYPE "image/jpeg"
IMAGEMODE RGB
EXTENSION "jpg"
END
OUTPUTFORMAT
NAME **wbmp**
DRIVER "GD/WBMP"
MIMETYPE "image/wbmp"
IMAGEMODE PC256
EXTENSION "wbmp"
END
OUTPUTFORMAT
NAME **swf**
DRIVER "SWF"
MIMETYPE "application/x-shockwave-flash"
EXTENSION "swf" IMAGEMODE PC256
FORMATOPTION "OUTPUT\_MOVIE=SINGLE"
END
OUTPUTFORMAT
NAME **GTiff**
DRIVER "GDAL/GTiff"
MIMETYPE "image/tiff"
IMAGEMODE RGB
EXTENSION "tif"
END
定义了一个 WEB 接口运行时的参数。以 WEB
开始, 以 END
结束。
/
开始。取值: [path]
[url|virtual directory]
[url]
[url]
[filename]
[double]
。[file|url]
[double]
。[file|url
] 。[file|url]
。[filename]
[filename]
METADATA: 使用此标识可以存储任意的键值对。经常在配置 OGC WMS 时使用。在创建模版时,它也是很灵活的,这里输入的任意内容都可以 通过模版变迁获得。例子:
METADATA title “Map of China” autor “YanMing” END
例子:
WEB
IMAGEPATH "f:/mapserver/mapimages/"
IMAGEURL "/mapimages/"
ERROR http://www.mapserver.ch/mapserver/ms_error.htm
EMPTY http://www.mapserver.ch/mapserver/ms_empty.htm
LOG f:/mapserver/logs/mapserver.log
END
定义查询结果的渲染方式
[r] [g] [b]
[x] [y]
STYLE:设置查询到得地图的现实方式。没有被选择的地图或地图部分不被处理。
取值: [normal|hilite|selected]
例子:
QUERYMAP
COLOR 255 0 0
STYLE hilite
END
是一个显示主窗口中地图位置的预览图。
以 REFERENCE 开始,以 END 结束。支持三种类型的 reference map。最常用 的是在预览图中显示正在进行交互的地图的范围。也可以把 reference map 作为查询的一部分。点查询时会在查询的点上生成一个图标(an image with a marker); 面查询会将查询出的区域加亮显示;给予 feature 的查询将会显示被选中的部分。
例子:
# ------------------------------------
# Reference Map Definition
# ------------------------------------
REFERENCE
IMAGE images/overview\_wormerl.png
EXTENT 114052 499083 124436 505124
STATUS ON
COLOR -1 -1 -1
OUTLINECOLOR 255 0 0
SIZE 150 130
END
定义图例文件的生产方式,CLASS 对象为每个独立的突出创建对应的图例组件。以 LEGEND 开始,以 END 结束。图例图像的大小在创建前不未知的,所以不要在模版文件的 <img>
标签中硬编码图像的宽和高。
例 1:
# ------------------------------------
# Legend Definition
# ------------------------------------
LEGEND
STATUS embed
POSITION ur
END
这个图例是自动为所有图层创建的,图例包含图层 NAME。
例 2:
LAYER
NAME "Restaurants"
STATUS ON
TYPE POINT
DATA "restaurants.shp"
CLASS
NAME "Restaurants"
COLOR 255 127 127
SIZE 14
SYMBOL "restaurants"
END
END
这个图例将创建一个带有“restaurants”符号和 restaurants 文字的图例。
如下图:
3.5 版本以上的 MapServer 可以使用模版文件来生成图例。在 MapFile 文件中使用 TEMPLATE 参数来启用基于模版的图例生成方式。设置 TEMPLATE 文件后,该文件将替换 main HTML 文件中的[legend]标签所指代的内容。模版文件必须以.html 作为扩展名。
HTML 图例模版文件包含下面标签中的 0 个或一个,程序将使用对应的标签
生成图例:
\[leg\_group\_html\] ... \[/leg\_group\_html\]
\[leg\_layer\_html <OPTIONAL PARAMS>\] ... \[/leg\_layer\_html\]
\[leg\_class\_html <OPTIONAL PARAMS>\] ... \[/leg\_class\_html\]
图例文件中除了上面标签对以外的任何内容将被忽略
1) GROUP block 标签: [leg_group_html]...[/leg_group_html]
在一组图层中使用此标签的 HTML 块是,图层将会在图例中出现。当使用 [leg_group_html]
标签后,那些不属于任何组(MapFile 中没有设置 LAYER GROUP) 的图层的样式也不会在图例中显示。组的列表由 order_metadata
决定,稍后对其进行解释。
[leg_group_html]块中可以出现的标签:
[leg_group_name]
组的名称 [layer_status]
组中第一个图层的状态 [leg\_icon width=<optional\_width> height=<optional\_height>\]
图例的图标,[leg_icon] 是图标的 URL。 metadata name=<metadata_field_to_display>]
返回指定的元数据 例子:显示图层组
[leg_group_html]
<tr><td colspan=2><b>[leg_group_name]</b></td></tr>
[/leg_group_html]
2) LAYER block 标签:[leg_layer_html <OPTIONAL PARAMS>] ... [/leg_layer_html] 不设置此~标签时,将不显示任何~layer header.
可选参数如下:
l order_metadata = <field_to_order_by> 可以使用<field_to_order_by>
的值来控制图例中图层的显示顺序以及可见性。
<field_to_order_by>的值大于零时,按这个值排序,如果两个图层的
<field_to_order_by>的值相同,这时使用 MAP LAYER 的顺序。<field_to_order_by>的值小于零时将不在图例中显示。
l opt_flag = <bit_mask> 控制图层的显示过程。取值如下:
1. :out of Scale 时仍显示图例(默认为 out of Scale 时不显示图例)
2. :图层状态为 OFF 时仍显示对应的图例(默认时 STATUS 为 OFF 时不显示对应的图例)。
4. :图层类型为 QUERY 时仍显示图例(默认时 TYPE 为 QUERY 时不显示)
8. :~图层类型为~ANNOTATION 时仍显示图例(默认时 TYPE 为 ANNOTATION 时不显示图例)例子:opt\_flag=12 意思是显示所有的~图层类型,包括~QUERY 和 ANNOTATION.(4+8)
[leg_layer_html]块中可以出现的标签~如下:~
a) [leg_layer_name] 返回图层名称的值
b) [leg_icon width=<option_width> height=<option_height>] 返回图 例图标的 URL
c) [metadata name=<metadata_field_to_display>] 返回指定的元数据值和 WEB 的元数据例子:显示带有 href 链接的图层标题
[leg_layer_html order_metadata=WMS_ORDER visibility_flag=15]
<a href="[leg_layer_name]">[metadata name=WMS_TITLE]</a><BR> [/leg_layer_html]
3) CLASS block 标签:[leg_class_html <OPTIONAL PARAMS>] ... [/leg_class_html]
如果不设置将不显示任何样式
NAME 为 NULL 的 CLASS 将不显示
可选参数:
l opt_flag = <bit_mask> 控制图层的显示过程。取值如下:
- 1 :out of Scale 时仍显示图例(默认为 out of Scale 时不显示图例)
- 2 :图层状态为 OFF 时仍显示对应的图例(默认时 STATUS 为 OFF 时不显示对应的图例)。
- 4 :图层类型为 QUERY 时仍显示图例(默认时 TYPE 为 QUERY 时不显示)
- 8 :图层类型为 ANNOTATION 时仍显示图例(默认时 TYPE 为 ANNOTATION 时不显示图例)
例子: opt_flag=12
意思是显示所有的图层类型,包括 QUERY 和 ANNOTATION.(4+8)
[leg_class_html]标签下可以使用的标签:
[leg_class_name] CLASS NAME 的值
[leg_class_title] CLASS TITLE 的值
[leg_icon width=<option_width> height=<option_height>] 返回图例图标的 URL
[metadata name=<metadata_field_to_display>] 返回指定的元数据值
和 WEB 的元数~据~
例子:
[leg_class_html opt_flag=15]
<img src=[leg_icon]> [leg_class_name]<br>
[/leg_class_html] 4) CONDITIONAL text
标签:
[if
name=<field_to_check> oper=<eq|neq|isset|isnull>
value=<to_compare_with_field>]
...
[/if]
[if]标签可以在[leg_*_html]标签中,推荐嵌套使用。参数 oper 的值可以使 eq(等于)、neq(不等于)、isset、isnull。默认为 equal。
这是一种另外的创建图例的方式。预先处理好,使用 HTML、PHTML、PHP 等。
例子:
SCALEBAR 定义了地图比例尺的生产方式。以SCALEBAR 开始,以 END 结束。图例图像的大小在创建前不未知的,所以不要在模版文件的<img>标签中硬编码图像的宽和高。
注意:当前无法使用 TrueType 类型的字体。
例 1:
# ------------------------------------
# Scale Bar Definition - STYLE 0
# ------------------------------------
SCALEBAR
INTERVALS 5
UNITS kilometers
OUTLINECOLOR 0 0 0
STYLE 0
STATUS embed
LABEL
SIZE small
COLOR 0 0 0
END
END
图例条如下:
例 2:
# ------------------------------------
# Scale Bar Definition - STYLE 1
# ------------------------------------
SCALEBAR
INTERVALS 5
UNITS meters
STYLE 1
STATUS embed
LABEL
SIZE small
COLOR 0 0 0
END
END
图例条如下: