TextSymbolizer

A TextSymbolizer 将功能样式设置为 文本标签 . 文本标签可以放置在点上,也可以沿着从要标记的几何图形派生的线性路径放置。

贴标是一项复杂的工作,有效的贴标对于获得清晰、直观的地图输出至关重要。因此,SLD提供了许多选项来控制标签的放置。为了提高质量,更多的geoserver提供了额外的选项和参数。标准选项和扩展选项的用法将在以下部分中更详细地描述 标记 .

句法

A <TextSymbolizer> 包含以下元素:

Tag

必修的?

Description

<Geometry>

要标记的几何图形。

<Label>

标签的文本内容。

<Font>

标签的字体信息。

<LabelPlacement>

设置标签相对于其关联几何图形的位置。

<Halo>

在标签文本周围创建彩色背景,以提高可读性。

<Fill>

标签文本的填充样式。

<Graphic>

要在标签文本后面显示的图形。参见 图解的 内容语法。

<Priority>

冲突解决期间标签的优先级。内容可能包含 expressions . 也见 优先级标签 .

<VendorOption>

0..N

特定于地理服务器的选项。参见 标记 有关可用选项的说明。可以指定任意数量的选项。

几何图形

这个 <Geometry> 元素是可选的。如果存在,它将使用 <PropertyName> 元素。另请参见 SLD中的几何变换 用于指定几何图形的地理服务器扩展。

任何类型的几何图形都可以用 <TextSymbolizer> .对于非点几何图形,使用代表点(例如直线或多边形的质心)。

标签

这个 <Label> 元素指定将呈现为标签的文本。它允许混合类型的内容,这意味着内容可以是字符串数据和 筛选表达式 .它们被连接起来形成最终的标签文本。如果特性属性直接提供标签,则内容是单个 <PropertyName> .标签中可以包含多个属性,属性值可以由筛选器表达式和函数操作。还可以提供其他“样板文件”文本。用XML包围可以保留空白 <![CDATA[ ]]> 分隔符。

如果省略此元素,则不会呈现标签。

字体

这个 <Font> 元素指定要用于标签的字体。一套 <CssParameter> 元素指定字体的详细信息。

The name attribute indicates what aspect of the font is described, using the standard CSS/SVG font model. The content of the element supplies the value of the font parameter. The value may contain expressions.

Parameter

必修的?

Description

name="font-family"

用于标签的字体的族名称。默认为 Times .

name="font-style"

字体的样式。选项包括 normalitalic ,以及 oblique 。默认值为 normal

name="font-weight"

字体的粗细。选项包括 normalbold 。默认值为 normal

name="font-size"

字体的大小(像素)。默认为 10 .

LabelPlacement

这个 <LabelPlacement> 元素指定标签相对于要标记的几何图形的位置。有两个可能的子元素: <PointPlacement><LinePlacement> .必须仅指定其中一个。

Tag

必修的?

Description

<PointPlacement>

在单个点标记几何图形

<LinePlacement>

沿线性路径标记几何图形

PointPlacement

这个 <PointPlacement> 元素指示将标签放置在从要标记的几何图形派生的标记点上。标签相对于标签点的位置可由以下子元素控制:

Tag

必修的?

Description

<AnchorPoint>

标签边界框中与标签点对齐的位置。位置由指定 <AnchorPointX><AnchorPointY> 子元素,值在范围内 [0..1] .值可以包含 expressions .

<Displacement>

指定标签点应与原始点偏移。偏移量由指定 <DisplacementX><DisplacementY> 子元素,值以像素为单位。值可以包含 expressions . 默认是 (0, 0) .

<Rotation>

标签顺时针旋转(负值为逆时针)。值可以包含 expressions . 默认是 0 .

按该顺序应用定位点对齐、位移偏移和旋转。

LinePlacement

这个 <LinePlacement> 元素指示标签沿从要标记的几何图形派生的线性路径放置。标签相对于线性路径的位置可由以下子元素控制:

Tag

必修的?

Description

<PerpendicularOffset>

与线性路径的偏移量,以像素为单位。正值偏移到行的左侧,负值偏移到行的右侧。值可以包含 expressions . 默认是 0 .

文本沿线性路径的外观可以由供应商选项进一步控制。 followLinemaxDisplacementrepeatlabelAllGroupmaxAngleDelta .这些在 标记 .

晕圈

光环会在标签文本周围创建彩色背景,这可以提高低对比度情况下的可读性。在 <Halo> 元素有两个子元素控制光环的外观:

Tag

必修的?

Description

<Radius>

光晕半径,以像素为单位。值可以包含 expressions . 默认是 1 .

<Fill>

光晕的颜色和不透明度 CssParameter 的元素 fillfill-opacity . 见 填充 完整语法。参数值可以包含 expressions .默认值为 白色 填满 (#FFFFFF )在 100% 不透明度。

填充

The <Fill> element specifies the fill style for the label text. The syntax is the same as that of the PolygonSymbolizer 填充 element. The default fill color is black (#FFFFFF) at 100% opacity..

图解的

这个 <Graphic> 元素指定要在标签文本后面显示的图形符号(如果有)。此功能的一个典型用途是在由功能属性提供的道路编号后面显示“公路护盾”。元素内容的语法与 <PointSymbolizer> 图解的 元素。图形可由内部提供 mark symbols 或通过外部图像或SVG文件。通过使用供应商选项,可以更改它们的大小和纵横比,以匹配与其显示的文本。 图形调整大小图形边距 .

例子

以下符号取自 节中 SLD食谱 .

 1       <TextSymbolizer>
 2         <Label>
 3           <ogc:PropertyName>name</ogc:PropertyName>
 4         </Label>
 5         <Font>
 6           <CssParameter name="font-family">Arial</CssParameter>
 7           <CssParameter name="font-size">12</CssParameter>
 8           <CssParameter name="font-style">normal</CssParameter>
 9           <CssParameter name="font-weight">bold</CssParameter>
10         </Font>
11         <LabelPlacement>
12           <PointPlacement>
13             <AnchorPoint>
14               <AnchorPointX>0.5</AnchorPointX>
15               <AnchorPointY>0.0</AnchorPointY>
16             </AnchorPoint>
17             <Displacement>
18               <DisplacementX>0</DisplacementX>
19               <DisplacementY>25</DisplacementY>
20             </Displacement>
21             <Rotation>-45</Rotation>
22           </PointPlacement>
23         </LabelPlacement>
24         <Fill>
25           <CssParameter name="fill">#990099</CssParameter>
26         </Fill>
27       </TextSymbolizer>

符号标签具有来自 name 属性。字体为黑体,12磅大小,用紫色填充。标签沿下边缘居中,然后向上移动25个像素,最后逆时针旋转45度。

在渲染过程中,置换在旋转之前生效,因此25像素垂直置换本身旋转45度。

../../../_images/text_pointwithrotatedlabel.png

带旋转标签的点

可缩放字体大小

字体大小也可以根据比例分母设置,如下所示:

 1       <CssParameter name="font-size">
 2         <ogc:Function name="Categorize">
 3           <!-- Value to transform -->
 4           <ogc:Function name="env">
 5             <ogc:Literal>wms_scale_denominator</ogc:Literal>
 6           </ogc:Function>
 7           <!-- Output values and thresholds -->
 8           <!-- Ranges: -->
 9           <!-- [scale <= 300, font 12] -->
10           <!-- [scale 300 - 2500, font 10] -->
11           <!-- [scale > 2500, font 8] -->
12           <ogc:Literal>12</ogc:Literal>
13           <ogc:Literal>300</ogc:Literal>
14           <ogc:Literal>10</ogc:Literal>
15           <ogc:Literal>2500</ogc:Literal>
16           <ogc:Literal>8</ogc:Literal>
17         </ogc:Function>
18       </CssParameter>

上面的示例将根据比例分母设置以不同的大小显示文本。字体大小为 12 对于小于或等于300的比例分母,字体大小为 10 用于300-2500之间的刻度分母,字体大小为 8 刻度分母大于2500。

Next: 标记