geoserver中图层显示比例问题,设置某图层在规定比例尺内显示。

关于geoserver中如何控制某个图层在规定比例尺范围内显示??这个问题我已经纠结了很久,也搜了很多资料,始终没有找到办法。

今天看到GeoServer 2.0.2\data_dir\styles目录下的tiger_roads.sld中有关于minscale…,maxscale的配置,于是决心试一下,看是什么效果。

结果实验后,正是我想要的效果,心里甚是欣慰。原来geoserver控制图层比例尺显示范围是在样式中实现的。

下面看步骤:

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>

转载自:https://blog.csdn.net/wxljmy77/article/details/8815279

You may also like...