Geoserver style使用(三)——按属性和缩放级别渲染矢量图层

来源:互联网 发布:经传多赢软件 编辑:程序博客网 时间:2024/06/15 11:48

Geoserver style可将矢量图层渲染为按属性分类显示、按缩放级别区别显示。

按属性分类显示

按属性显示可以进行唯一值渲染,即一个值对应一种样式(填充颜色、边线宽度等),也可以进行分段渲染,即某一类型对应一种样式。

例如土地利用分类图,我们需要对不同类进行渲染,地类代码唯一,我们就可以采用唯一值渲染。本例中的土地利用分类数据地类代码字段为“TBLXDM”,类型为int,值分别为1,2,3…9,我们将每种地类赋予不同的颜色。代码如下:

<StyledLayerDescriptor 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" version="1.0.0" xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"> <NamedLayer>  <Name>Simple polygon</Name>  <UserStyle>   <Title>SLD Cook Book: Attribute-based polygon</Title>   <FeatureTypeStyle>     <Rule>       <Name>1</Name>       <Title>Crop</Title>       <ogc:Filter>         <ogc:PropertyIsEqualTo>           <ogc:PropertyName>TBLXDM</ogc:PropertyName>           <ogc:Literal>1</ogc:Literal>         </ogc:PropertyIsEqualTo>       </ogc:Filter>       <PolygonSymbolizer>         <Fill>           <CssParameter name="fill">#DAA520</CssParameter>         </Fill>       </PolygonSymbolizer>     </Rule>     <Rule>       <Name>2</Name>       <Title>Gardening trees</Title>       <ogc:Filter>         <ogc:PropertyIsEqualTo>           <ogc:PropertyName>TBLXDM</ogc:PropertyName>           <ogc:Literal>2</ogc:Literal>         </ogc:PropertyIsEqualTo>       </ogc:Filter>       <PolygonSymbolizer>         <Fill>           <CssParameter name="fill">#D2B48C</CssParameter>         </Fill>       </PolygonSymbolizer>     </Rule>     <Rule>       <Name>3</Name>       <Title>Forest</Title>       <ogc:Filter>         <ogc:PropertyIsEqualTo>           <ogc:PropertyName>TBLXDM</ogc:PropertyName>           <ogc:Literal>3</ogc:Literal>         </ogc:PropertyIsEqualTo>       </ogc:Filter>       <PolygonSymbolizer>         <Fill>           <CssParameter name="fill">#2E8B57</CssParameter>         </Fill>       </PolygonSymbolizer>     </Rule>    ……   </FeatureTypeStyle>  </UserStyle> </NamedLayer></StyledLayerDescriptor>

其中省略的部分是因为不同属性值赋予颜色的rule内容结构上只是简单的重复,不同的只是16进制颜色代码,在此就不一一重复,效果图如下。

这里写图片描述

如果想实现分段显示,只需要修改filter类型,例如将值大于等于3、小于等于5的地类赋予某种颜色,示例代码如下:

     <Rule>       <Name>Example</Name>       <Title>3-5</Title>       <ogc:Filter>         <ogc:And>           <ogc:PropertyIsGreaterThanOrEqualTo>             <ogc:PropertyName>pop</ogc:PropertyName>             <ogc:Literal>3</ogc:Literal>           </ogc:PropertyIsGreaterThanOrEqualTo>           <ogc:PropertyIsLessThan>             <ogc:PropertyName>pop</ogc:PropertyName>             <ogc:Literal>5</ogc:Literal>           </ogc:PropertyIsLessThan>         </ogc:And>       </ogc:Filter>       <PolygonSymbolizer>         <Fill>           <CssParameter name="fill">#33CC33</CssParameter>         </Fill>       </PolygonSymbolizer>     </Rule>

按缩放级别区别显示

有时地图为了显示需要,在不同的比例尺下要素的样式需要做一些调整,常用的如修改标签的样式。本例中设置了不同比例尺下图斑的填充颜色、线宽、地类名称字段“TBLXMC”的标签样式。代码如下:

<FeatureTypeStyle>     <Rule>       <Name>Large</Name>       <MaxScaleDenominator>20000</MaxScaleDenominator>       <PolygonSymbolizer>         <Fill>           <CssParameter name="fill">#66FF66</CssParameter>         </Fill>         <Stroke>           <CssParameter name="stroke">#000000</CssParameter>           <CssParameter name="stroke-width">2</CssParameter>         </Stroke>       </PolygonSymbolizer>       <TextSymbolizer>         <Label>           <ogc:PropertyName>TBLXMC</ogc:PropertyName>         </Label>         <Font>           <CssParameter name="font-size">14</CssParameter>           <CssParameter name="font-style">normal</CssParameter>           <CssParameter name="font-weight">bold</CssParameter>         </Font>         <LabelPlacement>           <PointPlacement>             <AnchorPoint>               <AnchorPointX>0.5</AnchorPointX>               <AnchorPointY>0.5</AnchorPointY>             </AnchorPoint>           </PointPlacement>         </LabelPlacement>                  <Fill>           <CssParameter name="fill">#FFFFFF</CssParameter>         </Fill>       </TextSymbolizer>            </Rule>     <Rule>       <Name>Medium</Name>       <MinScaleDenominator>20000</MinScaleDenominator>       <MaxScaleDenominator>200000</MaxScaleDenominator>       <PolygonSymbolizer>         <Fill>           <CssParameter name="fill">#0000CC</CssParameter>         </Fill>         <Stroke>           <CssParameter name="stroke">#000000</CssParameter>           <CssParameter name="stroke-width">3</CssParameter>         </Stroke>       </PolygonSymbolizer>     </Rule>     <Rule>       <Name>Small</Name>       <MinScaleDenominator>200000</MinScaleDenominator>       <PolygonSymbolizer>         <Fill>           <CssParameter name="fill">#990099</CssParameter>         </Fill>         <Stroke>           <CssParameter name="stroke">#000000</CssParameter>           <CssParameter name="stroke-width">4</CssParameter>         </Stroke>       </PolygonSymbolizer>     </Rule>   </FeatureTypeStyle>

效果图如下:

这里写图片描述

这里写图片描述

阅读全文
0 0
原创粉丝点击