在geoserver中有一个需求,发布服务时,根据指定字段值来设置不同线的颜色,同时要根据不同比例尺来改变线的宽度,具体代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<!-- a named layer is the basic building block of an sld document -->
<NamedLayer>
<Name>mti_expressway</Name>
<UserStyle>
<!-- they have names, titles and abstracts -->
<Title>mti_expressway style</Title>
<Abstract>mti_expressway</Abstract>
<!-- FeatureTypeStyles describe how to render different features -->
<!-- a feature type for lines -->
<FeatureTypeStyle>
<!--1-->
<Rule>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<!--fieldName-->
<ogc:PropertyName>org_id</ogc:PropertyName>
<!--fieldValue-->
<ogc:Literal>518100000010</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<!--scale1-->
<MinScaleDenominator>1000000</MinScaleDenominator>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#00F5FF</CssParameter>
<CssParameter name="stroke-width">2</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
<Rule>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>org_id</ogc:PropertyName>
<ogc:Literal>518100000010</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<MinScaleDenominator>10000</MinScaleDenominator>
<MaxScaleDenominator>1000000</MaxScaleDenominator>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#00F5FF</CssParameter>
<CssParameter name="stroke-width">4</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
<Rule>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>org_id</ogc:PropertyName>
<ogc:Literal>518100000010</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<MaxScaleDenominator>10000</MaxScaleDenominator>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#00F5FF</CssParameter>
<CssParameter name="stroke-width">8</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
</FeatureTypeStyle>
<FeatureTypeStyle>
<!--2-->
<Rule>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>org_id</ogc:PropertyName>
<ogc:Literal>518200000010</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<MinScaleDenominator>1000000</MinScaleDenominator>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#8470FF</CssParameter>
<CssParameter name="stroke-width">2</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
<Rule>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>org_id</ogc:PropertyName>
<ogc:Literal>518200000010</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<MinScaleDenominator>10000</MinScaleDenominator>
<MaxScaleDenominator>1000000</MaxScaleDenominator>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#8470FF</CssParameter>
<CssParameter name="stroke-width">4</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
<Rule>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>org_id</ogc:PropertyName>
<ogc:Literal>518200000010</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<MaxScaleDenominator>10000</MaxScaleDenominator>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#8470FF</CssParameter>
<CssParameter name="stroke-width">8</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
</FeatureTypeStyle>
<FeatureTypeStyle>
<!--null-->
<Rule>
<ogc:Filter>
<ogc:PropertyIsNull>
<ogc:PropertyName>org_id</ogc:PropertyName>
</ogc:PropertyIsNull>
</ogc:Filter>
<MinScaleDenominator>1000000</MinScaleDenominator>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#33B100</CssParameter>
<CssParameter name="stroke-width">2</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
<Rule>
<ogc:Filter>
<ogc:PropertyIsNull>
<ogc:PropertyName>org_id</ogc:PropertyName>
</ogc:PropertyIsNull>
</ogc:Filter>
<MinScaleDenominator>10000</MinScaleDenominator>
<MaxScaleDenominator>1000000</MaxScaleDenominator>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#33B100</CssParameter>
<CssParameter name="stroke-width">4</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
<Rule>
<ogc:Filter>
<ogc:PropertyIsNull>
<ogc:PropertyName>org_id</ogc:PropertyName>
</ogc:PropertyIsNull>
</ogc:Filter>
<MaxScaleDenominator>10000</MaxScaleDenominator>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#33B100</CssParameter>
<CssParameter name="stroke-width">8</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>