SLD中的变量替换¶
SLD中的变量替换是一个地理服务器扩展(从2.0.2版开始),它允许将WMS请求中的值传递到SLD样式中。这允许动态设置颜色、字体、大小和筛选阈值等值。
变量在WMS中指定 GetMap
通过使用 env
请求参数后面跟着一个列表 name:value
用分号分隔的对::
...&env=name1:value1;name2=value2&...
在SLD中,使用 env
功能。函数检索当前请求中指定的替换变量值:
<ogc:Function name="env">
<ogc:Literal>size</ogc:Literal>
</ogc:Function>
可以提供默认值。如果请求中未指定变量,则将使用它:
<ogc:Function name="env">
<ogc:Literal>size</ogc:Literal>
<ogc:Literal>6</ogc:Literal>
</ogc:Function>
这个 env
函数可以在任何允许使用ogc表达式的SLD中使用。例如,它可以用于 CSSParameter
元素、大小和偏移元素以及规则筛选表达式。在某些不允许完整表达式的地方也可以接受,例如 Mark/WellKnownName
元素。
预定义变量¶
geoserver具有预定义的变量,这些变量提供有关请求输出的特定属性的信息。当SLD参数需要依赖于输出维度时,这些功能非常有用。预定义变量包括:
Name |
Type |
Description |
|
|
请求输出的地理参考范围 |
|
|
输出坐标参考系的定义 |
|
|
输出坐标参考系代码 |
|
|
输出图像的宽度(像素) |
|
|
输出图像的高度(像素) |
|
|
输出地图比例的分母 |
|
要么 |
此变量设置为 |
例子¶
以下SLD符号已在三个位置参数化,每种情况下都提供默认值:
<PointSymbolizer>
<Graphic>
<Mark>
<WellKnownName><ogc:Function name="env">
<ogc:Literal>name</ogc:Literal>
<ogc:Literal>square</ogc:Literal>
</ogc:Function>
</WellKnownName>
<Fill>
<CssParameter name="fill">
#<ogc:Function name="env">
<ogc:Literal>color</ogc:Literal>
<ogc:Literal>FF0000</ogc:Literal>
</ogc:Function>
</CssParameter>
</Fill>
</Mark>
<Size>
<ogc:Function name="env">
<ogc:Literal>size</ogc:Literal>
<ogc:Literal>6</ogc:Literal>
</ogc:Function>
</Size>
</Graphic>
</PointSymbolizer>
当WMS请求中没有提供变量时,SLD使用默认值并呈现示例 sf:bugsites
数据集如图所示:

默认呈现¶
如果更改请求以指定以下变量值:
&env=color:00FF00;name:triangle;size:12
结果是:

使用提供的变量呈现¶