geoserver样式(SLD方式)—— 图层元素在不同比例尺显示不同样式

假如有个需求,一个点在一定比例尺下显示一个实心小圆点,再放大到一定比例尺显示一个圆形的img图标,这样怎么实现呢?这就要用到MinScaleDenominatorMaxScaleDenominator标签,这两个标签的使用要注意以下三点:

  1. 这两个标签都要放在Rule标签使用
  2. 这两个标签可以单独使用,MinScaleDenominator表示缩放比例大于这个数值时,运用对应Rule;MaxScaleDenominator表示缩放比例小于这个数值时,运用对应Rule
  3. MinScaleDenominatorMaxScaleDenominator可同时使用,书写位置不分先后

现在我们来实现开头提到的需求,完整代码如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
  xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/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>chargesite</Name>
    <UserStyle>
      <Title>gold square point style</Title>
      <FeatureTypeStyle>
        <Rule>      
          <MinScaleDenominator>400000</MinScaleDenominator>   
          <MaxScaleDenominator>1200000</MaxScaleDenominator>
          <PointSymbolizer>
            <Graphic>
              <Mark>
                <WellKnownName>circle</WellKnownName>
                <Fill>
                  <CssParameter name="fill">#00ff00</CssParameter>
                </Fill>
              </Mark>
              <Size>6</Size>
            </Graphic>
          </PointSymbolizer>
        </Rule>
        <Rule>
          <MaxScaleDenominator>400000</MaxScaleDenominator>
          <PointSymbolizer>
            <Graphic>
              <ExternalGraphic>
                <OnlineResource xlink:type="simple" xlink:href="charge_site.png" />
                <Format>image/png</Format>
              </ExternalGraphic>
              <Size><ogc:Literal>16</ogc:Literal></Size>
            </Graphic>
          </PointSymbolizer>
          <TextSymbolizer>
              <Label>
                  <ogc:PropertyName>stationName</ogc:PropertyName>
              </Label>
              <Font>
                  <CssParameter name="font-family">微软雅黑</CssParameter>
                  <CssParameter name="font-size">13</CssParameter>
                  <CssParameter name="font-style">normal</CssParameter>
                  <CssParameter name="font-weight">bold</CssParameter>
              </Font> 
             <LabelPlacement>          	
                  <PointPlacement>
                      <AnchorPoint>
                          <AnchorPointX>0</AnchorPointX>
                          <AnchorPointY>0</AnchorPointY>
                      </AnchorPoint>
                      <Displacement>
                          <DisplacementX>12</DisplacementX>
                          <DisplacementY>0</DisplacementY>
                      </Displacement>
                  </PointPlacement>
              </LabelPlacement>  
              <Fill>
                  <CssParameter name="fill">#00ff00</CssParameter>
              </Fill>
        	</TextSymbolizer>
        </Rule>

      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

效果为:
1,当缩放比例大于1200000时,没有显示点:
在这里插入图片描述
2,当缩放比例在400000到1200000时,显示绿色小圆点:
在这里插入图片描述
3,当缩放比例小于400000时,显示指定图片:
在这里插入图片描述

发布了51 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/huzhenv5/article/details/103989088