GeoServer图层设置样式
最近工作中使用到了 geoserver 发布 tif 图,发布图层后需要给图层设置样式。
发布图层就不在这里说了,可以参考其他博客,主要记录一下编写图层样式。
一、介绍
1、图层类型
在 geoserver 中图层类型分为以下几类:
我们可以在管理界面中查看我们发布的图层类型,后面写样式时需要根据我们图层类型不同使用不同的标签。
2、SLD文件
OGC 样式图层描述符 (SLD) 标准定义了用于表达的语言 地理空间数据的样式。 GeoServer 使用 SLD 作为其主要样式语言。
SLD包含了图层和样式元素标签,用于描述如何进行设置样式,SLD是基本XML格式编写,里面有很多种标签。
可以先看看一个简单的SLD文件如下:这个文件表示双色渐变,当我们的数据范围在 70-256 中间时,会进行线性插值,及填充两种颜色的中间点。
<?xml version="1.0" encoding="ISO-8859-1"?>
<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>Two color gradient</Name>
<UserStyle>
<Title>SLD Cook Book: Two color gradient</Title>
<FeatureTypeStyle>
<Rule>
<RasterSymbolizer>
<ColorMap>
<ColorMapEntry color="#008000" quantity="70" />
<ColorMapEntry color="#663333" quantity="256" />
</ColorMap>
</RasterSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
-
StyledLayerDescriptor 根标签
StyledLayerDescriptor
标签是SLD的根标签,包含了XML头信息。 -
NamedLayer 命名图层标签
NamedLayer
表示命名图层,指定要设置样式的现有图层。Name
:要设置样式的图层名称Description
:图层描述NamedStyle
:设置应用于图层目录的样式UserStyle
:设置应用于图层的样式
-
UserStyle 用户样式标签
Name
:样式的名称,用于在外部引用它Title
:样式标题FeatureTypeStyle
:用于定义单个元素类型样式
-
Rule 样式规则标签(重点)
我们可以在这个标签中设置过滤规则,满足某些规则的才进行渲染filter
筛选器,如比较大小,满足时应用规则
定义符号化器,按照上面介绍的图层类型,符号化器有多种,我使用的是栅格类型的,其他类型可以参照官网 SLD参考
PointSymbolizer
:点符号化器LineSymbolizer
:线符号化器PolygonSymbolizer
:多边形符号化器TextSymbolizer
:文本符号化器RasterSymbolizer
:栅格符号化器
想了解其他标签用法的话也可以参考官网。
二、栅格类型案例
我这里使用的栅格符号化器,在根据下面的例子介绍一下 RasterSymbolizer
下面的一些标签。
<RasterSymbolizer>
<!-- 设置渲染的不透明度 -->
<Opacity>1.0</Opacity>
<!-- 定义颜色值:
ram:默认的颜色映射类型,各个区间之间的颜色进行渐变填充
values:表示只渲染填充指定值内容,各个区间中间的值不填充
intervals:表示颜色不渐变,各个区间之间颜色都使用固定颜色填充
-->
<ColorMap type="intervals">
<!-- 设置各个区间数据的颜色值 -->
<!--
quantity:用来设置数据值的区间,按从小到到大进行设置
opacity:设置不透明度,当前区间渲染为透明
label:设置右上角图例提示
-->
<ColorMapEntry color="#808080" quantity="0" opacity="0.0" label="no data"/>
<ColorMapEntry color="#808080" quantity="2" label=" 0-2"/>
<ColorMapEntry color="#660000" quantity="3" label=" 2-3" />
<ColorMapEntry color="#ffff00" quantity="5" label=" 3-5" />
<ColorMapEntry color="#111C45" quantity="6" label=" 5-6"/>
<ColorMapEntry color="#0Fff10" quantity="7.5" label=" 6-7.5" />
<ColorMapEntry color="#386fff" quantity="8" label=" 7.5-8"/>
<ColorMapEntry color="#386fff" quantity="100000" label=" > 8"/>
</ColorMap>
</RasterSymbolizer>
可以在管理页面使用预览图层、或者通过wms接口访问查看返回的图像及图例,结构如下图:
想了解更多用法的话可以参考官方文档:geoserver官网
三、问题记录
生成样式时,遇到过通过wms接口访问接口时,无法查看到右上角的图例,我们可以在接口路径后面拼接上&format_options=layout:style-editor-legend&legend_options=countMatched:true;fontAntiAliasing:true
来生成,主要是需要第一个参数设置layout文件路径。
本文作者:香酥豆腐皮
本文链接:https://www.cnblogs.com/Snowclod/p/17385396.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步