SLD(OpenGIS® Styled Layer Descriptor)当前版本是1.1.0。SLD是一种描述地图图层样式的标准,一般用于WMS。一个地图不仅包含数据源组成,还需要对数据进行符号化和渲染,SLD就是这个定义地图图层符号化和渲染信息的标准。
和GML类似,SLD也通过一些XML Schema来定义SLD文档的结构,这些定义可以通过访问http://schemas.opengis.net/sld/ 得到。SLD的Schema还依赖其它的OGC标准的Schema,其中包括:GML[1]、Filter Encoding[2]、Symbology Encoding[3]。
下面是一个SLD的简单例子,这里对一个多边形图层进行了填充样式的定义:
xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor version="1.1.0"
xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
xmlns="http://www.opengis.net/sld"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:se="http://www.opengis.net/se"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<NamedLayer>
<se:Name>OCEANSEA_1M:Foundation se:Name> <UserStyle> <se:Name>GEOSYM se:Name> <IsDefault>1 IsDefault> <se:FeatureTypeStyle> <se:FeatureTypeName>Foundation se:FeatureTypeName> <se:Rule> <se:Name>main se:Name> <se:PolygonSymbolizer uom="http://www.opengeospatial.org/sld/units/pixel"> <se:Name>MySymbol se:Name> <se:Description> <se:Title>Example Symbol se:Title> <se:Abstract>This is just a simple example. se:Abstract> se:Description> <se:Geometry> <ogc:PropertyName>GEOMETRY ogc:PropertyName> se:Geometry> <se:Fill> <se:SvgParameter name="fill">#96C3F5 se:SvgParameter> se:Fill> se:PolygonSymbolizer> se:Rule> se:FeatureTypeStyle> UserStyle> NamedLayer> StyledLayerDescriptor>
其中关键的还是在于Symbology Encoding(SE)标准定义的符号化和渲染的方式,由于SE和SLD的依赖关系,因此,在这里也顺便通过几个简单的例子对SE进行一下介绍。
在SE标准中给出了几个符号化定义的例子,非常的浅显易懂,这几个例子分别定义了点、线、面、文本等内容应该使用什么样的符号化方式显示出来,而在其中出现的Mark、Stroke、Fill等元素也很容易理解,下面就从这几个例子大致了解一下SE标准的定义。
点数据符号化:
<PointSymbolizer version="1.1.0" xsi:schemaLocation="http://www.opengis.net/se Symbolizer.xsd" xmlns="http://www.opengis.net/se" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uom="http://www.opengeospatial.org/se/units/metre"> <Name>MyPointSymbolizer Name> <Description> <Title>Example Pointsymbolizer Title> <Abstract>This is just a simple example of a point symbolizer. Abstract> Description> <Graphic> <Mark> <WellKnownName>star WellKnownName> <Fill> <SvgParameter name="fill">#ff0000 SvgParameter> Fill> Mark> <Size>8.0 Size> Graphic> PointSymbolizer>
线数据符号化:
<LineSymbolizer version="1.1.0" xsi:schemaLocation="http://www.opengis.net/se Symbolizer.xsd" xmlns="http://www.opengis.net/se" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uom="http://www.opengeospatial.org/se/units/metre"> <Name>MyLineSymbolizer Name> <Description> <Title>Example Symbol Title> <Abstract>This is just a simple example of a line symbolizer. Abstract> Description> <Stroke> <SvgParameter name="stroke">#0000ff SvgParameter> <SvgParameter name="stroke-width">2 SvgParameter> Stroke> LineSymbolizer>
面数据符号化:
<PolygonSymbolizer version="1.1.0" xsi:schemaLocation="http://www.opengis.net/se Symbolizer.xsd" xmlns="http://www.opengis.net/se" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uom="http://www.opengeospatial.org/se/units/pixel"> <Name>MyPolygonSymbolizer Name> <Description> <Title>Example PolygonSymbolizer Title> <Abstract>This is just a simple example of a polygon symbolizer. Abstract> Description> <Fill> <SvgParameter name="fill">#aaaaff SvgParameter> Fill> <Stroke> <SvgParameter name="stroke">#0000aa SvgParameter> Stroke> PolygonSymbolizer>
文本标注:
<TextSymbolizer version="1.1.0" xsi:schemaLocation="http://www.opengis.net/se Symbolizer.xsd" xmlns="http://www.opengis.net/se" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uom="http://www.opengeospatial.org/se/units/pixel"> <Name>MyTextSymbolizer Name> <Description> <Title>Example TextSymbolizer Title> <Abstract>This is just an example of a text symbolizer using the FormatNumber function. Abstract> Description> <Geometry> <ogc:PropertyName>locatedAt ogc:PropertyName> Geometry> <Label> <ogc:PropertyName>hospitalName ogc:PropertyName> Label> <Font> <SvgParameter name="font-family">Arial SvgParameter> <SvgParameter name="font-family">Sans-Serif SvgParameter> <SvgParameter name="font-style">italic SvgParameter> <SvgParameter name="font-size">10 SvgParameter> Font> <Halo /> <Fill> <SvgParameter name="fill">#000000 SvgParameter> Fill> TextSymbolizer>
[1] http://schemas.opengis.net/gml/
[2] http://schemas.opengis.net/filter/
[3] http://schemas.opengis.net/se