WMS装饰¶
WMS装饰提供了一个框架,用于以绝对(而非空间)位置直观地注释来自WMS的图像。装饰的例子包括圆规、图例和水印。
配置¶
在 GetMap 请求时,管理员必须先配置装饰布局。这些布局存储在名为 layouts
在 地理服务器数据目录 作为XML文件,每个布局一个文件。每个布局文件必须具有扩展名 .xml
.一次布局 foo.xml
已定义,用户可以通过添加 &format_options=layout:foo
到请求参数。
布局文件遵循一个非常简单的XML结构;一个名为layout的根节点,包含任意数量的装饰元素。装饰元素的顺序是它们的绘制顺序,因此,如果它们重叠,第一个元素将出现在其他元素的下面。
每个装饰元素都有几个属性:
属性 |
意义 |
---|---|
|
要使用的装饰类型(参见 装饰类型 ) |
|
装饰锚定到的地图图像区域 |
|
装饰画离锚定点有多远 |
|
渲染装饰的最大尺寸。请注意,某些装饰可能会动态调整自身大小。 |
每个装饰元素还可以包含任意数量的选项元素,提供参数名称和值:
<option name="foo" value="bar"/>
选项解释取决于使用的装饰类型。
装饰类型¶
虽然geoserver允许通过扩展添加装饰,但默认安装中包含一组核心装饰。这些装饰包括:
这个 形象 装饰 (type="image"
)将静态图像文件覆盖到文档上。如果指定了高度和宽度,将缩放图像以适应,否则将以全尺寸显示图像。
选项名称 |
意义 |
---|---|
|
提供要绘制的图像的URL或文件路径(相对于地理服务器数据目录) |
|
一个0到100之间的数字,指示图像的不透明程度。 |
这个 鳞片动物 装饰 (type="scaleratio"
)将地图比例的文本描述覆盖到文档上。
选项名称 |
意义 |
---|---|
|
文本的背景色。支持指定为十六进制值的RGB或RGB颜色。 |
|
文本和边框的颜色。遵循bgcolor的颜色规格。 |
|
使用Java自己指定的数字格式模式 DecimalFormat 句法 |
|
用于驱动数字格式的语言(仅适用于 |
这个 标度线 装饰 (type="scaleline"
)覆盖以世界单位显示地图比例的图形。
选项名称 |
意义 |
---|---|
|
背景色,在scaleratio中使用 |
|
前景色,在scaleratio中使用 |
|
要使用的字体大小 |
|
如果设置为true,则不会绘制背景和边框(默认情况下为false) |
|
可以设置为“公制”以仅显示公制单位,“英制”以仅显示英制单位,或“两者”以同时显示两者(默认) |
这个 传奇 装饰 (type="legend"
)覆盖包含地图中各层的图例的图形。
选项名称 |
意义 |
---|---|
|
中使用的LENGING_OPTIONS列表 GetLegendGraphic |
|
值在0到1之间的图例不透明度 |
这个 text 装饰 (type="text"
)在地图顶部覆盖参数、单行文本消息。参数值可以通过 env
请求参数,和SLD环境参数一样。
选项名称 |
意义 |
---|---|
|
要显示的消息,作为纯文本或FreeMarker模板,可以使用 |
|
用于显示消息的字体名称,例如, |
|
要使用的字体大小(可以有小数),默认为12 |
|
它 |
|
如果 |
|
消息的颜色,在 |
|
邮件周围光环的半径可以是小数,默认为0。 |
|
光晕填充颜色,在 |
例子¶
布局配置文件可能如下所示:
<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>
对于默认地理服务器数据中的状态层,此布局将生成如下所示的图像。

默认状态层,与上面的装饰布局一起绘制。¶
装饰属性和选项中的表达式¶
每个装饰可以有控制其外观的选项,以及控制其位置的属性。选项和属性值通常是装饰布局中指定的静态字符串。
但是,也可以使用(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 exception : message
选项中的 text
装饰品。这一选项不能使用表达式,因为它将允许扩展和评估用户提供的自由标记模板。模板可以包含控制结构、循环和其他活动元素,因此,允许通过WMS请求提供其值被认为风险太大。