GeoServer图层设置样式

最近工作中使用到了 geoserver 发布 tif 图,发布图层后需要给图层设置样式。
发布图层就不在这里说了,可以参考其他博客,主要记录一下编写图层样式。

一、介绍

1、图层类型

在 geoserver 中图层类型分为以下几类:

image

我们可以在管理界面中查看我们发布的图层类型,后面写样式时需要根据我们图层类型不同使用不同的标签。

image

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接口访问查看返回的图像及图例,结构如下图:

image

想了解更多用法的话可以参考官方文档: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 中国大陆许可协议进行许可。

posted @   香酥豆腐皮  阅读(1661)  评论(0编辑  收藏  举报
漫留得,尊前淡月西风。
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 青石巷 REOL
青石巷 - REOL
00:00 / 00:00
An audio error has occurred.