2 votos

SLD, combinar variable y propiedadIsEqualTo

Estoy intentando hacer una simple sentencia switch (if if else) en SLD con un valor proveniente de una variable.

Estoy llamando a Goeserver con el parámetro env=imageSize:A4 .

Ahora basado en eso, me gustaría establecer cssProperty según el valor que se transmita. Pseudocódigo:

IF imageSize = A4
    cssProperty = 2
IF imageSize = A3
    cssProperty = 3
ELSE
    cssProperty = 1

Se me ha ocurrido esto:

<sld:CssParameter name="stroke-width">
  <ogc:Function name="if_then_else">
    <ogc:Function name="EqualTo">
      <ogc:PropertyName>pageSize</ogc:PropertyName>
      <ogc:Literal>A4</ogc:Literal>
    </ogc:Function>
    <ogc:Literal>2</ogc:Literal>
    <ogc:Literal>1</ogc:Literal>
    </ogc:Function>
</sld:CssParameter>

No puedo conseguir que esto funcione, y después de eso todavía tengo que implementar la segunda sentencia if.

2voto

Adam Ernst Puntos 6939

Los nombres de las funciones distinguen entre mayúsculas y minúsculas, por lo que su código funcionará con equalTo en lugar de EqualTo . También su pageSize es una variable variable de entorno no una propiedad.

Pero en tu caso probablemente sería más fácil utilizar un recode función:

<sld:CssParameter name="stroke-width">
    <ogc:Function name="Recode">
      <ogc:Function name="env">
         <ogc:Literal>pageSize</ogc:Literal>
         <ogc:Literal>DEFAULT</ogc:Literal>
      </ogc:Function>
      <ogc:Literal>A4</ogc:Literal>
      <ogc:Literal>2</ogc:Literal> 
      <ogc:Literal>A3</ogc:Literal>
      <ogc:Literal>3</ogc:Literal> 
      <ogc:Literal>DEFAULT</ogc:Literal>
      <ogc:Literal>1</ogc:Literal>
     </ogc:Function>
 </sld:CssParameter>     

A continuación, asegúrese de que su

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