2.5. 具有两个图层的静态地图¶
2.5.1. 查看示例¶
在本例中,生成的图像指向URL的来源:
http://webgis.cn/cgi-bin/mapserv?map=/owg/mfa2.map&layer=world-country&layer=country-line&mode=map
大多数传统的MapServer示例都是这样显示的。
此示例与上一个示例略有不同,在上一个示例中,已修改了多边形的颜色。
2.5.2. Mapfile描述¶
First take a look at the MapFile that this example uses mfa2.map
),
This Mapfile defines two layers:
1MAP
2 IMAGETYPE "PNG"
3 EXTENT -180 -90 180 90
4 SIZE 600 300
5 SHAPEPATH "/gdata"
6 IMAGECOLOR 255 255 255
7 LAYER
8 NAME "world-country"
9 DATA "wcountry.shp"
10 STATUS OFF
11 TYPE POLYGON
12 CLASS
13 NAME "States"
14 STYLE
15 COLOR 232 232 232
16 END
17 END
18 END
19 LAYER
20 NAME "country-line"
21 DATA "wcountry.shp"
22 STATUS OFF
23 TYPE LINE
24 CLASS
25 NAME "State Boundary"
26 STYLE
27 COLOR 132 132 32
28 END
29 END
30 END
31END
请务必记住,MapServer的渲染层是按照它们在Mapfile中指定的顺序排列的。Mapfile中的最后一层是地图渲染结果的顶层,在所有先前的层之上构建地图。这意味着 Mapfile 中先前显示的细节(即地图图像中的较低层)可能会被遮挡。这在渲染多边形层时非常重要,因为可以用指定的颜色填充多边形层。如果地图服务器渲染点图层(例如,城市的位置),则渲染状态表示多边形层,除非指定的多边形层颜色是透明的,否则城市将不可见。
通过在前面定义多边形层,可以轻松解决此问题。也可以将多边形渲染为一系列线条(即线条层)。由于线是一维的,因此没有要填充的区域,因此下面各层的细节仍然可见。如果没有填充颜色,则指定的颜色为: -1,-1,-1
,也可以达到透明的效果。
MapFile的结构如下所示:
MAP
LAYER
CLASS
STYLE
LAYER
CLASS
STYLE
与之前的Mapfile相比,更改如下:
Open the file:diff_mfa2_mfa1.html
在这里,原始层被分为两层。第一个层仍然是面层,但样式中不再有 OUTLINECOLOR
属性。第二层的 TYPE
是 LINE
,并且颜色值不同于第一示例中的 OUTLINECOLOR
,这将产生与第一个示例略有不同的图像。
2.5.3. 进一步解释¶
以下是对为什么要这样做的解释。如果我们继续在状态层的顶部添加层,轮廓最有可能被这些层遮罩。为了能够看到边界并添加其他层,必须将边界层与州多边形层分开,并将其放置在其他层的顶部。如何定义/添加层是有顺序的,稍后将对其进行说明。在这里,只需要记住根据“稍后在顶部”(稍后定义的层将显示在顶部)。