3 votos

Símbolo de MapServer con dos colores

Me gustaría simbolizar un conjunto de datos de puntos con un cuadrado (o círculo) utilizando dos colores. Esto es útil para mostrar los valores recogidos en ambos lados de una carretera (por ejemplo).

split symbols

He creado dos símbolos, un lado izquierdo y un lado derecho del cuadrado, como se muestra a continuación:

SYMBOL
    NAME 'SQUARE_L'
    TYPE vector
    FILLED true
    POINTS
        0 0
        0 1
        0.5 1
        0.5 0
        0 0
    END
END 
SYMBOL
    NAME 'SQUARE_R'
    TYPE vector
    FILLED true
    POINTS
        0.5 0
        1 0
        1 1
        0.5 1
        0.5 0
    END
END 

Entonces en mi CAPA puedo crear una CLASE usando los dos diferentes ESTILOS:

CLASS
    STYLE
        SYMBOL "SQUARE_L"
        COLOR [LEFT_CLR]
        SIZE 10
    END
    STYLE
        SYMBOL "SQUARE_R"
        COLOR [RIGHT_CLR]
        SIZE 10
    END
 END

Sin embargo, las características no se muestran correctamente: no están alineadas correctamente y no tienen el mismo tamaño (¿debido a un solapamiento?). Pensé que lo había resuelto estableciendo un "cuadro delimitador" en el símbolo para asegurarme de que tenían el mismo tamaño:

SYMBOL
    NAME 'SQUARE_L'
    TYPE vector
    FILLED true
    POINTS
        0 0
        0 1
        0.5 1
        0.5 0
        0 0
        -99 -99 # increase bounding box so shape is correct size
        0 0
        1 0
        1 1
        0 1
        0 0
    END
END 

Sin embargo, luego me di cuenta de que los lados del cuadrado se mostraban con valores erróneos. La colección de símbolos de MapServer en http://github.com/mapserver/mapserver/wiki/SymbologyExchangeVector tiene algunos buenos ejemplos, pero ninguno de ellos describe cómo hacerlo. ¿Alguna idea de cómo lograr esto en MapServer?

4voto

Swinders Puntos 1042

La solución vino de la lista de usuarios de MapServer. Se trata de tener un cuadrado subyacente completo, y un medio cuadrado en la parte superior.

http://lists.osgeo.org/pipermail/mapserver-users/2012-October/073443.html

SYMBOL
     NAME 'SQUARE_FULL'
     TYPE vector
     FILLED true
     POINTS
         0 0
         0 1
         1 1
         1 0
         0 0
     END
END
SYMBOL
     NAME 'SQUARE_R'
     TYPE vector
     FILLED true
     POINTS
         0.5 0
         1 0
         1 1
         0.5 1
         0.5 0
     END
END

  CLASS
     STYLE
         SYMBOL "SQUARE_FULL"
         COLOR [LEFT_CLR]
         SIZE 10
     END
     STYLE
         SYMBOL "SQUARE_R"
         COLOR [RIGHT_CLR]
         SIZE 10
     END
  END

También se señaló que en MapServer 6.2 hay un nuevo ANCHORPOINT que parece ideal para estas situaciones.

Uno de los problemas era que al ver la capa en OpenLayers, utilizando mosaicos, los símbolos se recortaban como se muestra a continuación. Esto puede resolverse utilizando la función canalón en OpenLayers.

messed up squares

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