GeoServer配置图层按比例尺显示和隐藏
2016-06-23 18:36
435 查看
本文介绍如何在GeoServer中发布的图层如WMS图层按比例尺进行显示或隐藏,以及根据这个特性扩展进行不同比例尺下显示不用的样式的设置方法。
<sld:MinScaleDenominator>1000</sld:MinScaleDenominator>
<sld:MaxScaleDenominator>6000</sld:MaxScaleDenominator>
以上表示在比例尺为1000-6000范围时显示图层。
下面贴出一个完整的点在一定比例尺内可显示的配置示例:
1、创建多个样式,样式根据需要显示不同比例尺级别来设置,并设置显示比例尺。
2、创建多个图层,分别选择上一步设置的不同样式。
3、创建一个图层组,将上一步创建的图层加入到图层组中。
4、前端调用加载上一步创建发布的图层组。
另外,还有另外一种增加规则标签的实现方法(http://blog.csdn.net/longshengguoji/article/details/51540312):
[html] view
plain copy
<?xml version="1.0" encoding="ISO-8859-1"?>
<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>dianstyle</sld:Name>
<sld:Title/>
<sld:FeatureTypeStyle>
<sld:Name>group 0</sld:Name>
<sld:FeatureTypeName>Feature</sld:FeatureTypeName>
<sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier>
<sld:SemanticTypeIdentifier>colorbrewer:unique:paired</sld:SemanticTypeIdentifier>
<sld:Rule>
<sld:Name>电梯口big</sld:Name>
<sld:Title>diantikou1</sld:Title>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>type</ogc:PropertyName>
<ogc:Literal>1</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<sld:MaxScaleDenominator>200.0</sld:MaxScaleDenominator>
<sld:PointSymbolizer>
<sld:Graphic>
<sld:ExternalGraphic>
<sld:OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="dianti.png"/>
<sld:Format>image/png</sld:Format>
</sld:ExternalGraphic>
<sld:Size>32</sld:Size>
</sld:Graphic>
</sld:PointSymbolizer>
</sld:Rule>
<sld:Rule>
<sld:Name>电梯口mediam</sld:Name>
<sld:Title>diantikou2</sld:Title>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>type</ogc:PropertyName>
<ogc:Literal>1</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<sld:MinScaleDenominator>200.0</sld:MinScaleDenominator>
<sld:MaxScaleDenominator>400.0</sld:MaxScaleDenominator>
<sld:PointSymbolizer>
<sld:Graphic>
<sld:ExternalGraphic>
<sld:OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="dianti.png"/>
<sld:Format>image/png</sld:Format>
</sld:ExternalGraphic>
<sld:Size>26</sld:Size>
</sld:Graphic>
</sld:PointSymbolizer>
</sld:Rule>
<sld:Rule>
<sld:Name>电梯口small</sld:Name>
<sld:Title>diantikou3</sld:Title>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>type</ogc:PropertyName>
<ogc:Literal>1</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<sld:MinScaleDenominator>600.0</sld:MinScaleDenominator>
<sld:PointSymbolizer>
<sld:Graphic>
<sld:ExternalGraphic>
<sld:OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="dianti.png"/>
<sld:Format>image/png</sld:Format>
</sld:ExternalGraphic>
<sld:Size>20</sld:Size>
</sld:Graphic>
</sld:PointSymbolizer>
</sld:Rule>
</sld:FeatureTypeStyle>
</sld:UserStyle>
</sld:UserLayer>
</sld:StyledLayerDescriptor>
一、按比例尺进行显示或隐藏
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):
[html] view
plain copy
<?xml version="1.0" encoding="ISO-8859-1"?>
<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>dianstyle</sld:Name>
<sld:Title/>
<sld:FeatureTypeStyle>
<sld:Name>group 0</sld:Name>
<sld:FeatureTypeName>Feature</sld:FeatureTypeName>
<sld:SemanticTypeIdentifier>generic:geometry</sld:SemanticTypeIdentifier>
<sld:SemanticTypeIdentifier>colorbrewer:unique:paired</sld:SemanticTypeIdentifier>
<sld:Rule>
<sld:Name>电梯口big</sld:Name>
<sld:Title>diantikou1</sld:Title>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>type</ogc:PropertyName>
<ogc:Literal>1</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<sld:MaxScaleDenominator>200.0</sld:MaxScaleDenominator>
<sld:PointSymbolizer>
<sld:Graphic>
<sld:ExternalGraphic>
<sld:OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="dianti.png"/>
<sld:Format>image/png</sld:Format>
</sld:ExternalGraphic>
<sld:Size>32</sld:Size>
</sld:Graphic>
</sld:PointSymbolizer>
</sld:Rule>
<sld:Rule>
<sld:Name>电梯口mediam</sld:Name>
<sld:Title>diantikou2</sld:Title>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>type</ogc:PropertyName>
<ogc:Literal>1</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<sld:MinScaleDenominator>200.0</sld:MinScaleDenominator>
<sld:MaxScaleDenominator>400.0</sld:MaxScaleDenominator>
<sld:PointSymbolizer>
<sld:Graphic>
<sld:ExternalGraphic>
<sld:OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="dianti.png"/>
<sld:Format>image/png</sld:Format>
</sld:ExternalGraphic>
<sld:Size>26</sld:Size>
</sld:Graphic>
</sld:PointSymbolizer>
</sld:Rule>
<sld:Rule>
<sld:Name>电梯口small</sld:Name>
<sld:Title>diantikou3</sld:Title>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>type</ogc:PropertyName>
<ogc:Literal>1</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<sld:MinScaleDenominator>600.0</sld:MinScaleDenominator>
<sld:PointSymbolizer>
<sld:Graphic>
<sld:ExternalGraphic>
<sld:OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="dianti.png"/>
<sld:Format>image/png</sld:Format>
</sld:ExternalGraphic>
<sld:Size>20</sld:Size>
</sld:Graphic>
</sld:PointSymbolizer>
</sld:Rule>
</sld:FeatureTypeStyle>
</sld:UserStyle>
</sld:UserLayer>
</sld:StyledLayerDescriptor>
相关文章推荐
- 如何隐藏程序的运行
- PowerShell设置文件只读、隐藏属性的方法
- 批处理隐藏自身窗口,很无聊
- C#隐式运行CMD命令(隐藏命令窗口)
- extjs form textfield的隐藏方法
- 隐藏ASP木马后门的两种方法
- jQuery使用hide方法隐藏页面上指定元素的方法
- CMD中使用attrib命令设置文件只读、隐藏属性详解
- 基于JavaScript实现文字超出部分隐藏
- 基于JS实现EOS隐藏错误提示层代码
- js tr控制下面的tbody隐藏和显示
- select 控制网页内容隐藏于显示的实现代码
- jQuery隐藏和显示效果实现
- jQuery经过一段时间自动隐藏指定元素的方法
- jquery特效 点击展示与隐藏全文
- jQuery实现鼠标经过时出现隐藏层文字链接的方法
- jQuery使用hide方法隐藏指定元素class样式用法实例
- jQuery仅用3行代码实现的显示与隐藏功能完整实例
- jquery实现点击展开列表同时隐藏其他列表
- jQuery仿淘宝网产品品牌隐藏与显示效果