SLD简介¶
地理空间数据没有内在的可视组件。为了查看数据,必须对其设置样式。样式指定用于在地图上渲染数据的颜色、厚度和其他可见属性。
在geoserver中,使用一种名为 Styled Layer Descriptor 或简称SLD。SLD是一种基于XML的标记语言,功能非常强大,尽管有些复杂。本页介绍了SLD的功能及其在GeoServer中的工作方式。
备注
由于geoserver专门使用sld进行样式设计,因此术语“sld”和“style”通常可以互换使用。
SLD概念¶
在geoserver中,通常使用XML指定样式 SLD样式文档 .样式文档与geoserver关联 层 ( 特征类型 )指定它们应该如何 提供 .样式文档指定一个 命名层 和A 用户风格 为了它。层和样式可以具有元数据元素,例如 name 识别它们,a 标题 用于显示它们,以及 摘要 详细描述。在顶层样式中有一个或多个 要素类型样式 它作为“虚拟层”提供对渲染顺序的控制(允许样式设置效果,例如道路的套管线)。每个要素类型样式包含一个或多个 规则 ,它控制如何基于特征属性和缩放级别应用样式。规则通过使用选择适用的功能 过滤器 ,这是包含 谓语 , 表达 和 过滤器功能 .要为各个功能指定样式的详细信息,规则包含 符号 .符号指定样式 点 , 线 和 多边形 以及 粗锉 和 文本标签 .
有关更多信息,请参阅 SLD参考 .
造型类型¶
GeoServer可以提供的矢量数据由三类形状组成: 点、线和多边形 .线条(一维形状)是最简单的,因为它们只有边到样式(也称为“笔划”)。多边形,二维形状,有一个边和一个内边(也称为“填充”),两者都可以有不同的样式。点,即使它们没有尺寸,也有一个边和一个填充(更不用说尺寸),可以设置样式。对于填充,可以指定颜色;对于笔划,可以指定颜色和厚度。
geoserver还提供栅格数据。这可以通过对调色板、不透明度、对比度和其他参数的各种控制来设置样式。
更高级的样式也是可能的。点可以用众所周知的形状指定,如圆、正方形、星形,甚至自定义图形或文本。可以用破折号样式和散列来设置线条的样式。多边形可以用自定义瓦片图形填充。样式可以基于数据中的属性,因此某些特性的样式不同。功能上也可以使用文本标签。样式也可以通过缩放级别来确定,以便以适合其外观大小的方式显示功能。可能性是巨大的。
基本样式示例¶
学习SLD的一个好方法是学习造型示例。下面是一个简单的SLD,它可以应用于包含点的层,将其设置为6像素大小的红色圆形。(这是 点 剖面图 SLD食谱 )
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<StyledLayerDescriptor version="1.0.0"
3 xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
4 xmlns="http://www.opengis.net/sld"
5 xmlns:ogc="http://www.opengis.net/ogc"
6 xmlns:xlink="http://www.w3.org/1999/xlink"
7 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
8 <NamedLayer>
9 <Name>Simple point</Name>
10 <UserStyle>
11 <Title>GeoServer SLD Cook Book: Simple point</Title>
12 <FeatureTypeStyle>
13 <Rule>
14 <PointSymbolizer>
15 <Graphic>
16 <Mark>
17 <WellKnownName>circle</WellKnownName>
18 <Fill>
19 <CssParameter name="fill">#FF0000</CssParameter>
20 </Fill>
21 </Mark>
22 <Size>6</Size>
23 </Graphic>
24 </PointSymbolizer>
25 </Rule>
26 </FeatureTypeStyle>
27 </UserStyle>
28 </NamedLayer>
29</StyledLayerDescriptor>
虽然这个例子看起来很长,但只有几行是真正重要的。 第14行 声明将使用“点符号”将数据样式设置为点。 Lines 15-17 声明将使用由“已知名称”指定的图形形状来设置点的样式,在本例中是一个圆。SLD为许多形状提供名称,如“正方形”、“星形”、“三角形”等。 Lines 18-20 指定形状应填充颜色为 #FF0000
(红色)。这是一个以十六进制写成的RGB颜色代码,格式为rrggbb。最后, 第22行 指定形状的宽度为6像素。结构的其余部分包含有关样式的元数据,例如标识样式的名称和用于图例的标题。
备注
在SLD文档中,有些标签有前缀,例如 ogc:
.这是因为它们在 XML命名空间 .最高层 StyledLayerDescriptor
标签(标签) lines 2-7 )指定两个XML命名空间,一个名为 xmlns
还有一个叫 xmlns:ogc
.第一个名称空间是文档的默认名称空间,因此属于它的标记不需要前缀。属于第二个的标记需要前缀 ogc:
.实际上,名称空间前缀可以是任何标识符。无法调用第一个命名空间 xmlns:sld
(通常如此)然后本例中的所有标记都需要 sld:
前缀。关键是,标记需要有它们所属命名空间的前缀。
见 SLD食谱 有关SLD样式的更多示例。