使用SLD

本节介绍如何在GeoServer中创建、查看和解决SLD样式问题。

创建

geoserver在其目录中定义了一些基本样式。可以将任意数量的新样式添加到目录中。也可以指定样式 外部的 到服务器,或者定义一个完整的映射,或者使用 库模式 .

目录样式

目录中的样式可以通过 样式页 菜单 Web管理界面 .它们也可以通过其余部分创建和访问 风格 应用程序编程接口。

有两种类型的目录样式:符号编码样式(默认)和样式层描述符样式。

符号编码样式

符号编码样式由 Symbology Encoding 用于指定单层样式的文档。在geoserver中,这通常被称为样式。

geoserver支持使用 StyledLayerDescriptor 包含单个 <NamedLayer> 元素,其中包含一个 <UserStyle> 元素以指定样式。

  • 以这种方式使用时,将忽略层名称,因为样式可能应用于许多不同的层。

  • 在使用 StyledLayerDescriptor 由另一个应用程序生成,请记住只需记住第一个 <NamedLayer> 则忽略任何后续内容。

向geoserver注册的每个层(featureType)必须至少有一个与其关联的符号编码样式,这是呈现层的默认样式。任何数量的附加样式都可以与一个图层关联。这允许层具有在WMS中公布的适当样式 GetCapabilities 文件。可以使用 第页,共页 Web管理界面 .

备注

同时向geoserver添加图层和样式时,应首先添加样式,以便新图层可以立即与样式关联。

样式层描述符样式

样式层描述符是 StyledLayerDescriptor 包含任意数量 <NamedLayer><UserLayer> 元素,每个元素可以包含 <UserStyle><NamedStyle> 元素。

在样式层描述符文档中,任何 <NamedLayer> 元素应与目录中的层(或层组)匹配。同样,任何 <NamedStyle> 元素应引用目录中的样式。

样式层描述符样式可以通过使用 InlineFeature 元素以提供功能数据。

在geoserver中,当使用样式层描述符样式时,它们通常以样式组的形式出现。样式组可以作为定义样式化图层集合的替代方法添加到图层组中,使用 Web Administration interfaceREST API .

样式层描述符样式仍然可以分配给层,并像层样式一样使用,在这种情况下,只有第一个 <NamedLayer> 将被使用。样式层描述符样式也可以通过geoserver样式端点用作外部样式。 (/geoserver/styles )或geoserver rest api。

外部样式

样式可以通过多种方式在服务器外部定义:

  • 可通过 SLD=url WMS中的参数 GetMap 获取请求

  • SLD文档可以直接在WMS中提供 GetMap 使用获取请求 SLD_BODY=style 参数。SLD XML必须是URL编码的。

  • A StyledLayerDescriptor 元素可以包含在WMS中 GetMap 发布请求XML文档。

在所有这些情况下,如果WMS layers 未提供参数,则地图内容完全由外部SLD中存在的图层和样式定义。如果 layers 参数存在,然后样式在 库模式 .

外部样式的结构与样式层描述符样式相同,如上所述。

外部样式可以通过使用SLD定义样式化数据的新层。 InlineFeature 元素以提供功能数据。例如,这可以用来实现动态特征突出显示。

外部样式可以由客户端应用程序动态生成,这为客户端控制样式效果提供了一种强大的方法。

库模式

库模式 外部定义的样式被视为 样式库 作为服务器样式目录的扩展。当使用 layersstyles WMS参数和其他样式是使用上一节中描述的方法之一从外部提供的。在渲染期间,外部样式文档中的样式优先于目录样式。

库模式下的样式查找操作如下:

  • 对于中的每个层 layers 列表中,应用的样式是 styles 列表(如果存在),或图层默认样式

  • 对于一个 已命名 如果外部样式文档具有 <NamedLayer>...<UserStyle> 与匹配的图层名和样式名一起使用。否则,将在目录中搜索样式名。如果在那里找不到,就会发生错误。

  • 对于一个 违约 样式,搜索外部样式文档以查找 <NamedLayer> 具有层名称的元素。如果它包含 <UserStyle><IsDefault> 具有值的元素 1 然后使用这种样式。否则,将使用层(必须存在)的默认服务器样式。

通常,使用服务器目录中的样式更简单,性能也更高。但是,如果需要设置包含多个图层的地图的样式,并且只有少数图层需要在外部定义其样式,则库模式非常有用。

查看

将样式与层关联后,可以使用 层预览 .最方便使用的输出格式是内置的Openlayers查看器。可以在视图打开时修改样式,并且只要平移或缩放地图视图,它们的效果就可见。通过在 styles WMS请求参数。

要查看合成多个样式化图层的效果,可以使用以下几种方法:

  • 创建一个 图层组 对于所需的层,使用 图层组 翻页并预览。如果需要,可以为图层指定非默认样式。

  • 提交WMS GetMap 获取指定多个层的请求 layers 参数,以及 styles 参数(如果需要非默认样式)。

  • 提交WMS GetMap 包含一个 StyledLayerDescriptor 元素,指定服务器层、可选的内联数据层以及每个层的命名目录样式或用户定义的样式。

故障排除

SLD是一种编程语言,与创建网页或构建脚本没有什么不同。因此,可能会出现需要故障排除的问题。

语法错误

为了在创建SLD时最小化语法错误,建议使用设计用于XML的文本编辑器(例如 Style Editor 在地理服务器用户界面中提供)。XML编辑器通过提供语法突出显示和(有时)内置的错误检查,可以更容易地查找语法错误。

地理服务器 Style Editor 允许根据SLD XML架构验证文档。这不是必需的,但建议在保存样式之前执行。

语义错误

SLD验证无法捕获语义错误,但在映射呈现过程中应用样式时会显示语义错误。大多数情况下,这将导致地图不显示任何功能(空白地图),但某些错误将阻止地图渲染。

修复SLD中语义错误的最简单方法是尝试隔离错误。如果SLD包含许多规则和过滤器,请尝试临时删除其中一些规则和过滤器,以查看错误是否会消失。

在某些情况下,服务器将生成一个WMS异常文档,该文档可能有助于识别错误。还值得检查服务器日志以查看是否记录了任何错误消息。

Previous: SLD简介
Next: SLD食谱