SLD简明教程

SLD简明教程

一、什么是SLD?

SLD全称:Styled Layer Descriptor ,翻译:风格化图层描述器(百度翻译);其是一种基于XML的标记语言,在一些软件尤其是geoserver中专门使用sld进行样式设计,因此“sld”基本等同于样式。

二、为什么使用SLD?

地理空间数据没有内在的视觉成分。为了查看数据,必须对其进行样式设置。设置样式指定用于在地图上渲染数据的颜色、厚度和其他可见属性。

三、SLD简介

(一)概念:

In GeoServer styling is most often specified using XML SLD style documents. Style documents are associated with GeoServer layers (featuretypes) to specify how they should be rendered. A style document specifies a single named layer and a user style for it. The layer and style can have metadata elements such as a name identifying them, a title for displaying them, and an abstract describing them in detail. Within the top-level style are one or more feature type styles, which act as “virtual layers” to provide control over rendering order (allowing styling effects such as cased lines for roads). Each feature type style contains one or more rules, which control how styling is applied based on feature attributes and zoom level. Rules select applicable features by using filters, which are logical conditions containing predicates, expressions and filter functions. To specify the details of styling for individual features, rules contain any number of symbolizers. Symbolizers specify styling for points, lines and polygons, as well as rasters and text labels.

在GeoServer中,最常使用XML SLD样式文档指定样式。样式文档与GeoServer图层【layers】(featuretypes)相关联,以指定它们的渲染方式。样式文档指定单个命名图层【named layer】及其用户样式【user style】。图层和样式可以具有元数据元素,例如标识它们的名称【name】、显示它们的标题【title】以及详细描述它们的摘要【abstract】。顶层样式中有一个或多个要素类型样式【feature type styles】,它们充当“虚拟图层”,以提供对渲染顺序的控制(允许设置样式效果,例如道路的大小写线)。每个要素类型样式都包含一个或多个规则【rules】,这些规则控制如何基于要素属性和缩放级别应用样式。规则通过使用过滤器【filters】来选择适用的特性,过滤器是包含谓词【predicates】、表达式【expressions 】和过滤器函数【filter functions】的逻辑条件。为了指定单个特征的样式细节,规则包含任意数量的符号器【symbolizers】。符号器指定点【points】、线【lines 】和多边形【polygons】以及光栅【rasters 】和文本元素【text labels】的样式。

(二)SLD包含哪些元素:

sld根元素为<StyledLayerDescriptor><StyledLayerDescriptor>包含任意数量的<NamedLayer><UserLayer>元素,他们一般包含<Name>和任意数量<UserStyle>元素,<UserStyle>元素一般包含任意数量<FeatureTypeStyle>元素,<FeatureTypeStyle>一般包含任意数量<Rule>元素,<Rule>元素一般包含<Filter>,任意数量的<PointSymbolizer><LineSymbolizer><PolygonSymbolizer><TextSymbolizer><RasterSymbolizer>

(三)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>
 1<?xml version="1.0" encoding="ISO-8859-1"?>
 2<sld:StyledLayerDescriptor version="1.0.0"
 3    xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
 4    xmlns:sld="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  <sld:NamedLayer>
 9    <sld:Name>Simple point</sld:Name>
10    <sld:UserStyle>
11      <sld:Title>GeoServer SLD Cook Book: Simple point</sld:Title>
12      <sld:FeatureTypeStyle>
13        <sld:Rule>
14          <sld:PointSymbolizer>
15            <sld:Graphic>
16              <sld:Mark>
17                <sld:WellKnownName>circle</sld:WellKnownName>
18                <sld:Fill>
19                  <sld:CssParameter name="fill">#FF0000</sld:CssParameter>
20                </sld:Fill>
21              </sld:Mark>
22              <sld:Size>6</sld:Size>
23            </sld:Graphic>
24          </sld:PointSymbolizer>
25        </sld:Rule>
26      </sld:FeatureTypeStyle>
27    </sld:UserStyle>
28  </sld:NamedLayer>
29</sld:StyledLayerDescriptor>

**Note:**元素需要一个它们所属的命名空间前缀。

四、SLD参考

(一)StyledLayerDescriptor

<StyledLayerDescriptor> 元素是sld的根元素,其包含以下元素。

标签要求描述
<NamedLayer>0~N对服务器中图层目录的引用
<UserLayer>0~N样式本身定义的层

(二)NamedLayer

<NamedLayer> 元素指定要设置样式的现有的图层以及要应用于该图层的样式,可以引用目录样式或自定义(显示)样式,如果都不使用则使用图层的默认样式。

标签要求描述
<Name>必要要设置样式的图层名称
<Description>不必要图层的说明
<NamedStyle>0~N要应用于图层的样式目录中样式的名称
<UserStyle>0~N应用于图层的显示样式定义

(三)UserLayer

<UserLayer> 元素自定义一个全新的图层,数据由InlineFeature提供,由于服务器没有该图层,需要自定义样式。

标签要求描述
<Name>不必要自定义的图层的名称
<Description>不必要图层的说明
<InlineFeature>不必要用于提供图层数据的功能集合,使用GML指定
<UserStyle>1~N应用于图层的显示样式定义

(四)UserStyle

<UserStyle> 元素为自定义样式部分。

标签要求描述
<Name>不必要样式的名称,用于外部引用(对于目录样式忽略)
<Title>不必要样式的标题
<Abstract>不必要样式的摘要说明
<IsDefault>不必要是否为NamedLayer的默认样式,在SLD库模式使用,值为1和0,其中0为默认值
<FeatureTypeStyle>1~N定义单个特征(要素)类型的符号

(五)FeatureTypeStyle

<FeatureTypeStyle> 元素用于指定图层的单个特征类型的样式,包含多个Rule。

标签要求描述
<Name>不必要未使用
<Title>不必要样式的标题
<Abstract>不必要样式的说明
<FeatureTypeName>不必要标识要应用的要素类型,如果样式适用多种类型要素则忽略
<Rule>1~N要应用于样式的规则

(六)Rule

<Rule> 元素定义了特征的描绘。规则将过滤器与任意数量的符号器组合在一起。使用规则中的符号呈现过滤条件为真的特征。

标签要求描述
<Name>不必要规则名称
<Title>不必要规则标题,显示列表和图例
<Abstract>不必要规则的摘要说明
<Filter>不必要过滤器进行条件筛选;类似于sql的where子句
<MinScaleDenominator>不必要当前规则的最小比例尺分母(包含分母)
<MaxScaleDenominator>不必要当前规则的最大比例尺分母(不含分母)
<PointSymbolizer>0~N定义点的样式**(将样式指定为点)**
<LineSymbolizer>0~N定义线的样式**(将样式指定为线)**
<PolygonSymbolizer>0~N定义面的样式**(将样式指定为线)**
<TextSymbolizer>0~N定义文本标签的样式
<RasterSymbolizer>0~N定义栅格数据的样式

(七)过滤器

过滤器是SLD中用于指定条件的机制。它们的功能与SQL“WHERE”子句相似。规则中使用过滤器来确定应将哪些样式应用于数据集中的哪些要素。SLD使用的过滤器语言遵循OGC过滤器编码标准。

筛选条件是通过使用比较运算符、空间运算符、逻辑运算符组合的两个或多个运算符来指定的。运算符通常用于将要过滤的特征的属性与其他属性或文字数据进行比较。

1、比较运算符
  • <PropertyIsEqualTo>
  • <PropertyIsNotEqualTo>
  • <PropertyIsLessThan>
  • <PropertyIsLessThanOrEqualTo>
  • <PropertyIsGreaterThan>
  • <PropertyIsGreaterThanOrEqualTo>
  • <PropertyIsLike>
  • <PropertyIsNull>
  • <PropertyIsBetween>

通常包含<PropertyName></Literal><PropertyName>用来指定字段,</Literal>用来指定值。

例子:

以下筛选器选择其 NAME 属性的值为“纽约”:

<PropertyIsEqualTo>
   <PropertyName>NAME</PropertyName>
   <Literal>New York</Literal>
</PropertyIsEqualTo>

Note:

1.字段比较可以包含属性 matchCase ,此属性默认值为true,如果该属性设为false则字符串比较不区分大小写。

例子:

<PropertyIsEqualTo matchCase="false">
   <PropertyName>NAME</PropertyName>
   <Literal>New York</Literal>
</PropertyIsEqualTo>

2.PropertyIsLike可以具有以下属性:

  • wildCard 指定与任何零个或多个字符序列匹配的模式字符
  • singleChar 指定与任何单个字符匹配的模式字符
  • escapeChar 指定可用于转义这些模式字符的转义字符

3.<PropertyIsNull> 测试属性值(字段值)是否为空。它只有 <PropertyName> 元素。

4.<PropertyIsBetween>运算符测试表达式值是否位于由下限和上限(包括上限)给定的范围内。包含以下元素:<PropertyName><LowerBoundary><UpperBoundary>;

例子:

<PropertyIsBetween>
   <PropertyName>pop</PropertyName>
   <UpperBoundary>
   		<Literal>20000</Literal>
   </UpperBoundary>
   <LowerBoundary>
   		<Literal>10000</Literal>
   </LowerBoundary>
</PropertyIsEqualTo>
2、空间运算
  • <Intersects> -测试两个几何图形是否相交
  • <Disjoint> -测试两个几何图形是否不相交(不交互)
  • <Contains> -测试几何图形是否包含另一个几何图形
  • <Within> -测试几何图形是否在另一个几何图形中
  • <Touches> -测试两个几何图形是否接触
  • <Crosses> -测试两个几何图形是否交叉
  • <Overlaps> -测试两个几何图形是否重叠
  • <Equals> -测试两个几何图形是否拓扑相等

它们一般包含两个元素,<PropertyName>GML

例子:

此过滤器选择与点(1,1)相交的几何图形的特征。

<Intersects>
  <PropertyName>GEOMETRY</PropertyName>
  <gml:Point>
    <gml:coordinates>1 1</gml:coordinates>
  </gml:Point>
</Intersects>

此过滤器选择几何图形与多边形重叠的要素。

<Overlaps>
  <PropertyName>Geometry</PropertyName>
  <gml:Polygon srsName="http://www.opengis.net/gml/srs/epsg.xml#63266405">
    <gml:outerBoundaryIs>
      <gml:LinearRing>
         <gml:posList> ... </gml:posList>
      </gml:LinearRing>
    </gml:outerBoundaryIs>
  </gml:Polygon>
 </Overlaps>
  • <DWithin>-不超过于指定几何体的距离
  • <Beyond>-超过于指定几何体的距离

它们包含以下元素:<PropertyName>GML<Distance>,其中<Distance>可以指定units属性。

  • <BBOX>-选择包围盒内的集合数据

它包含<PropertyName><gml:Box>元素。

例子:

此过滤器选择在 [-10,0 : 10,10] 内的几何体。

<BBOX>
  <PropertyName>GEOMETRY</PropertyName>
  <gml:Box srsName="urn:x-ogc:def:crs:EPSG:4326">
    <gml:coord>
      <gml:X>-10</gml:X> <gml:Y>0</gml:Y>
    </gml:coord>
    <gml:coord>
      <gml:X>10</gml:X> <gml:Y>10</gml:Y>
    </gml:coord>
  </gml:Box>
</BBOX>

Note:<gml:X>代表纬度,<gml:Y>代表经度。

3、逻辑运算
  • <And>
  • <Or>
  • <Not>

例子:NANE字段等于New York并且于点[1,1]相交的。

<And>
   <PropertyIsEqualTo>
      <PropertyName>NAME</PropertyName>
      <Literal>New York</Literal>
   </PropertyIsEqualTo>
   <Intersects>
      <PropertyName>GEOMETRY</PropertyName>
      <Literal>
         <gml:Point>
             <gml:coordinates>1 1</gml:coordinates>
         </gml:Point>
      </Literal>
   </Intersects>
</And>
4、算术运算符
  • <Add>
  • <Sub>
  • <Mul>
  • <Div>
5、Functions

(八)PointSymbolizer

<PointSymbolizer>元素使用可选的可选 <Geometry> 元素和必需的 <Graphic>指定点符号。

标签要求描述
<Geometry>不必要指定几何属性
<Graphic>必要指定点符号的样式

Note:

1、任何类型都可以使用<PointSymbolizer>使用时表示几何图形的质心。

2、本节的所有demo参考:

1、Graphic

Graphic>元素包含一个<ExternalGraphic><Mark>元素(至少包含其中一个)。前者指定外部图像(如png或svg)为标注样式,后者指定矢量形状为标注样式(如三角形,正方形等)。

标签要求描述
<ExternalGraphic>不必要(使用<Mark>时)指定外部图像作为符号
<Mark>不必要(使用<ExternalGraphic>时)指定著名的形状作为符号
<Opacity>不必要指定符号的不透明度(透明度)。值的范围从 0 (完全透明)至 1 (完全不透明)。值可以包含 表达式。 默认是 1 (不透明)。
<Size>不必要指定符号的大小(像素)。当与图像文件一起使用时,这将指定图像的高度,并相应地缩放宽度。如果省略,则使用本机符号大小。值可以包含表达式
<Rotation>不必要指定符号围绕其中心点的旋转,以十进制度数表示。正值表示顺时针旋转,负值表示逆时针旋转。值可以包含表达式 默认是 0 .

***Note:***表达式一般为<PropertyName><Literal>;

2、ExternalGraphic
标签要求描述
<OnlineResource>必要这个 xlink:href 属性指定图像文件的位置。该值可以是相对于SLD目录的URL或本地路径名。该值可以包含由以下项分隔的cql表达式 ${{ }} . 属性 xlink:type="simple" 也是必需的。元素不包含任何内容。
<Format>必要图像格式的mime类型。支持大多数标准的Web图像格式。常见的mime类型是 image/pngimage/jpegimage/gifimage/svg+xml

例子:

 <PointSymbolizer>
   <Graphic>
     <ExternalGraphic>
       <OnlineResource xlink:type="simple"
                       xlink:href="file:///var/www/htdocs/sun.png" />
       <Format>image.png</Format>
     </ExternalGraphic>
   </Graphic>
 </PointSymbolizer>
3、Mark
标签要求描述
<WellKnownName>不必要形状的名称。标准SLD形状有 circlesquaretrianglestarcross ,或 x 。默认值为 square
<Fill>不必要指定填充颜色
<Stroke>不必要指定线条颜色

例子:

 <PointSymbolizer>
   <Graphic>
     <Mark>
       <WellKnownName>circle</WellKnownName>
       <Fill>
         <CssParameter name="fill">#FF0000</CssParameter>
       </Fill>
     </Mark>
     <Size>6</Size>
   </Graphic>
 </PointSymbolizer>

(九)LineSymbolizer

只有长度的几何图形。

元素要求描述
<Geometry>不必要指定几何属性
<Stroke>必要指定线条样式
<PerpendicularOffset>不必要指定线条的垂直偏移量,正值向左负值向右(多边形正值向外负值向内,3像素后性能会降低)

Note:

1、任何类型都可以使用<LineSymbolizer>,点使用时视为0长度线,多边形使用时作用于边界。

2、本节的所有demo参考:线

1、Stroke
元素要求描述
<GraphicFill>不必要以重复模式呈现线条的像素
<GraphicStroke>不必要用重复的线性图形渲染线条
<CssParameter>0~N确定线条样式参数

Note:

1、<GraphicFill>包含子元素<Graphic> ,参考PointSymbolizer的<Graphic> 部分。

2、<GraphicStroke>包含子元素<Graphic> ,参考PointSymbolizer的<Graphic> 部分,图形符号的间距使用<Size><Stroke><CSSParameter name="stroke-dasharray">元素指定。

2、CssParameter
属性要求描述
name="stroke"不必要指定给定给线条的纯色,格式为 #RRGGBB .默认为黑色 (#000000
name="stroke-width"不必要指定线条的宽度(像素)。默认为 1 .
name="stroke-opacity"不必要指定线条的不透明度(透明度)。值是一个介于 0 (完全透明)和 1 (完全不透明)。默认为 1 .
name="stroke-linejoin"不必要确定如何在线段的交点处呈现线条。可能的值是 mitre (尖角) round (圆角),以及 bevel (对角)。默认为 mitre .
name="stroke-linecap"不必要确定线条末端的渲染方式。可能的值是 butt (锋利的方形边缘) round (圆形边缘),以及 square (略微拉长的方形边缘)。默认为 butt .
name="stroke-dasharray"不必要将破折号模式编码为由空格分隔的一系列数字。奇数索引数(第一、第三等)确定以像素为单位绘制线条的长度,偶数索引数(第二、第四等)确定以像素为单位空白线条的长度。默认值是一条连续的线。 Starting from version 2.1 短划线数组可以与图形笔画组合,以生成具有交替符号或线条和符号混合的复杂线条样式。
name="stroke-dashoffset"不必要以像素为单位指定到 dasharray 开始绘制的图案。默认为 0 .

(十)PolygonSymbolizer

<PolygonSymbolizer> 包含可选 <Geometry> 元素和两个元素 <Fill><Stroke>

元素要求描述
<Geometry>不必要指定几何属性
<Fill>不必要指定多边形内部样式
<Stroke>不必要指定多边形边框样式

Note:

1、任何类型都可以使用<PolygonSymbolizer> ,点被视为小的正方形。线性几何体连接末端来闭合。

2、本节的所有demo参考:

1、Stroke

同线的Stroke。

2、Fill
元素要求描述
<GraphicFill>不必要以重复模式呈现多边形的填充
<CssParameter>0~N指定用纯色填充的参数

Note:

1、<GraphicFill>包含子元素<Graphic> ,参考PointSymbolizer的<Graphic> 部分。

3、CssParameter
属性要求描述
name="fill"不必要指定填充颜色 #RRGGBB ,默认为灰色 (#808080
name="fill-opacity"不必要指定填充的不透明度(透明度),该值是介于 0 (完全透明)和 1 (完全不透明),默认为 1

(十一)TextSymbolizer

贴标是一项复杂的工作,有效的贴标对于获得清晰、直观的地图输出至关重要。因此,SLD提供了许多选项来控制标签的放置。

元素要求描述
<Geometry>不必要指定几何属性
<Label>不必要指定文本内容,可使用<PropertyName>指定字段值为文本内容
<Font>不必要设置字体样式(字体,是否加粗,是否倾斜,字体大小)
<LabelPlacement>不必要指定标签相对于要标记的几何图形的位置
<Halo>不必要文本内容的光晕
<Fill>不必要文本内容的颜色
<Graphic>不必要文本后面的图形
<Priority>不必要冲突期间的文本显示优先级,默认值1000。
<VendorOption>0~N可选的配置属性

Note:

1、任何类型都可以使用<TextSymbolizer> ,线和面的标记将放在质心。

2、标签的扩展用法:标签

1、Label

<Label> 可以直接指定文本,也可以使用<PropertyName>指定要素的字段为标签内容,如不需标签使用<![CDATA[ ]]> 分隔符留白。

2、Font

包含一系列<CssParameter> 元素,<CssParameter> 元素可以有以下属性。

属性要求描述
name="font-family"不必要指定字体,默认Times
name="font-style"不必要字体的样式。选项包括 normalitalic 、以及 oblique ,默认值为 normal
name="font-weight"不必要字体的粗细。选项包括 normalbold ,默认值为 normal
name="font-size"不必要字体的大小(像素),默认为 10
3、LabelPlacement
元素要求描述
<PointPlacement>不必要指定点标记的几何位置
<LinePlacement>不必要指定线沿线标记的几何位置
4、PointPlacement
元素要求描述
<AnchorPoint>不必要标签边界框中与标签点对齐的位置。位置由指定 <AnchorPointX><AnchorPointY> 子元素,值在范围内 [0-1]
<Displacement>不必要指定标签点应与原始点偏移。偏移量由指定 <DisplacementX><DisplacementY> 子元素,值以像素为单位。默认是 (0, 0)
<Rotation>不必要标签顺时针旋转(负值为逆时针)。默认是 0
5、LinePlacement
元素要求描述
<PerpendicularOffset>不必要与线性路径的偏移量,以像素为单位。正值偏移到行的左侧,负值偏移到行的右侧。默认是 0
6、Halo
元素要求描述
<Radius>不必要光晕半径,以像素为单位。默认是 1
<Fill>不必要包含元素CssParameter,其具有fillfill-opacity属性,默认值为#FFFFFF和100%不透明。

五、Demo

(一)InlineFeature

<sld:StyledLayerDescriptor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                           xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
                           xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:ogc="http://www.opengis.net/ogc"
                           xmlns:sld="http://www.opengis.net/sld" version="1.0.0">
  <sld:NamedLayer>
    <sld:Name>states</sld:Name>
    <sld:NamedStyle>
      <sld:Name>pophatch</sld:Name>
      <!-- <sld:Name>population</sld:Name> -->
    </sld:NamedStyle>
  </sld:NamedLayer>

  <sld:UserLayer>
    <sld:Name>Inline</sld:Name>
    <sld:InlineFeature>
      <sld:FeatureCollection>
        <sld:featureMember>
          <feature>
            <geometryProperty>
              <gml:Polygon>
                <gml:outerBoundaryIs>
                  <gml:LinearRing>
                    <gml:coordinates>
                      -127.0,51.0 -110.0,51.0 -110.0,41.0 -127.0,41.0 -127.0,51.0
                    </gml:coordinates>
                  </gml:LinearRing>
                </gml:outerBoundaryIs>
              </gml:Polygon>
            </geometryProperty>
            <title>Pacific NW </title>
          </feature>
        </sld:featureMember>
      </sld:FeatureCollection>
    </sld:InlineFeature>
    <sld:LayerFeatureConstraints>
      <sld:FeatureTypeConstraint/>
    </sld:LayerFeatureConstraints>
    <sld:UserStyle>
      <sld:FeatureTypeStyle>
        <sld:Rule>
          <sld:PolygonSymbolizer>
            <sld:Stroke>
              <sld:CssParameter name="stroke">#FF0000</sld:CssParameter>
              <sld:CssParameter name="stroke-width">2</sld:CssParameter>
            </sld:Stroke>
          </sld:PolygonSymbolizer>
          <sld:TextSymbolizer>
            <sld:Label>
              <ogc:PropertyName>title</ogc:PropertyName>
            </sld:Label>
            <sld:Fill>
              <sld:CssParameter name="fill">#FF0000</sld:CssParameter>
            </sld:Fill>
          </sld:TextSymbolizer>
        </sld:Rule>
      </sld:FeatureTypeStyle>
    </sld:UserStyle>
  </sld:UserLayer>
</sld:StyledLayerDescriptor>

(二)层级(比例)控制

矢量boundaries_low_poi_capital_6.shp

<?xml version="1.0" encoding="gb2312" ?>
<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></Name>
    <UserStyle>
      <FeatureTypeStyle>
        <Rule>
          <MaxScaleDenominator>20000000</MaxScaleDenominator>
          <MinScaleDenominator>10000000</MinScaleDenominator>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>square</WellKnownName>
                <Fill>
                  <CssParameter name="fill">#FF0000</CssParameter>
                </Fill>
              </Mark>
              <Size>10</Size>
            </Graphic>
          </PointSymbolizer>
        </Rule>
        <Rule>
          <MinScaleDenominator>20000000</MinScaleDenominator>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>triangle</WellKnownName>
                <Fill>
                  <CssParameter name="fill">#0000FF</CssParameter>
                </Fill>
              </Mark>
              <Size>4</Size>
            </Graphic>
          </PointSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

(三)比较运算符过滤器

过滤器1:矢量sld_cookbook_point.shp

<?xml version="1.0" encoding="gb2312" ?>
<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></Name>
    <UserStyle>
      <FeatureTypeStyle>
        <Rule>
          <ogc:Filter>
            <ogc:PropertyIsGreaterThan>
              <ogc:PropertyName>pop</ogc:PropertyName>
              <ogc:Literal>100000</ogc:Literal>
            </ogc:PropertyIsGreaterThan>
          </ogc:Filter>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>circle</WellKnownName>
                <Fill><CssParameter name="fill">#FF0000</CssParameter></Fill>
              </Mark>
            </Graphic>
          </PointSymbolizer>
        </Rule>
        <Rule>
          <ogc:Filter>
            <ogc:PropertyIsLessThan>
              <ogc:PropertyName>pop</ogc:PropertyName>
              <ogc:Literal>100000</ogc:Literal>
            </ogc:PropertyIsLessThan>
          </ogc:Filter>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>x</WellKnownName>
                <Fill><CssParameter name="fill">#0000FF</CssParameter></Fill>
              </Mark>
            </Graphic>
          </PointSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

过滤器2:矢量sld_cookbook_point.shp

<?xml version="1.0" encoding="gb2312" ?>
<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></Name>
    <UserStyle>
      <FeatureTypeStyle>
        <Rule>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>name</ogc:PropertyName>
              <ogc:Literal>Borfin</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>circle</WellKnownName>
                <Fill><CssParameter name="fill">#FF0000</CssParameter></Fill>
              </Mark>
            </Graphic>
          </PointSymbolizer>
        </Rule>
         <Rule>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>name</ogc:PropertyName>
              <ogc:Literal>Thisland</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>square</WellKnownName>
                <Fill><CssParameter name="fill">#009900</CssParameter></Fill>
              </Mark>
            </Graphic>
          </PointSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

(四)空间运算符过滤器

过滤器3:矢量sld_cookbook_point.shp

<?xml version="1.0" encoding="gb2312" ?>
<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:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <NamedLayer>
    <Name></Name>
    <UserStyle>
      <FeatureTypeStyle>
        <Rule>
          <ogc:Filter>
            <ogc:BBOX>
              <ogc:PropertyName>the_geom</ogc:PropertyName>
              <gml:Box srsName="urn:x-ogc:def:crs:EPSG:4326">
                <gml:coord>
                  <gml:X>90</gml:X> <gml:Y>-180</gml:Y>
                </gml:coord>
                <gml:coord>
                  <gml:X>-90</gml:X> <gml:Y>-18</gml:Y>
                </gml:coord>
              </gml:Box>
            </ogc:BBOX>
          </ogc:Filter>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>circle</WellKnownName>
                <Fill><CssParameter name="fill">#FF0000</CssParameter></Fill>
              </Mark>
            </Graphic>
          </PointSymbolizer>
        </Rule>
        <Rule>
          <ogc:Filter>
            <ogc:BBOX>
              <ogc:PropertyName>the_geom</ogc:PropertyName>
              <gml:Box srsName="urn:x-ogc:def:crs:EPSG:4326">
                <gml:coord>
                  <gml:X>90</gml:X> <gml:Y>-18</gml:Y>
                </gml:coord>
                <gml:coord>
                  <gml:X>-90</gml:X> <gml:Y>180</gml:Y>
                </gml:coord>
              </gml:Box>
            </ogc:BBOX>
          </ogc:Filter>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>square</WellKnownName>
                <Fill><CssParameter name="fill">#009900</CssParameter></Fill>
              </Mark>
            </Graphic>
          </PointSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

(五)函数运用之坐标偏移

矢量sld_cookbook_point.shp

<?xml version="1.0" encoding="gb2312" ?>
<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></Name>
    <UserStyle>
      <FeatureTypeStyle>
        <Rule>
          <Name>110000</Name>
          <Title>110000</Title>
          <PointSymbolizer>
            <Geometry>
              <ogc:Function name="offset">
                <ogc:PropertyName>the_geom</ogc:PropertyName>
                <ogc:Literal>0.00018</ogc:Literal>
                <ogc:Literal>-0.00018</ogc:Literal>
              </ogc:Function>
            </Geometry>
            <Graphic>
              <Mark>
                <WellKnownName>circle</WellKnownName>
                <Fill>
                  <CssParameter name="fill">#0033CC</CssParameter>
                </Fill>
              </Mark>
              <Size>16</Size>
            </Graphic>
          </PointSymbolizer>
        </Rule>
        <Rule>
          <Name>110000</Name>
          <Title>110000</Title>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>x</WellKnownName>
                <Fill>
                  <CssParameter name="fill">#ff0000</CssParameter>
                </Fill>
              </Mark>
              <Size>16</Size>
            </Graphic>
          </PointSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

(六)坐标偏移实现阴影效果

矢量:geoserver topp:states

<StyledLayerDescriptor version="1.0.0" 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"
  xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
  <NamedLayer>
    <Name>Default Polygon</Name>
    <UserStyle>
      <Title>Default polygon style</Title>
      <Abstract>A sample style that just draws out a solid gray interior with a black 1px outline</Abstract>
      <FeatureTypeStyle>
        <Rule>
          <Title>Shadow</Title>
          <PolygonSymbolizer>
            <Geometry>
               <ogc:Function name="offset">
                  <ogc:PropertyName>the_geom</ogc:PropertyName>
                  <ogc:Literal>0.4</ogc:Literal>
                  <ogc:Literal>-0.4</ogc:Literal>
               </ogc:Function>
            </Geometry>
            <Fill>
              <CssParameter name="fill">#555555</CssParameter>
            </Fill>
          </PolygonSymbolizer>
        </Rule>
      </FeatureTypeStyle>
      <FeatureTypeStyle>
        <Rule>
          <Title>Polygon</Title>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#CCCCCC</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
              <CssParameter name="stroke-width">0.5</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
      </FeatureTypeStyle>

    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

(七)短划线数组和线偏移实现仿铁路效果

矢量:geoservertopp:tasmania_roads

<?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>Dash - symbol</Name>
    <UserStyle>
      <Title>SLD Cook Book: Dash/Symbol line</Title>
      <FeatureTypeStyle>
        <Rule>
          <LineSymbolizer>
            <Stroke>
              <GraphicFill>
                <Graphic>
                  <Mark>
                    <WellKnownName>x</WellKnownName>
                    <Stroke>
                      <CssParameter name="stroke">#000000</CssParameter>
                      <CssParameter name="stroke-width">1</CssParameter>
                    </Stroke>
                  </Mark>
                  <Size>1</Size>
                </Graphic>
              </GraphicFill>
              <CssParameter name="stroke-dasharray">10 10</CssParameter>
            </Stroke>
          </LineSymbolizer>
          <LineSymbolizer>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
            </Stroke>
            <PerpendicularOffset>1.5</PerpendicularOffset>
          </LineSymbolizer>
          <LineSymbolizer>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
            </Stroke>
            <PerpendicularOffset>-1.5</PerpendicularOffset>
          </LineSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

(八)TextSymbolizer实现多字段换行标记

矢量:boundaries_low_poi_capital_6

<?xml version="1.0" encoding="gb2312" ?>
<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></Name>
    <UserStyle>
      <FeatureTypeStyle>
        <Rule>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>circle</WellKnownName>
                <Fill><CssParameter name="fill">#FF0000</CssParameter></Fill>
              </Mark>
              <Size>10</Size>
            </Graphic>
          </PointSymbolizer>
          <TextSymbolizer>
            <Label>
              <ogc:PropertyName>NAME</ogc:PropertyName> <![CDATA[
					]]>(<ogc:PropertyName>cc_poi</ogc:PropertyName>)
            </Label>
          </TextSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

(九)通过位移解决冲突

矢量:geoserverpoi

<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor version="1.0.0" 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"
                       xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
  <NamedLayer>
    <Name>poi</Name>
    <UserStyle>
      <Name>poi</Name>
      <Title>Points of interest</Title>
      <Abstract>Manhattan points of interest</Abstract>
      <FeatureTypeStyle>
        <Rule>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>circle</WellKnownName>
                <Fill>
                  <CssParameter name="fill">#FF0000</CssParameter>
                  <CssParameter name="fill-opacity">1.0</CssParameter>
                </Fill>
              </Mark>
              <Size>11</Size>
            </Graphic>
          </PointSymbolizer>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>circle</WellKnownName>
                <Fill>
                  <CssParameter name="fill">#EDE513</CssParameter>
                  <CssParameter name="fill-opacity">1.0</CssParameter>
                </Fill>
              </Mark>
              <Size>7</Size>
            </Graphic>
          </PointSymbolizer>
        </Rule>
        <Rule>
          <TextSymbolizer>
            <Label>
              <ogc:PropertyName>NAME</ogc:PropertyName>
            </Label>
            <Font>
              <CssParameter name="font-family">Arial</CssParameter>
              <CssParameter name="font-weight">Bold</CssParameter>
              <CssParameter name="font-size">14</CssParameter>
            </Font>
            <LabelPlacement>
              <PointPlacement>
                <AnchorPoint>
                  <AnchorPointX>0.5</AnchorPointX>
                  <AnchorPointY>0.5</AnchorPointY>
                </AnchorPoint>
                <Displacement>
                  <DisplacementX>0</DisplacementX>
                  <DisplacementY>-12</DisplacementY>
                </Displacement>
              </PointPlacement>
            </LabelPlacement>
            <Halo>
              <Radius>
                <ogc:Literal>2</ogc:Literal>
              </Radius>
              <Fill>
                <CssParameter name="fill">#FFFFFF</CssParameter>
              </Fill>
            </Halo>
            <Fill>
              <CssParameter name="fill">#000000</CssParameter>
            </Fill>
            <VendorOption name="spaceAround">10</VendorOption>
            <VendorOption name="maxDisplacement">50</VendorOption>
            <VendorOption name="displacementMode">W,N,S</VendorOption>
          </TextSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

(十)可图例偏移

矢量:geoserverpoi

<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor version="1.0.0" 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"
                       xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
  <NamedLayer>
    <Name>poi</Name>
    <UserStyle>
      <Name>poi</Name>
      <Title>Points of interest</Title>
      <Abstract>Manhattan points of interest</Abstract>
      <FeatureTypeStyle>
        <Rule>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>x</WellKnownName>
                <Fill>
                  <CssParameter name="fill">#0000FF</CssParameter>
                  <CssParameter name="fill-opacity">1.0</CssParameter>
                </Fill>
              </Mark>
              <Size>10</Size>
            </Graphic>
          </PointSymbolizer>
          <TextSymbolizer>
            <Label>
              <ogc:PropertyName>NAME</ogc:PropertyName>
            </Label>
            <Font>
              <CssParameter name="font-family">Arial</CssParameter>
              <CssParameter name="font-weight">Bold</CssParameter>
              <CssParameter name="font-size">14</CssParameter>
            </Font>
            <LabelPlacement>
              <PointPlacement>
                <AnchorPoint>
                  <AnchorPointX>0.5</AnchorPointX>
                  <AnchorPointY>0.5</AnchorPointY>
                </AnchorPoint>
                <Displacement>
                  <DisplacementX>0</DisplacementX>
                  <DisplacementY>-16</DisplacementY>
                </Displacement>
              </PointPlacement>
            </LabelPlacement>
            <Halo>
              <Radius>
                <ogc:Literal>2</ogc:Literal>
              </Radius>
              <Fill>
                <CssParameter name="fill">#FFFFFF</CssParameter>
              </Fill>
            </Halo>
            <Fill>
              <CssParameter name="fill">#000000</CssParameter>
            </Fill>
          </TextSymbolizer>
          <TextSymbolizer>
            <Label>
              <![CDATA[ ]]>
            </Label>
            <LabelPlacement>
              <PointPlacement>
                <AnchorPoint>
                  <AnchorPointX>0.5</AnchorPointX>
                  <AnchorPointY>0.5</AnchorPointY>
                </AnchorPoint>
                <Displacement>
                  <DisplacementX>0</DisplacementX>
                  <DisplacementY>8</DisplacementY>
                </Displacement>
              </PointPlacement>
            </LabelPlacement>
            <Graphic>
              <ExternalGraphic>
                <OnlineResource
                                xlink:type="simple"
                                xlink:href="130100.png" />
                <Format>image/png</Format>
              </ExternalGraphic>
              <Size>16</Size>
            </Graphic>
          </TextSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>
  • 8
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值