项目场景:
项目中使用了Geoserver的发布的wms服务,这种服务无法在前端渲染,只能在服务器指定style,并且需要根据图层属性来进行显示不同颜色,这就需要编写sld文件两种方式:
第一种是使用ogc:Filter,例子如下
<?xml version="1.0" encoding="UTF8"?>
<StyledLayerDescriptor version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld 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>Attribute-based point</Name>
<UserStyle>
<Title>GeoServer SLD Cook Book: Attribute-based point</Title>
<FeatureTypeStyle>
<Rule>
<Name>1</Name>
<Title>1</Title>
<ogc:Filter>
<ogc:PropertyIsLike wildCard="*" singleChar="?" escape="\">
<ogc:PropertyName>danger_level</ogc:PropertyName>
<ogc:Literal>重大风险*</ogc:Literal>
</ogc:PropertyIsLike>
</ogc:Filter>
<PointSymbolizer>
<Graphic>
<Mark>
<WellKnownName>circle</WellKnownName>
<Fill>
<CssParameter name="fill">#ff3f3f</CssParameter>
</Fill>
</Mark>
<Size>6</Size>
</Graphic>
</PointSymbolizer>
</Rule>
<Rule>
<Name>2</Name>
<Title>2</Title>
<ogc:Filter>
<ogc:PropertyIsLike wildCard="*" singleChar="?" escape="\">
<ogc:PropertyName>danger_level</ogc:PropertyName>
<ogc:Literal>较大风险*</ogc:Literal>
</ogc:PropertyIsLike>
</ogc:Filter>
<PointSymbolizer>
<Graphic>
<Mark>
<WellKnownName>circle</WellKnownName>
<Fill>
<CssParameter name="fill">#e7b300</CssParameter>
</Fill>
</Mark>
<Size>6</Size>
</Graphic>
</PointSymbolizer>
</Rule>
<Rule>
<Name>4</Name>
<Title>4</Title>
<ogc:Filter>
<ogc:PropertyIsLike wildCard="*" singleChar="?" escape="\">
<ogc:PropertyName>danger_level</ogc:PropertyName>
<ogc:Literal>一般风险*</ogc:Literal>
</ogc:PropertyIsLike>
</ogc:Filter>
<PointSymbolizer>
<Graphic>
<Mark>
<WellKnownName>circle</WellKnownName>
<Fill>
<CssParameter name="fill">#0dc48a</CssParameter>
</Fill>
</Mark>
<Size>6</Size>
</Graphic>
</PointSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
第二种是使用 <ogc:Function name=“Recode”>,例子如下
<?xml version="1.0" encoding="UTF8"?>
<StyledLayerDescriptor version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld 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>Attribute-based point</Name>
<UserStyle>
<Title>GeoServer SLD Cook Book: Attribute-based point</Title>
<FeatureTypeStyle>
<Rule>
<Name>1</Name>
<Title>1</Title>
<PointSymbolizer>
<Graphic>
<Mark>
<WellKnownName>circle</WellKnownName>
<Fill>
<CssParameter name="fill">
<ogc:Function name="Recode">
<!-- Value to transform -->
<ogc:Function name="strTrim">
<ogc:PropertyName>danger_level</ogc:PropertyName>
</ogc:Function>
<!-- Map of input to output values -->
<ogc:Literal>重大风险</ogc:Literal>
<ogc:Literal>#ff3f3f</ogc:Literal>
<ogc:Literal>较大风险</ogc:Literal>
<ogc:Literal>#e7b300</ogc:Literal>
<ogc:Literal>一般风险</ogc:Literal>
<ogc:Literal>#0dc48a</ogc:Literal>
</ogc:Function>
</CssParameter>
</Fill>
</Mark>
<Size>6</Size>
</Graphic>
</PointSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
注意事项:
GeoServer 的Service Response Settings 中的字符集需要和你的sld文件指定的encoding一致,否则会渲染失败版权声明:本文为u010455546原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。