本文介绍如何在GeoServer中发布的图层如WMS图层按比例尺进行显示或隐藏,以及根据这个特性扩展进行不同比例尺下显示不用的样式的设置方法。
一、按比例尺进行显示或隐藏
GeoServer在发布图层的时候,没有直接的选项进行设置在哪个比例尺内可见。但可以通过样式文件进行配置。在样式文件sld(Styled Layer Descriptor)中通过相下面的节点进行配置:
<sld:MinScaleDenominator>1000</sld:MinScaleDenominator>
<sld:MaxScaleDenominator>6000</sld:MaxScaleDenominator>
以上表示在比例尺为1000-6000范围时显示图层。
下面贴出一个完整的点在一定比例尺内可显示的配置示例:
<?xml version="1.0" encoding="UTF-8"?>
<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>Default Styler</sld:Name>
<sld:IsDefault>1</sld:IsDefault>
<sld:FeatureTypeStyle>
<sld:Name>simple</sld:Name>
<sld:FeatureTypeName>Feature</sld:FeatureTypeName>
<sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier>
<sld:SemanticTypeIdentifier>simple</sld:SemanticTypeIdentifier>
<sld:Rule>
<span style="color:#ff0000;"> <sld:MinScaleDenominator>3000</sld:MinScaleDenominator>
<sld:MaxScaleDenominator>6000</sld:MaxScaleDenominator> </span>
<sld:PointSymbolizer>
<sld:Geometry>
<ogc:PropertyName>SHAPE</ogc:PropertyName>
</sld:Geometry>
<sld:Graphic>
<sld:Mark>
<sld:WellKnownName>circle</sld:WellKnownName>
<sld:Fill>
<sld:CssParameter name="fill">#90FF90</sld:CssParameter>
</sld:Fill>
<sld:Stroke>
<sld:CssParameter name="stroke">#00FF00</sld:CssParameter>
</sld:Stroke>
</sld:Mark>
<sld:Size>5.0</sld:Size>
</sld:Graphic>
</sld:PointSymbolizer>
</sld:Rule>
</sld:FeatureTypeStyle>
</sld:UserStyle>
</sld:UserLayer>
</sld:StyledLayerDescriptor>
一、图层在不同比例尺下显示不用的样式
基于这种思想我们可以实现不同比例尺显示不同样式。
1、创建多个样式,样式根据需要显示不同比例尺级别来设置,并设置显示比例尺。
2、创建多个图层,分别选择上一步设置的不同样式。
3、创建一个图层组,将上一步创建的图层加入到图层组中。
4、前端调用加载上一步创建发布的图层组。
另外,还有另外一种增加规则标签的实现方法(http://blog.csdn.net/longshengguoji/article/details/51540312):