Geoserver发布地图服务图层样式(边线颜色、线宽、线型;面填充色等)取字段值,根据字段值变化。如下图所示:
样式代码如下:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<sld:StyledLayerDescriptor version="1.0.0" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink">
<sld:NamedLayer>
<sld:Name>custom_region</sld:Name>
<sld:UserStyle>
<sld:Name>custom_region</sld:Name>
<sld:FeatureTypeStyle>
<sld:FeatureTypeName>custom_region</sld:FeatureTypeName>
<sld:Rule>
<sld:Name>custom_region</sld:Name>
<sld:Title>custom_region</sld:Title>
<sld:PolygonSymbolizer>
<sld:Fill>
<sld:CssParameter name="fill">
<ogc:PropertyName>fillcolor</ogc:PropertyName></sld:CssParameter>
<sld:CssParameter name="fill-opacity">
<ogc:PropertyName>fillopacit</ogc:PropertyName></sld:CssParameter>
</sld:Fill>
<!--<sld:Stroke>
<sld:CssParameter name="stroke">
<ogc:PropertyName>linecolor</ogc:PropertyName></sld:CssParameter>
<sld:CssParameter name="stroke-width">
<ogc:PropertyName>linesize</ogc:PropertyName></sld:CssParameter>
<sld:CssParameter name="stroke-opacity">1</sld:CssParameter>
<ogc:Function name="if_then_else">
<ogc:Function name="greaterThan">
<ogc:PropertyName>linetype</ogc:PropertyName>
<ogc:Literal>1</ogc:Literal>
</ogc:Function>
<ogc:Literal>
<CssParameter name="stroke-dashoffset">10</CssParameter>
<CssParameter name="stroke-dasharray">20 20</CssParameter>
</ogc:Literal>
<ogc:Literal>
<CssParameter name="stroke-dashoffset">0</CssParameter>
<CssParameter name="stroke-dasharray">10 0</CssParameter>
</ogc:Literal>
</ogc:Function>
</sld:Stroke>-->
<!--<sld:Stroke>
<sld:CssParameter name="stroke">
<ogc:PropertyName>linecolor</ogc:PropertyName>
</sld:CssParameter>
<sld:CssParameter name="stroke-width">
<ogc:PropertyName>linesize</ogc:PropertyName>
</sld:CssParameter>
<sld:CssParameter name="stroke-opacity">1</sld:CssParameter>
<CssParameter name="stroke-dashoffset">
<ogc:Function name="Interpolate">
<ogc:PropertyName>linetype</ogc:PropertyName>
<ogc:Literal>1</ogc:Literal>
<ogc:Literal>0</ogc:Literal>
<ogc:Literal>2</ogc:Literal>
<ogc:Literal>10</ogc:Literal>
</ogc:Function>
</CssParameter>
<CssParameter name="stroke-dasharray">
<ogc:Function name="Interpolate">
<ogc:PropertyName>linetype</ogc:PropertyName>
<ogc:Literal>1</ogc:Literal>
<ogc:Literal>10 0</ogc:Literal>
<ogc:Literal>2</ogc:Literal>
<ogc:Literal>20 20</ogc:Literal>
</ogc:Function>
</CssParameter>
</sld:Stroke>-->
<sld:Stroke>
<sld:CssParameter name="stroke">
<ogc:PropertyName>linecolor</ogc:PropertyName>
</sld:CssParameter>
<sld:CssParameter name="stroke-width">
<ogc:PropertyName>linesize</ogc:PropertyName>
</sld:CssParameter>
<sld:CssParameter name="stroke-opacity">1</sld:CssParameter>
<CssParameter name="stroke-dashoffset">
<ogc:Function name="if_then_else">
<ogc:Function name="equalTo">
<ogc:PropertyName>linetype</ogc:PropertyName>
<ogc:Literal>1</ogc:Literal>
</ogc:Function>
<ogc:Literal>0</ogc:Literal>
<ogc:Literal>10</ogc:Literal>
</ogc:Function>
</CssParameter>
<CssParameter name="stroke-dasharray">
<ogc:Function name="if_then_else">
<ogc:Function name="equalTo">
<ogc:PropertyName>linetype</ogc:PropertyName>
<ogc:Literal>1</ogc:Literal>
</ogc:Function>
<ogc:Literal>10 0</ogc:Literal>
<ogc:Literal>20 20</ogc:Literal>
</ogc:Function>
</CssParameter>
</sld:Stroke>
</sld:PolygonSymbolizer>
</sld:Rule>
</sld:FeatureTypeStyle>
</sld:UserStyle>
</sld:NamedLayer>
</sld:StyledLayerDescriptor>