关于geoserver中如何控制某个图层在规定比例尺范围内显示??
看到GeoServer 2.0.2\data\styles目录下的roads.sld中有关于minscale...,maxscale的配置,原来geoserver控制图层比例尺显示范围是在样式中实现的。
下面看步骤:
<sld:MinScaleDenominator>200.0</sld:MinScaleDenominator>
<sld:MaxScaleDenominator>400.0</sld:MaxScaleDenominator>
1、首先,要发布nyc目录下的4个图层,默认的已经发布过了。
2、建立layergroup,把4个图层复合一下,为了同时看到4个图层的内容。要注意:giant_polygon在最上面,他是底图,否则会盖住其他图层。
3、预览一下新建的layergroup,看没有设置tiger_roads图层的样式时,是什么效果。此时看到的是一些蓝线,无论如何放大,看到的始终是蓝线而已。
4、接下来要展示style的作用了。选择对tiger_roads图层进行配置,在publishing选项里,设置wms的default style为tiger_roads样式(此时会发现下面多了2个灰色的线样式;原来默认的是蓝色的细线样式,即line样式),然后保存。
5、在layergroup中删除原来的tiger_roads,再添加一次tiger_roads(因为不删除,看到的还是老的,好像是有缓存)。此时再预览,你就会发现,随着地图的放大,线变宽了,即在32000比例尺以上,显示的是细线,在32000比例尺以下,显示的是粗线,并且连tiger_roads图层的每条线的名称都显示出来了。十分强悍!!
附geoserver自带的tiger_roads.sld的内容,以后需要仔细看一下如何应用:
<?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">
<NamedLayer> <Name> area landmarks </Name>
<UserStyle>
<FeatureTypeStyle>
<FeatureTypeName>Feature</FeatureTypeName>
<Rule>
<MinScaleDenominator>32000</MinScaleDenominator>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">
<ogc:Literal>#666666</ogc:Literal>
</CssParameter>
<CssParameter name="stroke-width">
<ogc:Literal>2</ogc:Literal>
</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
<Rule> <!-- thick line drawn first-->
<MaxScaleDenominator>32000</MaxScaleDenominator>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">
<ogc:Literal>#666666</ogc:Literal>
</CssParameter>
<CssParameter name="stroke-width">
<ogc:Literal>7</ogc:Literal>
</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
</FeatureTypeStyle>
<FeatureTypeStyle>
<FeatureTypeName>Feature</FeatureTypeName>
<Rule> <!-- thin line drawn second -->
<MaxScaleDenominator>32000</MaxScaleDenominator>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">
<ogc:Literal>#FFFFFF</ogc:Literal>
</CssParameter>
<CssParameter name="stroke-width">
<ogc:Literal>4</ogc:Literal>
</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
<!-- label -->
<Rule>
<MaxScaleDenominator>32000</MaxScaleDenominator>
<TextSymbolizer>
<Label>
<ogc:PropertyName>NAME</ogc:PropertyName>
</Label>
<Font>
<CssParameter name="font-family">Times New Roman</CssParameter>
<CssParameter name="font-style">Normal</CssParameter>
<CssParameter name="font-size">14</CssParameter>
<CssParameter name="font-weight">bold</CssParameter>
</Font>
<LabelPlacement>
<LinePlacement>
</LinePlacement>
</LabelPlacement>
<Halo>
<Radius>
<ogc:Literal>2</ogc:Literal>
</Radius>
<Fill>
<CssParameter name="fill">#FFFFFF</CssParameter>
<CssParameter name="fill-opacity">0.85</CssParameter>
</Fill>
</Halo>
<Fill>
<CssParameter name="fill">#000000</CssParameter>
</Fill>
<VendorOption name="group">true</VendorOption>
</TextSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>