Skip to content

图层样式

概览

本章主要讲述Geoserver中如何对图层进行样式设置。包括:

  • SLD样式说明
  • 点、线、面、栅格数据样式设置
  • css插件添加与使用
  • 样式生成工具的介绍与使用

一、SLD介绍

在Geoserver中,图层样式的设置是通过一种基于XML标记语言SLD(Styled Layer Descriptor)来完成的。如下所示为一个SLD的基本结构。

xml
<?xml version="1.0" encoding="UTF-8"?>
<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">
  <!-- a Named Layer is the basic building block of an SLD document -->
  <NamedLayer>
    <!-- 图层名称 -->
    <Name>layer_name</Name>
    <UserStyle>
      <!-- 样式标题和摘要  -->
      <Title>样式标题</Title>
      <Abstract>样式摘要</Abstract>
      <!-- 要素样式 -->
      <FeatureTypeStyle>
        <Rule>
          <!-- 规则名称、标题和摘要 -->
          <Name>规则名称</Name>
          <Title>规则标题</Title>
          <Abstract>规则摘要</Abstract>
          <!-- 具体的样式设定 -->
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

在SLD文档中,一些标记有前缀,如ogc:。这是因为它们在XML名称空间中定义。顶层StyledLayerDescriptor标记(第2-7行)指定了两个XML名称空间,一个称为xmlns,另一个称为xmlns:ogc。第一个名称空间是文档的默认名称空间,因此属于它的标记不需要前缀。属于第二种类型的标签需要前缀ogc:

一种比较快速了解SLD的方式是学习样式示例,如下所示为基本点、线、面和栅格的样式。

1. 点样式

xml
<?xml version="1.0" encoding="UTF-8"?>
<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">
  <!-- a Named Layer is the basic building block of an SLD document -->
  <NamedLayer>
    <Name>default_point</Name>
    <UserStyle>
    <!-- Styles can have names, titles and abstracts -->
      <Title>Red Square Point</Title>
      <Abstract>A sample style that draws a red square point</Abstract>
      <!-- FeatureTypeStyles describe how to render different features -->
      <!-- A FeatureTypeStyle for rendering points -->
      <FeatureTypeStyle>
        <Rule>
          <Name>rule1</Name>
          <Title>Red Square Point</Title>
          <Abstract>A 6 pixel square with a red fill and no stroke</Abstract>
            <PointSymbolizer>
              <Graphic>
                <Mark>
                  <WellKnownName>square</WellKnownName>
                  <Fill>
                    <CssParameter name="fill">#FF0000</CssParameter>
                  </Fill>
                </Mark>
              <Size>6</Size>
            </Graphic>
          </PointSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

上述为一个基本的点的样式,如下为一个点相对比较完成的样式设置,包括点样式如大小、填充颜色、填充透明度、边框大小、边框颜色,标注样式如字体大小、字体颜色、字体描边等。

xml
<?xml version="1.0" encoding="UTF-8"?>
<sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" 
  xmlns:sld="http://www.opengis.net/sld" 
  xmlns:gml="http://www.opengis.net/gml" 
  xmlns:ogc="http://www.opengis.net/ogc" 
  version="1.0.0">
    <sld:UserLayer>
        <sld:LayerFeatureConstraints>
            <sld:FeatureTypeConstraint/>
        </sld:LayerFeatureConstraints>
        <sld:UserStyle>
            <sld:Name>capital</sld:Name>
            <sld:FeatureTypeStyle>
                <sld:Name>group0</sld:Name>
                <sld:FeatureTypeName>Feature</sld:FeatureTypeName>
                <sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier>
                <sld:SemanticTypeIdentifier>simple</sld:SemanticTypeIdentifier>
                <sld:Rule>
                    <sld:Name>default rule</sld:Name>
                    <sld:PointSymbolizer>
                        <sld:Graphic>
                            <sld:Mark>
                                <sld:WellKnownName>circle</sld:WellKnownName>
                                <sld:Fill>
                                    <sld:CssParameter name="fill">#FF0000</sld:CssParameter>
                                </sld:Fill>
                                <sld:Stroke>
                                    <sld:CssParameter name="stroke">#0000FF</sld:CssParameter>
                                    <sld:CssParameter name="stroke-width">2.0</sld:CssParameter>
                                </sld:Stroke>
                            </sld:Mark>
                            <sld:Size>10</sld:Size>
                        </sld:Graphic>
                    </sld:PointSymbolizer>
                    <sld:TextSymbolizer>
                        <sld:Label>
                            <ogc:PropertyName>name</ogc:PropertyName>
                        </sld:Label>
                        <sld:Font>
                            <sld:CssParameter name="font-family">微软雅黑</sld:CssParameter>
                            <sld:CssParameter name="font-size">11.0</sld:CssParameter>
                            <sld:CssParameter name="font-style">normal</sld:CssParameter>
                            <sld:CssParameter name="font-weight">bold</sld:CssParameter>
                        </sld:Font>
                        <sld:LabelPlacement>
                            <sld:PointPlacement>
                                <sld:AnchorPoint>
                                    <sld:AnchorPointX>0.5</sld:AnchorPointX>
                                    <sld:AnchorPointY>1.0</sld:AnchorPointY>
                                </sld:AnchorPoint>
                                <sld:Displacement>
                                    <sld:DisplacementX>0.0</sld:DisplacementX>
                                    <sld:DisplacementY>-10.0</sld:DisplacementY>
                                </sld:Displacement>
                            </sld:PointPlacement>
                        </sld:LabelPlacement>
                        <sld:Halo>
                            <sld:Radius>1</sld:Radius>
                            <sld:Fill>
                                <sld:CssParameter name="fill">#FFFFFF</sld:CssParameter>
                            </sld:Fill>
                        </sld:Halo>
                        <sld:Fill>
                            <sld:CssParameter name="fill">#FF0000</sld:CssParameter>
                        </sld:Fill>
                    </sld:TextSymbolizer>
                </sld:Rule>
            </sld:FeatureTypeStyle>
        </sld:UserStyle>
    </sld:UserLayer>
</sld:StyledLayerDescriptor>

2. 线样式

xml
<?xml version="1.0" encoding="UTF-8"?>
<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">
  <!-- a Named Layer is the basic building block of an SLD document -->
  <NamedLayer>
    <Name>default_line</Name>
    <UserStyle>
    <!-- Styles can have names, titles and abstracts -->
      <Title>Blue Line</Title>
      <Abstract>A sample style that draws a line</Abstract>
      <!-- FeatureTypeStyles describe how to render different features -->
      <!-- A FeatureTypeStyle for rendering lines -->
      <FeatureTypeStyle>
        <Rule>
          <Name>rule1</Name>
          <Title>Blue Line</Title>
          <Abstract>A solid blue line with a 1 pixel width</Abstract>
          <LineSymbolizer>
            <Stroke>
              <CssParameter name="stroke">#0000FF</CssParameter>
            </Stroke>
          </LineSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

如上为线基本的样式设置,如下为一个相对比较完整的线的样式,如:线宽、颜色、透明度、虚线、标注等。

xml
<?xml version="1.0" encoding="UTF-8"?>
<sld:StyledLayerDescriptor 
xmlns="http://www.opengis.net/sld" 
xmlns:sld="http://www.opengis.net/sld" 
xmlns:gml="http://www.opengis.net/gml" 
xmlns:ogc="http://www.opengis.net/ogc" 
version="1.0.0">
    <sld:UserLayer>
        <sld:LayerFeatureConstraints>
            <sld:FeatureTypeConstraint/>
        </sld:LayerFeatureConstraints>
        <sld:UserStyle>
            <sld:Name>road</sld:Name>
            <sld:FeatureTypeStyle>
                <sld:Name>group0</sld:Name>
                <sld:FeatureTypeName>Feature</sld:FeatureTypeName>
                <sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier>
                <sld:SemanticTypeIdentifier>simple</sld:SemanticTypeIdentifier>
                <sld:Rule>
                    <sld:Name>default rule</sld:Name>
                    <sld:LineSymbolizer>
                        <sld:Stroke>
                            <sld:CssParameter name="stroke">#FF0000</sld:CssParameter>
                            <sld:CssParameter name="stroke-linecap">round</sld:CssParameter>
                            <sld:CssParameter name="stroke-linejoin">round</sld:CssParameter>
                            <sld:CssParameter name="stroke-width">2.0</sld:CssParameter>
                            <sld:CssParameter name="stroke-dasharray">10.0 5.0</sld:CssParameter>
                        </sld:Stroke>
                    </sld:LineSymbolizer>
                    <sld:TextSymbolizer>
                        <sld:Label>
                            <ogc:PropertyName>type</ogc:PropertyName>
                        </sld:Label>
                        <sld:Font>
                            <sld:CssParameter name="font-family">Arial</sld:CssParameter>
                            <sld:CssParameter name="font-size">12.0</sld:CssParameter>
                            <sld:CssParameter name="font-style">normal</sld:CssParameter>
                            <sld:CssParameter name="font-weight">bold</sld:CssParameter>
                        </sld:Font>
                        <sld:LabelPlacement>
                            <sld:LinePlacement>
                                <sld:PerpendicularOffset>10.0</sld:PerpendicularOffset>
                            </sld:LinePlacement>
                        </sld:LabelPlacement>
                        <sld:Halo>
                            <sld:Radius>1</sld:Radius>
                            <sld:Fill>
                                <sld:CssParameter name="fill">#FFFFFF</sld:CssParameter>
                            </sld:Fill>
                        </sld:Halo>
                        <sld:Fill>
                            <sld:CssParameter name="fill">#000000</sld:CssParameter>
                        </sld:Fill>
                        <sld:VendorOption name="followLine">true</sld:VendorOption>
                    </sld:TextSymbolizer>
                </sld:Rule>
            </sld:FeatureTypeStyle>
        </sld:UserStyle>
    </sld:UserLayer>
</sld:StyledLayerDescriptor>

3. 面样式

xml
<?xml version="1.0" encoding="UTF-8"?>
<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">
  <!-- a Named Layer is the basic building block of an SLD document -->
  <NamedLayer>
    <Name>default_polygon</Name>
    <UserStyle>
    <!-- Styles can have names, titles and abstracts -->
      <Title>Default Polygon</Title>
      <Abstract>A sample style that draws a polygon</Abstract>
      <!-- FeatureTypeStyles describe how to render different features -->
      <!-- A FeatureTypeStyle for rendering polygons -->
      <FeatureTypeStyle>
        <Rule>
          <Name>rule1</Name>
          <Title>Gray Polygon with Black Outline</Title>
          <Abstract>A polygon with a gray fill and a 1 pixel black outline</Abstract>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#AAAAAA</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
              <CssParameter name="stroke-width">1</CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

上面示例为基本的面的样式,下面展示了一个相对比较完整的面的样式。

xml
<?xml version="1.0" encoding="UTF-8"?>
<sld:StyledLayerDescriptor 
xmlns="http://www.opengis.net/sld" 
xmlns:sld="http://www.opengis.net/sld" 
xmlns:gml="http://www.opengis.net/gml" 
xmlns:ogc="http://www.opengis.net/ogc" 
version="1.0.0">
    <sld:UserLayer>
        <sld:LayerFeatureConstraints>
            <sld:FeatureTypeConstraint/>
        </sld:LayerFeatureConstraints>
        <sld:UserStyle>
            <sld:Name>province</sld:Name>
            <sld:FeatureTypeStyle>
                <sld:Name>group0</sld:Name>
                <sld:FeatureTypeName>Feature</sld:FeatureTypeName>
                <sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier>
                <sld:SemanticTypeIdentifier>simple</sld:SemanticTypeIdentifier>
                <sld:Rule>
                    <sld:Name>default rule</sld:Name>
                    <sld:PolygonSymbolizer>
                        <sld:Fill>
                            <sld:CssParameter name="fill">#FF0000</sld:CssParameter>
                            <sld:CssParameter name="fill-opacity">0.2</sld:CssParameter>
                        </sld:Fill>
                        <sld:Stroke>
                            <sld:CssParameter name="stroke">#FF0000</sld:CssParameter>
                            <sld:CssParameter name="stroke-width">2.0</sld:CssParameter>
                        </sld:Stroke>
                    </sld:PolygonSymbolizer>
                    <sld:TextSymbolizer>
                        <sld:Label>
                            <ogc:PropertyName>NAME</ogc:PropertyName>
                        </sld:Label>
                        <sld:Font>
                            <sld:CssParameter name="font-family">微软雅黑</sld:CssParameter>
                            <sld:CssParameter name="font-size">12.0</sld:CssParameter>
                            <sld:CssParameter name="font-style">normal</sld:CssParameter>
                            <sld:CssParameter name="font-weight">bold</sld:CssParameter>
                        </sld:Font>
                        <sld:LabelPlacement>
                            <sld:PointPlacement>
                                <sld:AnchorPoint>
                                    <sld:AnchorPointX>0.0</sld:AnchorPointX>
                                    <sld:AnchorPointY>0.0</sld:AnchorPointY>
                                </sld:AnchorPoint>
                                <sld:Displacement>
                                    <sld:DisplacementX>0.0</sld:DisplacementX>
                                    <sld:DisplacementY>0.0</sld:DisplacementY>
                                </sld:Displacement>
                            </sld:PointPlacement>
                        </sld:LabelPlacement>
                        <sld:Halo>
                            <sld:Radius>1</sld:Radius>
                            <sld:Fill>
                                <sld:CssParameter name="fill">#FFFFFF</sld:CssParameter>
                            </sld:Fill>
                        </sld:Halo>
                        <sld:Fill>
                            <sld:CssParameter name="fill">#FF0000</sld:CssParameter>
                        </sld:Fill>
                    </sld:TextSymbolizer>
                </sld:Rule>
            </sld:FeatureTypeStyle>
        </sld:UserStyle>
    </sld:UserLayer>
</sld:StyledLayerDescriptor>

4. 栅格样式

xml
<?xml version="1.0" encoding="UTF-8"?>
<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">
  <!-- a Named Layer is the basic building block of an SLD document -->
  <NamedLayer>
    <Name>default_raster</Name>
    <UserStyle>
    <!-- Styles can have names, titles and abstracts -->
      <Title>Opaque Raster</Title>
      <Abstract>A sample style that draws a raster, good for displaying imagery</Abstract>
      <!-- FeatureTypeStyles describe how to render different features -->
      <!-- A FeatureTypeStyle for rendering rasters -->
      <FeatureTypeStyle>
        <Rule>
          <Name>rule1</Name>
          <Title>Opaque Raster</Title>
          <Abstract>A raster with 100% opacity</Abstract>
          <RasterSymbolizer>
            <Opacity>1.0</Opacity>
          </RasterSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

上述为一个简单的栅格样式,如下样式根据高程对DEM进行分段设色。

xml
<?xml version="1.0" ?>
<sld:StyledLayerDescriptor 
  xmlns="http://www.opengis.net/sld" 
  xmlns:sld="http://www.opengis.net/sld" 
  xmlns:ogc="http://www.opengis.net/ogc" 
  xmlns:gml="http://www.opengis.net/gml" 
  version="1.0.0">
    <sld:UserLayer>
        <sld:LayerFeatureConstraints>
            <sld:FeatureTypeConstraint/>
        </sld:LayerFeatureConstraints>
        <sld:UserStyle>
            <sld:Name>shenzhen</sld:Name>
            <sld:Description>Generated by SLD4raster - https://cbsuygulama.wordpress.com/sld4raster</sld:Description>
            <sld:Title/>
            <sld:FeatureTypeStyle>
                <sld:Name/>
                <sld:Rule>
                    <sld:RasterSymbolizer>
                        <sld:Geometry>
                            <ogc:PropertyName>grid</ogc:PropertyName>
                        </sld:Geometry>
                        <sld:Opacity>1</sld:Opacity>
                        <sld:ColorMap>
                            <sld:ColorMapEntry color="#2b83ba" quantity="0" label="0" opacity="1.0"/>
                            <sld:ColorMapEntry color="#abdda4" quantity="314.25" label="314" opacity="1.0"/>
                            <sld:ColorMapEntry color="#ffffbf" quantity="628.5" label="629" opacity="1.0"/>
                            <sld:ColorMapEntry color="#fdae61" quantity="942.75" label="943" opacity="1.0"/>
                            <sld:ColorMapEntry color="#d7191c" quantity="1257" label="1257" opacity="1.0"/>
                        </sld:ColorMap>
                    </sld:RasterSymbolizer>
                </sld:Rule>
            </sld:FeatureTypeStyle>
        </sld:UserStyle>
    </sld:UserLayer>
</sld:StyledLayerDescriptor>

二、图层样式管理

1. 样式列表

点击左侧功能菜单数据——>样式进入工作区管理界面,如下图所示。样式列表展示样式操作(添加样式和删除已选样式)和已添加样式的列表,列表包括样式名称和工作区。点击样式名称可进入样式编辑页面。

2. 添加或编辑样式

点击添加样式按钮,进入样式编辑页面,如下图所示。新增样式的时候需要填写的信息包括:样式数据和样式内容。样式数据包括样式名称、工作区、格式;样式内容有三种操作:基于基本样式、基于已有样式、基于自定义样式。点击下面的Validate可对样式的正确性进行校验;点击Apply可引用样式并进入编辑模式,进入编辑模式后多出几个tab,发布、图层预览、图层属性,如下图所示;点击保存保存样式。

发布tab可设置该样式默认或要发布的图层,如下图所示。

图层预览tab可直接预览该样式在图层中的效果,如下图所示。

图层属性tab可对图层的属性进行预览,并返回第一个要素的值为示例,如下图所示。

3. 删除样式

在样式列表中选中样式,点击删除选中的样式,弹出确认对话框,点击“确认”删除样式。

三、css插件

1. 安装

在介绍安装部分的时候,提到了插件的下载地方,下载插件并解压到geoserver\WEB-INF\lib目录下,重启Tomcat或Geoserver。重启后,在添加或编辑样式时Format(格式)便会多一个css的格式。

2. 样式编辑

在添加或编辑样式时选择Format(格式)css

css
/* 设置边框和填充 */
* {
  stroke: #ff0000;
  stroke-width: 1;
  fill: #ff0000;
  fill-opacity: 0.1;
}

如下图所示,为简单的样式设置:

2.1 css属性

css属性说明css样式说明

常见的css的属性有:

  • mark:符号symbol(star)(有:circlesquarecrossstararrow)或者图标url
  • mark-size:符号大小
  • stroke:边框颜色
  • stroke-width:边框宽度
  • stroke-opacity:边框透明度
  • stroke-dasharray:边框虚线
  • fill:填充颜色
  • fill-opacity:填充透明度
  • label: 标注,引用字段则用[]括起来,如label:[name],如为固定值,在其后面直接写,如label: Hello World;
  • label-anchor: 对齐方式,0.5 0.5表示居中,0 0表示左上角,1 1表示右下角
  • label-offset: 标注偏移量;
  • label-rotation:标注旋转角度,顺时针;
  • font-family:字体名称;
  • font-size:字体大小;
  • font-fill:字体颜色;
  • font-weight:bold时表示字体加粗;
  • font-opacity:字体透明度;
  • halo-color:描边颜色;
  • halo-radius:描边宽度;
  • halo-opacity:描边透明度;
  • raster-opacity:栅格透明度;

如下为点、线、面、栅格常用的样式实例:

css
/* 点 */
* {
  mark: symbol(circle);
  mark-size: 5;
  label: [name];
  label-anchor: 0.5 1;
  label-offset: 0 -6;
  font-fill: #ff0000;
  font-family: '微软雅黑';
}
:mark {
  stroke: #ff0000;
  fill: #ff0000;
  fill-opacity: 0.5;
}

/* 线 */
* {
  stroke: #ff0000;
  stroke-width: 2;
  stroke-opacity: 0.5;
  stroke-dasharray: 5, 5;
  label: [name];
  font-family: '微软雅黑';
}

/* 面 */
* {
  fill: #ff0000;
  fill-opacity: 0.5;
  stroke: #ff0000;
  stroke-width: 2;
  stroke-opacity: 0.5;
  stroke-dasharray: 5, 5;
  label: [name];
  font-family: '微软雅黑';
}

/* 栅格 */
* {
  raster-opacity: 0.5;
}

2.2 根据条件符号化

根据条件符号化,即根据字段值的不同,使用不同的符号化样式。实现示例可如下:

css
* {
  stroke: black;
  stroke-width: 0.2;
  fill-opacity: 0.7;
 
  /* @title Population < 2M */
  [PERSONS < 2000000] {
    fill: #4DFF4D;
  };
  /* @title 2M < Population < 4M */
  [PERSONS >= 2000000] [PERSONS < 4000000] {
    fill: #FF4D4D;
  };
  /* @title Population > 4M */
  [PERSONS >= 4000000] {
    fill: #4D4DFF;
  };
 
  /* Labelling */
  [@sd < 20M] {
    label: [STATE_ABBR];
    label-anchor: 0.5 0.5;
    font-family: "Times New Roman";
    font-fill: black;
    font-style: normal;
    font-size: 14;
  }
}

上述代码图例预览如下:

2.3 根据比例尺符号化

可根据比例尺进行符号化,实现不同比例尺下符号的变化。实现示例可如下:

css
/* @title scale < 4000000 */
[@scale < 4000000] {
  mark-size: 3;
}
/* @title scale > 4000000 and scale < 8000000 */
[@scale > 4000000] [@scale < 8000000] [SCALERANK < 7] {
  mark-size: 6;
}
/* @title scale > 17000000 */
[@scale > 17000000] [SCALERANK < 1] {
  mark-size: 9;
}

* {
  mark: symbol(circle);
}

:mark {
  stroke: #ff0000;
  fill: #ff0000;
  fill-opacity: 0.5;
}

2.4 设置图例标题

图例标题通过注释/* @title scale < 4000000 */实现。

四、SLD工具

SLD可借助uDigQGIS生成。