地图中的标注

查看示例

MapServer 有一个非常灵活的标注引擎。它支持本地的位图和TrueType字体。字体缩放使用TrueType支持。标注的角度和放置可以被定制。

下面是地图文件(xmfa4.map):

01 MAP
02     IMAGETYPE "PNG"
03     EXTENT -97.238976 41.619778 -82.122902 49.38562
04     SIZE 400 300
05     SHAPEPATH "../data"
06     IMAGECOLOR 255 255 255
07     FONTSET "../fonts/fonts.list"
08     LAYER
09         NAME "states_poly"
10         DATA "states_ugl"
11         STATUS OFF
12         TYPE POLYGON
13         CLASSITEM "CLASS"
14         LABELITEM "STATE"
15         CLASS
16             NAME "States"
17             EXPRESSION "land"
18             STYLE
19                 COLOR 232 232 232
20             END
21             LABEL
22                 COLOR 132 31 31
23                 SHADOWCOLOR 218 218 218
24                 SHADOWSIZE 2 2
25                 TYPE TRUETYPE
26                 FONT "arial-bold"
27                 SIZE 12
28                 ANTIALIAS TRUE
29                 POSITION CL
30                 PARTIALS FALSE
31                 MINDISTANCE 300
32                 BUFFER 4
33             END
34         END
35         CLASS
36             NAME "Water"
37             EXPRESSION "water"
38             STYLE
39                 COLOR 198 198 255
40             END
41         END
42     END
43     LAYER
44         NAME "states_line"
45         DATA "states_ugl"
46         STATUS OFF
47         TYPE LINE
48         CLASSITEM "CLASS"
49         CLASS
50             NAME "State Boundary"
51             EXPRESSION "land"
52             STYLE
53                 COLOR 64 64 64
54             END
55         END
56     END
57 END

带标注的 Mapfile

MapFile 结构,通过对象,看起来像这样:

                                  MAP
      (states_poly) LAYER----------|---------LAYER (states_line)
     (land) CLASS-----|-CLASS (water)        |-CLASS
        STYLE-|-LABEL   |-STYLE                |-STYLE

文件变动如下:

6    IMAGECOLOR 255 255 2556    IMAGECOLOR 255 255 255
nn7    FONTSET "../fonts/fonts.list"
7    LAYER8    LAYER
12        CLASSITEM "CLASS"13        CLASSITEM "CLASS"
nn14        LABELITEM "STATE"
13        CLASS15        CLASS
17                COLOR 232 232 23219                COLOR 232 232 232
nn20            END
21            LABEL
22                COLOR 132 31 31
23                SHADOWCOLOR 218 218 218
24                SHADOWSIZE 2 2
25                TYPE TRUETYPE
26                FONT "arial-bold"
27                SIZE 12
28                ANTIALIAS TRUE
29                POSITION CL
30                PARTIALS FALSE
31                MINDISTANCE 300
32                BUFFER 4
18            END33            END
37            STYLE52            STYLE
t38                COLOR 32 32 32t53                COLOR 64 64 64
39            END54            END

标注参数说明

在这里,我们介绍几个参数与标注对象:

FONTSET "../fonts/fonts.list"

在这里,我们指定的TrueType字体列表(或字体的完整路径集)的文件。该文件列出了每个可用字体。 请参阅文件本身和 MapFile 参考获取更多信息。FONTSET的MAP对象是一个参数。

这个文件的内容如下:

01 # This be the fonts list
02 arial                           Vera.ttf
03 arial-bold                      VeraBd.ttf
04 arial-italic                    VeraIt.ttf
05 arial-bold-italic               VeraBI.ttf
06 times                           VeraSe.ttf
07 times-bold                      VeraSeBd.ttf
08 andale-mono                     VeraMono.ttf
09 vera_sans                       Vera.ttf
10 vera_sans-bold                  VeraBd.ttf
11 vera_sans-italic                VeraIt.ttf
12 vera_sans-bold-italic           VeraBI.ttf
13 vera_sans_mono                  VeraMono.ttf
14 vera_sans_mono-bold             VeraMoBd.ttf
15 vera_sans_mono-italic           VeraMoIt.ttf
16 vera_sans_mono-bold-italic      VeraMoBI.ttf
17 vera_serif                      VeraSe.ttf
18 vera_serif-bold                 VeraSeBd.ttf
19 simsun                       simsun.ttc

LABELITEM

"STATE" 情况下,指定数据属性用于标注。 LABELITEM 是该层对象的一个参数,。

LABEL 标志着开始定义 LABEL 对象。标注对象可用于其他对象(即比例尺对象)

  • COLOR 标注内的对象,颜色指定标注文本的颜色。
  • SHADOWCOLOR 这指定的标注文字的阴影颜色。
  • SHADOWSIZE 指定阴影的大小。该值对应于在 XY 的像素的转变。因此, 2 是指由两个两个像素宽像素高。
  • TYPE 在LABEL对象,类型指定使用什么类型的字体。我们有选择的TrueType或位图(内置字体)。我们选择 TRUETYPE
  • FONT 如果指定为TrueType类型,你需要指定使用什么字体。这里所说的值是"alias";在字体列表文件中的“别名”。
  • SIZE 如果使用TrueType字体,该值的像素是尺寸大小。如果是位图,可以说像“小”或“大”的东西。
  • ANTIALIAS 这将truetype的抗锯齿开启或关闭。请记住值不是 OPENCLOSE ,而是 TRUEFALSE
  • POSITION 定位标注文本的标注点。该值是一个组合的垂直和水平位置。你有以下几种选择: C 为中心垂直对齐,U 上,和 L 为低。对于水平对齐你有以下选择:C 为中心, L 为左,右为 R 。因此,要标注文本对齐的标注ID的中心,你使用值 CC(中心 - 中心)。或者,如果你想它是在左下方的ID,你会使用 LL 。另一种方法是让MapServer的决定标注的最佳位置。对于这一点,你可以使用 AUTO 值。
  • PARTIALS 告诉MapServer是否生成不全的标注文本。这里的默认值是不产生标注文本的碎片。该值是 TRUEFALSE
  • MINDISTANCE 这是重复的标注之间的最小距离,以像素。如果你增加或减小该值,看会发生什么。
  • BUFFER 填充(像素)的标注。这是用来提高可读性。缓冲区4个像素的意思是没有标注将被绘制于彼此的四个象素。再次,改变,来看看它是如何工作的。

您还可以创建标注来分离一个多边形层。你与注释的数据类型一起做。看下面的例子的 MapFile ,看你如何实现这种标注。你会发现,类对象内“标注”层具有色彩参数值 -1 -1 -1。负数告诉MapServer的给这个类透明色(标注标识不显示)。再来一次,修改这些值并查看结果以了解它是如何影响地图的。