章版权由作者李晓晖以及博客园共有,若转载请给大庭广众处于标明出处:http://www.cnblogs.com/naaoveGIS/。

1 背景

俺们以ArcMap中可以一直通过symbol功能对图层进行定制化配图。但是,如果我们用配好图的shp图层在GeoServer中发布时,会发现图层样式完全不见了。其实原因很粗略,用ArcMap配好之图层,其样式文件并无是保存在shp中,而是保存于mxd或者msd中。

那么怎样才会叫GeoServer发布的图层也能达定制化配图的力量也?

2 SLD简介

SLD是风格化图层描述器(Styled Layer
Descriptor)的简称,是2005年OGC提出的一个正式,这个专业在一定标准下同意WMS服务器对地图可视化的表现形式进行扩张。在尚未SLD之前,只能使用部分就在服务器上确定好之样式来针对地图进行可视化。而当使用了实现了SLD标准以后,它同意我们由客户端来对地图进行定义自己的体,分级显示等操作,极大的恢宏了地图可视化的油滑。

该SLD-规范是应用XML定义地图显示样式,通过从定义SLD来部署地图图层渲染之可视化风格,可以装过滤器,自定义图例等。rule凡SLD最根本之一个要素,因为其允许根据加的某个参数(使用过滤器)对数据集进行归类,所有的与分类有关的要参数都必于rule元素中设置。

对此以SLD来拓展地图的自定义样式,则须做使用SE(Symbology
Encoding)这个专业。SE是OGC的任何一个业内,这个呢是根据XML模式定义的,这个标准允许我们于定义不同的记号样式来发挥地图及差之要素。SLD文件使用这种语言,这样于地形图渲染时地图服务可分解由用户定义的体裁。

SLD文档的要素架构如下:

      XML 1                 

一个SLD样式文档一般含一个部分,而太紧要的如下:

FeatureTypeStyle:这同样有是总体样式文档的根节点,并说明什么是她的体将为用的特色类型。FeatureTypeStyle包含一个还是基本上单Rule元素,Rule元素允许发生标准的投射。

RULE(规则):规则是基于性条件与地图比例尺来对素进行分组渲染,一般RULE中单独允许渲染一种档次的素,即触发,线,面等内部的均等种植,但是得同注记同时使用。

Symbolizer(符号):Symbolizer指定数据应怎么可视化,在1.0之正统被带有五忠于类型的Symbolizer,分别是PointSymbolizer(点符号)、LineSymbolizer(线符号)、PloygonSymbolizer(面符号)、TextSymbolizer(注记)、RasterSymbolizer(栅格)。

透过SLD可以装的不仅是大概的颜料与薄厚。点好设置成常用之貌,如周,方形,星形,甚至可以是自定义之图片图形或文字来指定;线好渲染成虚线或者点虚线等,多边形可以填充自定义之平铺图像,样式可以根据数的性质加,以至于要素能够

于渲染成不同之品格。

常用参数说明:

符号

含义

<Name>

样式名称

<FeatureTypeStyle>

要素样式

<Rule>

规则

<ogc:Filter>

过滤器

<ogc:PropertyIsBetween>

用来定义在两个属性值之间的过滤器

<ogc:PropertyIsLessThan>

用来定义在小于某个属性值的过滤器

<ogc:PropertyIsGreaterThan>

用来定义在大于某个属性值的过滤器

<ogc:PropertyName>

属性字段名

<ogc:Literal>

属性值

<PointSymbolizer>

点标记器

<LineSymbolizer>

线标记器

<PolygonSymbolizer>

面标记器

<CssParameter   name="fill">

填充颜色

<CssParameter   name="font-family">

字体

<CssParameter   name="font-style">

字体样式

<CssParameter   name="font-size">

字体大小

 

3 以polygon图层为条例,详细讲解

3.1主导颜色填充

3.1.1 结构

…PolygonSymbolizer

 

……Fill

填充

………CssParameter  name="fill"

颜色

………CssParameter  name="fill-opacity"

透明度

……Stroke

边界

………CssParameter  name="stroke"

颜色

………CssParameter  name="stroke-width"

宽度

3.1.2示例

蕴含边界透明底多头形

SLD:

<FeatureTypeStyle>
    <Rule>
        <PolygonSymbolizer>
        <Fill>
         <CssParameter   name="fill">#AAAAAA</CssParameter>
         <CssParameter   name="fill-opacity">0.5</CssParameter>
       </Fill>
       <Stroke>
        <CssParameter   name="stroke">#000000</CssParameter>
        <CssParameter   name="stroke-width">1</CssParameter>
      </Stroke>
     </PolygonSymbolizer>
    </Rule>
   </FeatureTypeStyle>

 

效果:

 XML 2

3.2图填充

3.2.1结构

…PolygonSymbolizer

 

……Fill

 

………GraphicFill

 

…………Graphic

 

……………ExternalGraphic

 

………………OnlineResource

图片来源

………………Format

图片格式

……………Size

大小

3.2.2示例

富含使用图片填充的多方面形

SLD:

<FeatureTypeStyle>
    <Rule>
       <PolygonSymbolizer>

            <Fill>

              <GraphicFill>

                <Graphic>

                    <ExternalGraphic>

                     <OnlineResource xlink:type="simple"   xlink:href="20101.gif" />

                   <Format>image/gif</Format>

                    </ExternalGraphic>

                    <Size>20</Size>

                </Graphic>

              </GraphicFill>

            </Fill>

            <Stroke>

              <CssParameter   name="stroke">#000000</CssParameter>

              <CssParameter   name="stroke-width">1</CssParameter>

            </Stroke>

        </PolygonSymbolizer>

  </Rule>
   </FeatureTypeStyle>

效果:

 XML 3

3.3注记显示

3.2.1结构

…TextSymbolizer

 

……Label

 

………ogc:PropertyName

注记的属性字段名称

……Font

字体

………CssParameter  name="font-family"

字体类型

………CssParameter  name="font-size"

字体大小

………CssParameter  name="font-style"

字体样式

………CssParameter  name="font-weight"

字体加粗

……LabelPlacement

注记的位置

………PointPlacement

注记点位置

…………AnchorPoint

 

……………AnchorPointX

 

……………AnchorPointY

 

…………Displacement

 

……………Displacement X

 

……………Displacement Y

 

…………Rotation

设置旋转角度

……Fill

填充

………CssParameter  name="fill"

填充颜色

3.2.2示例

含注记的填充充色透明的多方形

SLD:

 <TextSymbolizer>
         <Label>
             <ogc:PropertyName>COMNAME</ogc:PropertyName>
         </Label>
         <Font>
             <CssParameter name="font-family">微软雅黑</CssParameter>
             <CssParameter name="font-size">15</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">#FF5226</CssParameter>
         </Fill>
         <VendorOption name="followLine">true</VendorOption>
    </TextSymbolizer> 

 

 

效果:

 XML 4

3.4 分属性渲染

3.4.1结构

…PolygonSymbolizer

 

……Rule

 

………Filter

 

………PolygonSymbolizer

 

………TextSymbolizer

 

3.4.2示例

冲性字段值范围用不同颜色渲染。

SLD:

<FeatureTypeStyle>

<Rule>

<Name>SmallCOMM</Name>

<Title>Less Than 510104024008</Title>

<ogc:Filter>

<ogc:PropertyIsLessThan>

<ogc:PropertyName>COMID</ogc:PropertyName>

<ogc:Literal>510104024008</ogc:Literal>

</ogc:PropertyIsLessThan>

</ogc:Filter>

<PolygonSymbolizer>

  <Fill>

 <CssParameter   name="fill">#66FF66</CssParameter>

 </Fill>

 </PolygonSymbolizer>

</Rule>

<Rule>

<Name>MediumCOMM</Name>

<Title>510104024008 to 510104024011</Title>

<ogc:Filter>

<ogc:And>

<ogc:PropertyIsGreaterThanOrEqualTo>

<ogc:PropertyName>COMID</ogc:PropertyName>

<ogc:Literal>510104024008</ogc:Literal>

</ogc:PropertyIsGreaterThanOrEqualTo>

<ogc:PropertyIsLessThan>

<ogc:PropertyName>COMID</ogc:PropertyName>

<ogc:Literal>510104024011</ogc:Literal>

</ogc:PropertyIsLessThan>

</ogc:And>

</ogc:Filter>

<PolygonSymbolizer>

<Fill>

<CssParameter name="fill">#33CC33</CssParameter>

</Fill>

</PolygonSymbolizer>

</Rule>

<Rule>

<Name>LargeCOMM</Name>

<Title>Greater Than 510104024011</Title>

<ogc:Filter>

<ogc:PropertyIsGreaterThan>

<ogc:PropertyName>COMID</ogc:PropertyName>

<ogc:Literal>510104024011</ogc:Literal>

</ogc:PropertyIsGreaterThan>

</ogc:Filter>

<PolygonSymbolizer>

<Fill>

<CssParameter name="fill">#009900</CssParameter>

</Fill>

</PolygonSymbolizer>

</Rule>

</FeatureTypeStyle>

 

效果:

     XML 5                  

当SLD中尚依据3.3底注记写法,增加了注记的示。

3.5分级渲染

3.5.1结构

…PolygonSymbolizer

 

……Rule

 

………MinScaleDenominator

 

………MaxScaleDenominator

 

………PolygonSymbolizer

 

………TextSymbolizer

 

 

3.5.2示例

经安装不同比例尺时之显得颜色,展示不同之效能。

SLD:

<FeatureTypeStyle>

<Rule>

<Name>Large</Name>

<MaxScaleDenominator>5746</MaxScaleDenominator>

<PolygonSymbolizer>

<Fill>

<CssParameter name="fill">#CCCCCC</CssParameter>

</Fill>

<Stroke>

<CssParameter name="stroke">#000000</CssParameter>

<CssParameter name="stroke-width">7</CssParameter>

</Stroke>

</PolygonSymbolizer>

</Rule>

<Rule>

<Name>Medium</Name>

<MinScaleDenominator>5746</MinScaleDenominator>

<MaxScaleDenominator>12000</MaxScaleDenominator>

<PolygonSymbolizer>

<Fill>

<CssParameter name="fill">#0000CC</CssParameter>

</Fill>

<Stroke>

<CssParameter name="stroke">#000000</CssParameter>

<CssParameter name="stroke-width">4</CssParameter>

</Stroke>

</PolygonSymbolizer>

</Rule>

<Rule>

<Name>Small</Name>

<MinScaleDenominator>12000</MinScaleDenominator>

<PolygonSymbolizer>

<Fill>

<CssParameter name="fill">#0000CC</CssParameter>

</Fill>

<Stroke>

<CssParameter name="stroke">#000000</CssParameter>

<CssParameter name="stroke-width">1</CssParameter>

</Stroke>

</PolygonSymbolizer>

</Rule>

</FeatureTypeStyle>

效果图:

 XML 6

XML 7

 

 

4 注意

4.1 注记渲染时或多或少注记未出示

启时,某个要素的注记无法显示:

 XML 8

放后其以得出现:

 XML 9

出现这种景象,往往是以注记显示的地方在另外一个要素下面。

化解方式比较简单,利用LabelPalcement元素调整注记显示的地方便可解决。例如:

 <LabelPlacement>
         <PointPlacement>
           <AnchorPoint>
               <AnchorPointX>0.5</AnchorPointX>
               <AnchorPointY>0.5</AnchorPointY>
           </AnchorPoint>
         </PointPlacement>
       </LabelPlacement>

4.2 中文出现乱码

XML 10
起这么的情形,一般是SLD中莫开展不易的格式编码赋值。

首先以编码改化GB2312。例如:

<?xml version="1.0" encoding="GB2312"?>

假使发现尚是乱码,则生有或是当下书不支持中文。

像当字体是Arial时,不支持中文:

<CssParameter name="font-family">Arial</CssParameter>

将书改成为微软十分黑,则注记不再重现乱码:

<CssParameter name="font-family">微软雅黑</CssParameter>

 

5 总结

本着Point和Line图层的SLD文件编写,其格式和内容及Polygon大体相似,不再累述。GeoServer不仅支持针对矢量图层的渲染,还支持对栅格图层的渲染。在随后的章节中我会见及大家持续联合探索。

 

                                                                         
 —–欢迎转载,但保留版权,请于大庭广众处于标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                          
如果您认为本文确实帮了卿,可以微信扫一扫,进行小额的打赏和鼓励,谢谢
^_^

                                          XML 11

相关文章

网站地图xml地图