2.5. 具有两个图层的静态地图

2.5.1. 查看示例

http://webgis.cn/cgi-bin/mapserv?map=/owg/mfa2.map&layer=world-country&layer=country-line&mode=map

在本例中,生成的图像指向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 属性。第二层的 TYPELINE ,并且颜色值不同于第一示例中的 OUTLINECOLOR ,这将产生与第一个示例略有不同的图像。

2.5.3. 进一步解释

以下是对为什么要这样做的解释。如果我们继续在状态层的顶部添加层,轮廓最有可能被这些层遮罩。为了能够看到边界并添加其他层,必须将边界层与州多边形层分开,并将其放置在其他层的顶部。如何定义/添加层是有顺序的,稍后将对其进行说明。在这里,只需要记住根据“稍后在顶部”(稍后定义的层将显示在顶部)。