7 votos

Mostrar etiquetas de puntos a partir de un determinado nivel de zoom

Utilizo WMS para mostrar mis puntos en el mapa. Me gustaría mostrar las etiquetas de los puntos (name_ID) a partir de un determinado nivel de zoom. De lo que he leído entiendo que puedo hacerlo con las reglas de GeoServer, pero necesito un ejemplo claro para aclarar esto.

10voto

Ne An Derthal Puntos 39789

Hay que definir 2 diferentes sld:Reglas utilizando MaxScaleDenominator. En la primera, añada el estilo para representar la etiqueta (el TextSymbolizer en mi ejemplo), y especifique el nivel de zoom deseado con el MaxScaleDenominator correcto. En la segunda regla, defina un estilo diferente sin la etiqueta. Básicamente, una regla contiene un estilo, y sólo el estilo con la regla satisfecha se aplica a las características.

Este es uno de mis sld

<?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:NamedLayer>
    <sld:Name>locations_table</sld:Name>
    <sld:UserStyle>
      <sld:Name>locations_table</sld:Name>
      <sld:Title>A boring default style</sld:Title>
      <sld:Abstract>A sample style that just prints out a green line</sld:Abstract>
      <sld:FeatureTypeStyle>
        <sld:Name>name</sld:Name>
        <sld:Rule>
          <sld:MaxScaleDenominator>68000.0</sld:MaxScaleDenominator>
          <sld:PointSymbolizer>
            <sld:Graphic>
              <sld:Mark>
                <sld:WellKnownName>circle</sld:WellKnownName>
                <sld:Fill>
                  <sld:CssParameter name="fill">#FF0000</sld:CssParameter>
                </sld:Fill>
              </sld:Mark>
              <sld:Size>
                <ogc:Literal>4</ogc:Literal>
                  </sld:Size>
            </sld:Graphic>
          </sld:PointSymbolizer>
          <sld:TextSymbolizer>            
            <sld:Label>            
              <ogc:PropertyName>name1</ogc:PropertyName> <![CDATA[
              ]]><ogc:PropertyName>name2</ogc:PropertyName>
            </sld:Label>
            <sld:Font>
          <sld:CssParameter name="font-family">Arial</sld:CssParameter>
          <sld:CssParameter name="font-size">11</sld:CssParameter>
          <sld:CssParameter name="font-style">normal</sld:CssParameter>
          <sld:CssParameter name="font-weight">bold</sld:CssParameter>
        </sld:Font>
        <sld:LabelPlacement>              
          <sld:PointPlacement>
            <sld:AnchorPoint>
              <sld:AnchorPointX>
                <ogc:Literal>0.5</ogc:Literal>
              </sld:AnchorPointX>
              <sld:AnchorPointY>
                <ogc:Literal>0.0</ogc:Literal>
              </sld:AnchorPointY>
            </sld:AnchorPoint>
            <sld:Displacement>
              <sld:DisplacementX>
                <ogc:Literal>0</ogc:Literal>
              </sld:DisplacementX>
              <sld:DisplacementY>
                <ogc:Literal>5</ogc:Literal>
              </sld:DisplacementY>
            </sld:Displacement>
            <sld:Rotation>
              <ogc:Literal>0.0</ogc:Literal>
            </sld:Rotation>
          </sld:PointPlacement>
        </sld:LabelPlacement>            
        <sld:Fill>
          <sld:CssParameter name="fill">#000000</sld:CssParameter>
        </sld:Fill>
        <sld:VendorOption name="conflictResolution">true</sld:VendorOption>
      </sld:TextSymbolizer>
    </sld:Rule>
    <sld:Rule>
      <sld:MinScaleDenominator>68000.0</sld:MinScaleDenominator>
      <sld:PointSymbolizer>
        <sld:Graphic>
          <sld:Mark>
            <sld:WellKnownName>circle</sld:WellKnownName>
            <sld:Fill>
              <sld:CssParameter name="fill">#FF0000</sld:CssParameter>
            </sld:Fill>
          </sld:Mark>
          <sld:Size>
            <ogc:Literal>6</ogc:Literal>
          </sld:Size>
        </sld:Graphic>
      </sld:PointSymbolizer>
    </sld:Rule>
  </sld:FeatureTypeStyle>
</sld:UserStyle>

1 votos

Si bien esta es una respuesta técnicamente correcta, no ayuda realmente a la persona que pregunta a saber qué hacer

2 votos

@iant He mejorado la respuesta, pero en realidad no hay tanto que explicar...además el preguntante pedía un ejemplo :)

0 votos

¿No se aplica esto tanto a los puntos como a sus etiquetas? Creo que la pregunta se refería a la activación y desactivación de las etiquetas a diferentes escalas, no a los puntos también.

2voto

Sam007 Puntos 146

Comprueba las siguientes frases:

 <sld:MinScaleDenominator>68000.0</sld:MinScaleDenominator>
 <sld:MaxScaleDenominator>68000.0</sld:MaxScaleDenominator>

Establecen los límites para aplicar una norma.

Ejemplos : en los documentos oficiales de GeoServer y este otro documento

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X