GeoServer中使用SLD样式

GeoServer中使⽤SLD样式
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⽂档的元素架构如下:
⼀个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>
效果:
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>
效果:
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>
dppb
</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>
效果:
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>

本文发布于:2024-09-21 13:47:07,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/172300.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:地图   样式   定义   图层   属性   渲染   可视化
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议