【geoserver】使用参数化的方法实现动态样式

geoserver动态样式

简介

geoserver支持设置动态样式。将样式(sld)中需要经常变化的值参数化,便可以在调用时通过传参来改变。
比如可以将颜色参数化,便可以在调用时传入色值来修改渲染出来的效果。
本例中的geoserver版本:2.20.3。
官网中说2.0.2以上版本支持该方法。

参数化语法

可以通过env函数设置参数,语法如下:

<ogc:Function name="env">
   <ogc:Literal>color</ogc:Literal>
</ogc:Function>

也可以设置默认值:

<ogc:Function name="env">
   <ogc:Literal>color</ogc:Literal>
   <ogc:Literal>#ff0000</ogc:Literal>
</ogc:Function>

实例

下面是一个完整的sld文件

<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
  xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
  xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <NamedLayer>
    <Name>shili</Name>
    <UserStyle>
      <Title>shili</Title>
      <FeatureTypeStyle>
        <Rule>
          <Title>canshuhua</Title>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">
                <ogc:Function name="env">
                  <ogc:Literal>fillcolor</ogc:Literal>
                  <ogc:Literal>#00ffff</ogc:Literal>
               </ogc:Function>
              </CssParameter>
              <CssParameter name="fill-opacity">
                <ogc:Function name="env">
                  <ogc:Literal>fillopacity</ogc:Literal>
                  <ogc:Literal>0.5</ogc:Literal>
               </ogc:Function>
              </CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">
                <ogc:Function name="env">
                  <ogc:Literal>strokecolor</ogc:Literal>
                  <ogc:Literal>#00ffff</ogc:Literal>
               </ogc:Function>
              </CssParameter>
              <CssParameter name="stroke-width">
                <ogc:Function name="env">
                  <ogc:Literal>strokewidth</ogc:Literal>
                  <ogc:Literal>1</ogc:Literal>
               </ogc:Function>
              </CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

这个实例中,我把fillfill-opacitystrokestroke-width等四个属性做了参数化,并且分别设置了默认值。
默认效果如下:
在这里插入图片描述
调用时,如果在url后拼接上如下内容:

&env=fillcolor:%23ff0000;fillopacity:0.3;strokecolor:%23ff0000;strokewidth=2

注意:http需要将特殊字符进行转义,不然无法正常加载;#号对应的是 %23
动态参数效果如下:
在这里插入图片描述

参考

GeoServer官网-用户手册:Variable substitution in SLD

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值