2.8. 地图中的注记¶
生成地图时,MapServer会自动执行多个任务。它可以注释特征并防止相邻尺寸之间的冲突,它提供位图和TrueType字体的使用。
2.8.1. 查看示例¶
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
文件的更改如下:
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
指定阴影的大小。该值对应于X
和Y
。因此,2
表示两个像素宽乘两个像素高。
TYPE
在标签对象中,类型指定要使用的字体类型,有TrueType或Bitmap(内置字体)可供选择,可选择TRUETYPE
。
FONT
如果指定为TrueType,则需要指定要使用的字体。这里提到的值是“alias”;字体列表文件中的“alias”。
SIZE
如果使用TrueType字体,则以像素为单位的值是尺寸大小。如果是位图,就说“小”或“大”之类的东西。
ANTIALIAS
这将打开或关闭Truetype抗锯齿。请记住,该值不是OPEN
或CLOSE
,但TRUE
或FALSE
。
POSITION
定位标签文本的标签点。该值是垂直和水平位置的组合。有以下选项:C
对于中心垂直对齐,U
对于上层,和``L`` 越低越好。对于水平对齐,有以下选项:C
对于中锋,L
用于左侧,以及R
这是对的。因此,要调用标注ID的中心进行文本对齐,请使用值CC
(中心-中心)。或者,如果希望它是左下角的ID,可使用LL
。另一种方法是让MapServer决定标签的最佳位置。为此,可使用AUTO
价值。
PARTIALS
告知MapServer是否生成不完整的标签文本。这里的默认设置是不生成标签文本的片段。该值为TRUE
或FALSE
。
MINDISTANCE
重复批注之间的最小距离(以像素为单位)。查看如果增大或减小该值会发生什么情况。
BUFFER
标注的填充(像素)。这用于提高可读性。4个像素的缓冲区意味着不会在彼此的4个像素上绘制任何标签。再说一次,改变一下,看看它是如何运作的。
还可以创建标注来分隔多边形层,可使用注释的数据类型来执行此操作。查看以下示例的MapFile,了解如何实现此标记,将会发现类对象中的“注解”层具有颜色参数值。-1 -1 -1
。负数告诉MapServer为此类提供透明颜色(不显示标注徽标)。同样,修改这些值并查看结果,以了解它如何影响地图。
2.8.3. 注释的自动优化¶
为了避免地图看起来杂乱无章,MapServer根据数据的比例优化了标注。
2.8.4. 批注处理¶
从6.2版开始,MapServer可以为标签空间中有问题的函数绘制标签线(通常在标签文本大于标记的多边形时)。此功能通过添加MS RFC 81:带引线的偏移标签来实现。此功能仅适用于多边形注释。