1 votos

SLD combina la función interpolar+categorizar y pasar el umbral

En mi requerimiento tengo un atributo float (valor) que contiene valores entre 0 y 10.

Quiero utilizar la función de interpolación para colorear los valores entre 0 y el umbral=5 en colores verdes e interpolar los valores entre 5 y 10 con colores rojos. Así que de alguna manera es una combinación de la función interpolar y la función categorizar de SLD. ¿Es posible?

<CssParameter name="stroke">
  <ogc:Function name="Interpolate">
                     <ogc:PropertyName>VALUE</ogc:PropertyName>
                     <ogc:Literal>-9999</ogc:Literal>
                     <ogc:Literal>#000000</ogc:Literal>
                     <ogc:Literal>0</ogc:Literal>
                     <ogc:Literal>#000000</ogc:Literal>
                     <ogc:Literal>0</ogc:Literal>
                     <ogc:Literal>#A51C1C</ogc:Literal>
                     <ogc:Literal>5</ogc:Literal>
                     <ogc:Literal>#FF9A9A</ogc:Literal>
                     <ogc:Literal>5</ogc:Literal>
                     <ogc:Literal>#00FF00</ogc:Literal>
                     <ogc:Literal>color</ogc:Literal>

Adicionalmente quiero usar la función env parameter de geoserver para pasar el valor del umbral (5) en la url del WMS. Pero no he encontrado un ejemplo de cómo hacer que ese umbral sea dinámico.

2voto

Adam Ernst Puntos 6939

Puede utilizar la función env en casi cualquier lugar donde se permita una expresión en su SLD, por lo que su ejemplo se convierte en:

<CssParameter name="stroke">
  <ogc:Function name="Interpolate">
    <ogc:PropertyName>VALUE</ogc:PropertyName>
    <ogc:Literal>-9999</ogc:Literal>
    <ogc:Literal>#000000</ogc:Literal>
    <ogc:Literal>0</ogc:Literal>
    <ogc:Literal>#000000</ogc:Literal>
    <ogc:Literal>0</ogc:Literal>
    <ogc:Literal>#A51C1C</ogc:Literal>
    <ogc:Literal>
       <ogc:Function name="env">
          <ogc:Literal>break</ogc:Literal>
          <ogc:Literal>5</ogc:Literal>
       </ogc:Function>
    </ogc:Literal>
    <ogc:Literal>#FF9A9A</ogc:Literal>
    <ogc:Literal>
        <ogc:Function name="env">
            <ogc:Literal>break</ogc:Literal>
            <ogc:Literal>5</ogc:Literal>
        </ogc:Function>
    </ogc:Literal>
    <ogc:Literal>#00FF00</ogc:Literal>
    <ogc:Literal>color</ogc:Literal>

Suponiendo que tenga una variable llamada break se insertará, y si no, se utilizará el valor por defecto de 5.

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