5.6. 使用样式层绘制地图¶
更高级的WMS使用“样式层”来描述地图,可将样式层视为由符号元素组成的透明层。地图由这些样式层按特定顺序组成,通常称为Z值顺序。用户可以通过添加或删除样式层来定义复杂或简单的地图。样式层实际上是层和样式的组合。从概念上讲,图层定义了要素流,样式定义了这些要素的符号化方式。在WMS流程中,地图的绘制样式是根据图层和样式请求参数指定的。
5.6.1. 支持命名样式¶
MapServer5.2中引入了命名样式支持。支持基于MS RFC 39:WMS/SLD命名样式的支持。
MapServer 5.2引入了使用两个新的非强制关键字,CLASSGROUP(在层级别)和GROUP在类级别将组分配给在Layer对象上定义的一系列类的可能性:
LAYER
...
CLASSGROUP "group1"
...
CLASS
NAME "name1"
GROUP "group1"
...
END
CLASS
NAME "name2"
GROUP "group2"
...
END
CLASS
NAME "name3"
GROUP "group1"
...
END
...
在渲染时,如果定义了CLASSGROUP,则只使用具有相同组名的类。基于此概念,WMS/SLD支持使用类组作为命名样式。每组类都被视为等同于一个命名样式:
The GetCapbilities request will output all the styles that are available
The GetMap request can use the STYLES parameter to specify a named style
The GetLegendGraphic can use the STYLES parameter to specify a named style
5.6.2. 示例¶
下面是一个例子:
Mapfile如下:
1MAP
2 NAME "named-style_"
3 IMAGETYPE "png24"
4 EXTENT -180 -90 180 90
5 SIZE 600 300
6 SHAPEPATH "/gdata"
7 SYMBOLSET "../symbols/symbols35.sym"
8 FONTSET "../fonts/fonts.list"
9 OUTPUTFORMAT
10 NAME "png"
11 DRIVER "AGG/PNG"
12 MIMETYPE "image/png"
13 IMAGEMODE RGB
14 EXTENSION "png"
15 FORMATOPTION "GAMMA=0.75"
16 END
17 WEB
18 IMAGEPATH "/owg/ms_tmp/"
19 IMAGEURL "/ms_tmp/"
20 METADATA
21 "wms_title" "WMS Demo Server"
22 "wms_version" "1.3.0"
23 "wms_onlineresource" "http://webgis.cn/cgi-bin/mapserv?map=/owg/mfb5.map&"
24 "wms_srs" "EPSG:4326"
25 "wms_enable_request" "*"
26 "ows_enable_request" "*"
27 "wms_feature_info_mime_type" "text/html"
28 "wms_format" "image/png"
29 END
30 END
31 PROJECTION
32 "init=epsg:4326"
33 END
34 LAYER
35 NAME "wcountry"
36 DATA "wcountry.shp"
37 STATUS OFF
38 TYPE POLYGON
39 METADATA
40 "wms_title" "world contry"
41 "wms_version" "1.3.0"
42 "wms_srs" "EPSG:4326 EPSG:3857"
43 "wms_enable_request" "*"
44 "ows_enable_request" "*"
45 "wms_format" "image/png"
46 END
47 PROJECTION
48 "init=epsg:4326"
49 END
50 CLASSGROUP "grploy"
51 CLASS
52 NAME "Poly Style 1"
53 GROUP "psty1"
54 STYLE
55 COLOR 232 232 232
56 OUTLINECOLOR 32 32 32
57 END
58 END
59 CLASS
60 NAME "Poly Style 2"
61 GROUP "psty2"
62 STYLE
63 COLOR 204 204 153
64 OUTLINECOLOR 0 255 255
65 END
66 END
67 CLASS
68 NAME "Line Style"
69 GROUP "lsty"
70 STYLE
71 OUTLINECOLOR 255 0 0
72 END
73 END
74 END
75END
使用 GetCapabilities
返回,请执行以下操作:
<Style>
<Name>group1</Name>
<Title>group1</Title>
<LegendURL width="72" height="20">
<Format>image/png</Format>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" ...
</LegendURL>
</Style>
请考虑以下示例WMS请求片段:
有三个样式层:
州:1组
州:2组
州:3组
它们是按一定的顺序堆放的。可以使用不同的样式多次绘制一个层,以达到所需的效果。下面的示例使用 casing
和 centerline
样式:
WMS本身可能不知道如何创建有意义的样式层组合,这完全取决于客户端。WMS使用名称来标识样式和层,而其他文档则引用此类命名的层和样式。这是目前WMS定义样式层的唯一方式。