WMS装饰

WMS装饰提供了一个框架,用于以绝对(而非空间)位置直观地注释来自WMS的图像。装饰的例子包括圆规、图例和水印。

配置

GetMap 请求时,管理员必须先配置装饰布局。这些布局存储在名为 layouts地理服务器数据目录 作为XML文件,每个布局一个文件。每个布局文件必须具有扩展名 .xml .一次布局 foo.xml 已定义,用户可以通过添加 &format_options=layout:foo 到请求参数。

布局文件遵循一个非常简单的XML结构;一个名为layout的根节点,包含任意数量的装饰元素。装饰元素的顺序是它们的绘制顺序,因此,如果它们重叠,第一个元素将出现在其他元素的下面。

每个装饰元素都有几个属性:

属性

意义

type

要使用的装饰类型(参见 装饰类型

affinity

装饰锚定到的地图图像区域

offset

装饰画离锚定点有多远

size

渲染装饰的最大尺寸。请注意,某些装饰可能会动态调整自身大小。

每个装饰元素还可以包含任意数量的选项元素,提供参数名称和值:

<option name="foo" value="bar"/>

选项解释取决于使用的装饰类型。

装饰类型

虽然geoserver允许通过扩展添加装饰,但默认安装中包含一组核心装饰。这些装饰包括:

这个 形象 装饰 (type="image" )将静态图像文件覆盖到文档上。如果指定了高度和宽度,将缩放图像以适应,否则将以全尺寸显示图像。

选项名称

意义

url

提供要绘制的图像的URL或文件路径(相对于地理服务器数据目录)

opacity

一个0到100之间的数字,指示图像的不透明程度。

这个 鳞片动物 装饰 (type="scaleratio" )将地图比例的文本描述覆盖到文档上。

选项名称

意义

bgcolor

文本的背景色。支持指定为十六进制值的RGB或RGB颜色。

fgcolor

文本和边框的颜色。遵循bgcolor的颜色规格。

format

使用Java自己指定的数字格式模式 DecimalFormat 句法

formatLanguage

用于驱动数字格式的语言(仅适用于 format (使用),使用有效的Java Locale

这个 标度线 装饰 (type="scaleline" )覆盖以世界单位显示地图比例的图形。

选项名称

意义

bgcolor

背景色,在scaleratio中使用

fgcolor

前景色,在scaleratio中使用

fontsize

要使用的字体大小

transparent

如果设置为true,则不会绘制背景和边框(默认情况下为false)

measurement-system

可以设置为“公制”以仅显示公制单位,“英制”以仅显示英制单位,或“两者”以同时显示两者(默认)

这个 传奇 装饰 (type="legend" )覆盖包含地图中各层的图例的图形。

选项名称

意义

legend_options

中使用的LENGING_OPTIONS列表 GetLegendGraphic

opacity

值在0到1之间的图例不透明度

这个 text 装饰 (type="text" )在地图顶部覆盖参数、单行文本消息。参数值可以通过 env 请求参数,和SLD环境参数一样。

选项名称

意义

message

要显示的消息,作为纯文本或FreeMarker模板,可以使用 env 映射内容以展开变量

font-family

用于显示消息的字体名称,例如, Arial 默认为 Serif

font-size

要使用的字体大小(可以有小数),默认为12

font-italic

true 字体将为斜体,默认为 false

font-bold

如果 true 字体将为粗体,默认为 false

font-color

消息的颜色,在 #RRGGBB#RRGGBBAA 格式,默认为黑色

halo-radius

邮件周围光环的半径可以是小数,默认为0。

halo-color

光晕填充颜色,在 #RRGGBB#RRGGBBAA 格式,默认为白色

例子

布局配置文件可能如下所示:

<layout>
    <decoration type="image" affinity="bottom,right" offset="6,6" size="80,31">
        <option name="url" value="pbGS_80x31glow.png"/>
    </decoration>

    <decoration type="scaleline" affinity="bottom,left" offset="36,6"/>

    <decoration type="legend" affinity="top,left" offset="6,6" size="auto"/>
</layout>

对于默认地理服务器数据中的状态层,此布局将生成如下所示的图像。

../../_images/decoration.png

默认状态层,与上面的装饰布局一起绘制。

装饰属性和选项中的表达式

每个装饰可以有控制其外观的选项,以及控制其位置的属性。选项和属性值通常是装饰布局中指定的静态字符串。

但是,也可以使用(E)CQL表达式使它们成为动态的,使用 ${cql expression} 语法。表达式可以使用函数,尤其是它可以访问 env 通过请求提供的变量。

例如,此装饰布局:

<layout>
    <decoration type="scaleline" affinity="${env('sla', 'bottom,left')}">
       <option name="bgcolor" value="${env('bg', '#AAAAAA')}"/>
    </decoration>
</layout>

将使用以下内容生成比例线:

  • 浅灰色背景,其中GetMap请求不包含 bg 环境变量。

  • 红色背景,如果请求包含类似以下的env部分 &env=bg:FF0000

  • 位于右上角的比例线,如果请求包含类似 &env=sla:top,right

所有选项都允许使用表达式,其中 one notable exceptionmessage 选项中的 text 装饰品。这一选项不能使用表达式,因为它将允许扩展和评估用户提供的自由标记模板。模板可以包含控制结构、循环和其他活动元素,因此,允许通过WMS请求提供其值被认为风险太大。