使用SLD工作
本节介绍如何创建,查看和解决在GeoServer中SLD的style问题。
创建
GeoServer的配备在其目录中定义的一些基本款式。 任何数量的新的样式可以被添加到目录。 样式也能够从外部指定的服务器,或者以定义一个完整的地图,或使用库模式扩展服务器样式目录。
目录样式
目录中的样式可以查看,编辑,并通过验证Web菜单管理界面 下面的styles。 它们也可以被创建并通过REST访问样式(styles)的API。
目录样式由一个的StyledLayerDescriptor包含一个<NamedLayer>元素,它包含一个<UserStyle>元素指定样式的文档。 层名称将被忽略,因为样式可以被应用于许多不同的层中。
每次用的GeoServer登记层(的FeatureType)必须有与之关联的至少一个目录的风格,这是默认的样式呈现层。 任意数量的额外的样式可以用一个层相关联。 这使得层有相应的风格张扬的WMS GetCapabilities操作的文件。 图层的样式可以通过改变图层的页面的Web管理界面 。
记
当为它的GeoServer添加一个层和一个样式的同时,样式应先加入,以使新的层可以与样式立即关联。
外部样式
样式可以以多种方式在外部服务器上被定义:
- 通过Internet访问的SLD文件可以通过SLD = 被设置在WMS 的GetMap 参数的url用GET请求
- 一个SLD文件可以用wms中的GetMap设置并用SLD_BODY = style参数进行GET请求。 该SLD XML必须是URL编码。
- 一个StyledLayerDescriptor元素可以包含一个WMS 的GetMap 的POST请求的XML文档中。
在所有这些情况下,如果未提供与WMS 层的参数,然后在地图上的内容完全是由存在于外部的SLD的各层和样式定义。 如果这些层参数存在,则在库模式 下进行渲染工作(styling)。
外部样式可以定义风格数据的新的层,通过使用SLD InlineFeature元件提供的特征数据。 这可以用于实现动态特征高亮,例如。
外部造型可以动态客户端应用程序产生,这提供了一种强有力的方式,为客户控制的造型效果。
图书馆模式
在图书馆模式的外部定义的样式将被视为一个样式库 ,它作为一个扩展的服务器样式目录。 当使用层和样式 WMS参数被指定图层和样式发生库模式,并附加定型外部使用的上一节中描述的方法之一提供。 在渲染过程中的外部样式文件中的样式优先于目录样式。
样式查找在库模式下的工作情况如下:
- 在层列表中的每个层,施加的样式是任意的样式列表中指定的指定样式(如果存在的话),或该层的默认样式
- 对于命名的样式,如果永恒的样式文件有一个<NamedLayer> ... <UserStyle>与匹配层的名称和样式名称,然后使用它。 否则,样式名称中搜索的目录。 如果没有找到,则会出现错误。
- 对于默认的样式,外部的样式文件中进行搜索,找到与该层名称的<NamedLayer>元素。 如果它包含一个<UserStyle>具有那么该样式所使用的值1 <ISDEFAULT>元素。 否则,该层的默认服务器样式(必须存在)被使用。
通常它是更简单和更高性能的使用方式从服务器的目录。 但是,如果需要的样式包含许多层的地图,且其中只有少数人需要有自己的风格定义外部库模式可能是有用的。
查看
一旦一个样式已与层相关联,将所得的层数据的呈现可以通过查看预览层 ( Layer Preview)。 最方便的输出格式使用的是内置的OpenLayers查看工具。 样式可以修改,而认为是开放的,它们的效果是明显的,只要在地图视图平移或缩放。 备选的款式可以通过在样式 WMS请求参数,指定他们进行查看。
查看合成多种样式的层的作用,有几种方法可供选择:
- 创建一个图层组使用所需要的图层图层组页面,并进行预览。 非默认的样式可以为图层如果需要指定。
- 提交WMS 的GetMap GET请求层参数中指定多个图层,并在样式参数对应的样式(如非默认的样式是必需的)。
- 提交一个含有一个WMS 的GetMap POST请求StyledLayerDescriptor元素指定服务器层,内联的数据的可选的层,并且是命名目录样式或用户定义的造型为每个层。
故障排除
SLD是一种类型的编程语言,而不是象在创建网页或构建脚本。 因此,可能出现的问题,可能需要排除故障。
语法错误
为了最大限度地减少在创建的SLD当语法错误,推荐使用,其被设计以XML(可如在GeoServer的用户界面中提供的样式编辑器 )工作的一个文本编辑器。 XML编辑器可以发现语法错误,提供语法高亮和(有时)内置错误检查更容易。
在GeoServer的样式编辑器允许验证对SLD XML模式文档。 这不是强制性的,但建议保存样式前做。
语义错误
语义错误无法通过验证SLD被抓,但显示时的样式在地图渲染应用。 这大部分的时间会导致无显示功能(空白地图)地图,但有些错误会阻止从地图绘制的。
在一个SLD修复语义错误的最简单的方法就是尝试找出错误。 如果SLD长有许多规则和过滤器,尝试暂时删除其中的一些,看看这些错误消失。
在某些情况下,服务器会产生一个WMS异常文件,它可以帮助识别错误。 另外,值得一检查服务器日志,看是否有错误信息已被记录。
viewer(地图视窗)