2.8. 地图中的注记

生成地图时,MapServer会自动执行多个任务。它可以注释特征并防止相邻尺寸之间的冲突,它提供位图和TrueType字体的使用。

2.8.1. 查看示例

http://webgis.cn/cgi-bin/mapserv?map=/owg/mfa4.map&layer=states_poly&layer=states_line&mode=map

MapServer有一个非常灵活的注释引擎。它支持本地位图和TrueType字体。字体缩放使用TrueType支持,尺寸的角度和位置可以自定义。

以下是Mapfile(mfa4.map):

 1MAP
 2    IMAGETYPE "PNG"
 3    EXTENT -180 -90 180 90
 4    SIZE 600 300
 5    SHAPEPATH "/gdata"
 6    IMAGECOLOR 255 255 255
 7    FONTSET "../fonts/fonts.list"
 8    LAYER
 9        NAME "states_poly"
10        DATA "wcountry.shp"
11        STATUS OFF
12        TYPE POLYGON
13        LABELITEM "NAME"
14        CLASS
15            NAME "States"
16            STYLE
17                COLOR 232 232 232
18            END
19            LABEL
20                COLOR 132 31 31
21                SHADOWCOLOR 218 218 218
22                SHADOWSIZE 2 2
23                TYPE TRUETYPE
24                FONT "arial-bold"
25                SIZE 8
26                ANTIALIAS TRUE
27                POSITION CC
28                PARTIALS FALSE
29                MINDISTANCE 300
30                BUFFER 4
31            END
32        END
33    END
34    LAYER
35        NAME "states_line"
36        DATA "wcountry.shp"
37        STATUS OFF
38        TYPE LINE
39        CLASS
40            NAME "State Boundary"
41            STYLE
42                COLOR 132 132 32
43            END
44        END
45    END
46END

带注记的 Mapfile

文件包含的字体别名字体位置由 FONTSET 关键字分配。

要在shapefile中使用属性标注每个城区,请将名称确定为的值 LABELITEM 关键字。渲染国家/地区要素时,要素的值 NAME 属性将用于创建标签。

如果想看shapefile,有几种方法。可以在Excel或其他可以读取DBF文件的电子表格程序中打开关联的DBF文件,可以看到要素属性值。如果只想找出属性的名称,可以使用实用程序dbfinfo,它是shapelib库的一部分。此外,该应用程序 ogrinfo 提供地理信息以及要素值。

每个地区将使用027至030中指定的标签参数进行标签。Label对象以关键字Label开始,以关键字End结束(第030行)。LABELITEM值设置为‘NAME’的Layer对象。选择属性名称作为标签文本的来源。每个标签都将绘制为黑色,并且其大小将很小。除了小号,还可以选择小号、中号、大号或大号。

按对象划分的MapFile结构如下所示:

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

文件的更改如下:

Open the file:diff_mfa4_mfa3.html

2.8.2. 批注参数说明

在这里,我们介绍几个参数和尺寸对象:

FONTSET "../fonts/fonts.list"

在这里,我们为TrueType字体列表(或字体的完整路径集)指定文件。该文件列出了每种可用的字体。有关详细信息,请参见文件本身和《 Mapfile 参考》。FONTSET的map对象是一个参数。

此文件的内容如下:

 1# This be the fonts list
 2arial                           Vera.ttf
 3arial-bold                      VeraBd.ttf
 4arial-italic                    VeraIt.ttf
 5arial-bold-italic               VeraBI.ttf
 6times                           VeraSe.ttf
 7times-bold                      VeraSeBd.ttf
 8andale-mono                     VeraMono.ttf
 9vera_sans                       Vera.ttf
10vera_sans-bold                  VeraBd.ttf
11vera_sans-italic                VeraIt.ttf
12vera_sans-bold-italic           VeraBI.ttf
13vera_sans_mono                  VeraMono.ttf
14vera_sans_mono-bold             VeraMoBd.ttf
15vera_sans_mono-italic           VeraMoIt.ttf
16vera_sans_mono-bold-italic      VeraMoBI.ttf
17vera_serif                      VeraSe.ttf
18vera_serif-bold                 VeraSeBd.ttf
19simsun                       simsun.ttc

LABELITEM

"STATE" 情况下,指定的数据属性用于批注。 LABELITEM 是Layer对象的参数。

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

  • COLOR 对象,则指定详图索引文本的颜色。

  • SHADOWCOLOR 指定标注文字的阴影颜色。

  • SHADOWSIZE 指定阴影的大小。该值对应于 XY 。因此, 2 表示两个像素宽乘两个像素高。

  • TYPE 在标签对象中,类型指定要使用的字体类型,有TrueType或Bitmap(内置字体)可供选择,可选择 TRUETYPE

  • FONT 如果指定为TrueType,则需要指定要使用的字体。这里提到的值是“alias”;字体列表文件中的“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个像素的缓冲区意味着不会在彼此的4个像素上绘制任何标签。再说一次,改变一下,看看它是如何运作的。

还可以创建标注来分隔多边形层,可使用注释的数据类型来执行此操作。查看以下示例的MapFile,了解如何实现此标记,将会发现类对象中的“注解”层具有颜色参数值。-1 -1 -1 。负数告诉MapServer为此类提供透明颜色(不显示标注徽标)。同样,修改这些值并查看结果,以了解它如何影响地图。

2.8.3. 注释的自动优化

为了避免地图看起来杂乱无章,MapServer根据数据的比例优化了标注。

http://webgis.cn/cgi-bin/mapserv?map=/owg/mfs2.map&layer=states_poly&layer=states_line&mode=map

2.8.4. 批注处理

从6.2版开始,MapServer可以为标签空间中有问题的函数绘制标签线(通常在标签文本大于标记的多边形时)。此功能通过添加MS RFC 81:带引线的偏移标签来实现。此功能仅适用于多边形注释。

http://webgis.cn/cgi-bin/mapserv?map=/owg/mfs8.map&layer=states_poly&layer=states_line&mode=map

Open the file:diff_mfs8_mfs2.html