在这个例子中,该图像生成到这个URL连接的源 <img>
标签:
http://webgis.cn/cgi-bin/mapserv?map=/owg/mfa2.map&layer=world-country&layer=country-line&mode=map
多数传统 MapServer 例子都会这样展示。
这个例子与前面的稍有不同,多边形的颜色进行了修改。
首先看一下这个例子使用的MapFile (mfa2.map
),这个 Mapfile 定义了两个图层:
01 MAP
02 IMAGETYPE "PNG"
03 EXTENT -180 -90 180 90
04 SIZE 600 300
05 SHAPEPATH "/gdata"
06 IMAGECOLOR 255 255 255
07 LAYER
08 NAME "world-country"
09 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
31 END
重要的是要记住,MapServer的渲染层是按照他们在mapfile中指定的顺序。Mapfile 中的最后一层是地图渲染结果的顶层,在前面的所有层的上面来构建地图。这意味着,Mapfile 中早一些显示的细节(即,在地图图像中的较低层)可能会被遮住。当渲染多边形层时这是最重要的,因为多边形可以用一个指定的颜色填充。如果地图服务器渲染点层(即,例如,城市的位置),然后渲染状态代表一个多边形层,城市将不可见,除非指定多边形层的颜色是透明的。这个问题很容易补救,将多边形层定义在前面。也可以通过一系列的线(即一个型线层)渲染多边形。由于一条线是一维的,没有要填充的区域,所以下面层的细节仍然是可见的。无填充颜色时,指定颜色为: -1,-1,-1
,也可以达到透明度的效果。
MapFile 的结构看起来如下:
MAP
LAYER
CLASS
STYLE
LAYER
CLASS
STYLE
与前面的 Mapfile 相比,变动如下:
12 | CLASS | 12 | CLASS | ||
n | 13 | NAME "World Countries" | n | 13 | NAME "States" |
14 | STYLE | 14 | STYLE | ||
15 | COLOR 232 232 232 | 15 | COLOR 232 232 232 | ||
t | t | 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 | ||||
16 | OUTLINECOLOR 32 32 32 | 27 | COLOR 132 132 32 | ||
17 | END | 28 | END |
在这里,将原有的层分为两层。在第一层仍然是一个多边形层,但样式中不再有 OUTLINECOLOR
属性。第二个图层的 TYPE
是 LINE
,颜色的值与在第一个例子中的 OUTLINECOLOR
的颜色不同。这样会生成与第一个示例略有差别的图像。
这里解释一下为什么要这样处理。如果我们继续添加态层的顶部上的层,轮廓最有可能被掩盖了这些层。为了能够看到国界线,添加其他层,我们必须分离国界线层从状态多边形层,并把它放在其他的其他层的顶部。如何定义/添加图层是有顺序的,后面会继续说明。这里只需要按照“后来者居上”(后面定义的图层会显示在上方)记住即可。