Saltar a contenido

7 Configuración de simbologías en proyectos

La parametrización de cómo se visualizan las geometrías y las etiquetas de las entidades de capas vectoriales se establece en el fichero cartodroid/config/crtdrdSymbologies.xml.

7.1 Estructura general del fichero

A la hora de definir una simbología, independientemente del tipo de geometría, se configura por separado el estilo de la simbología en sí:

  • Estilo: determina colores, trazo y transparencias de figuras geométricas.
  • Simbología: permite establecer el estilo a aplicar para la visualización de la geometría y para el de las etiquetas.
Etiqueta Descripción
symbologyConf Elemento raíz del fichero de configuración. Tendrá anidado un elemento estilos y un elemento simbologias.
estilos Elemento que agrupa los elementos entry para definir los estilos.
simbologias Elemento que agrupa los elementos entry para definir las simbologías.
entry Dentro de los elementos estilos y simbologías, se pueden anidar uno o más elementos entry.
En el caso de estilos, una entrada se define creando una etiqueta estilo, y en el caso de simbologías, con la etiqueta symb. Además, cada elemento entry debe llevar asociada una etiqueta string con un valor único que identifica al estilo/simbología.

De forma general el fichero crtdrdSymbologies.xml tendrá la siguiente estructura:

<symbologyConf>
 <estilos>
 <entry>
 <string>estilo1</string>
 <estilo class="estiloPoligono">
…
 </estilo>
 </entry>
 <entry>
 <string>estilo2</string>
 <estilo class="estiloPoligono">
…
 </estilo>
 </entry>
 </estilos>
 <simbologias>
 <entry>
 <string>simbologia1</string>
 <symb class="poligono">
 …
 </symb>
 </entry>
 </simbologias>
</symbologyConf>

En los siguientes apartados se describe cómo crear una visualización a medida para cada tipo de Geometría (punto, línea, polígono).

7.2 Relación entre estilos y simbologías

Existen cuatro tipo de estilos: texto, marker, línea y polígono.

  • Estilo texto (estiloTexto): define color y tamaño de la fuente.
  • Estilo marker (estiloMarca): define color y opcionalmente imagen de fondo a utilizar como marca de posición.
  • Estilo línea (estiloLinea): color, ancho de trazo de la línea, terminador, etc.
  • Estilo polígono (estiloPoligono): además de la información asociada al estilo de línea, color de fondo.

Estos cuatro estilos se combinan para definir las simbologías de las entidades vectoriales. En el caso de CartoDruid, se puede definir simbologías diferentes para las geometrías y para las etiquetas.

Cada tipo de capa vectorial tiene asociado un tipo de simbología que se corresponde directamente con el tipo de estilo. Así, la simbología polígono, tendrá asociado un estilo de tipo estiloPoligono, la simbología de línea un estiloLinea y la simbología de punto un estiloMarca. Estas simbologías se referencian en la capa con la etiqueta <symbId> (o utilizando una expresión definida en la etiqueta <symbologyExpression>)

Para el caso de las etiquetas, la simbología debe ser de tipo polígono, y tendrá asociado un estiloTexto para establecer el formato del texto, y un estiloPoligono, para dar formato al cuadro que rodea al texto en sí.

En el siguiente esquema se muestra la relación entre las simbologías y los estilos.

Simbología

7.3 Estilos y simbologías para puntos

7.3.1 Definición de estilos

Etiqueta Descripción
id Identificador del estilo. Debe coincidir con el atributo string definido en la etiqueta entry.
transparencia Grado de transparencia a aplicar.
color Color de la geometría. Debe llevar anidado un elemento rgb <color><rgb>0,255,255,255</rgb></color>
urlImagen Nombre del fichero de la imagen que se mostrará para sustituir el marker por defecto de google. La imagen debe estar en el directorio /cartodroid/symbol.
rotation Rotación a aplicar sobre la imagen (grados 0-360). Opcional.

7.3.2 Definición de simbología

Etiqueta Descripción
id Identificador de la simbología. Debe coincidir con el atributo string definido en la etiqueta entry.
idEstiloPunto Identificador de estilo que se utilizará para el marker.
<estilos>
  <entry>
    <string>symbSelectedPoint</string>
    <estilo class="estiloMarca">
      <id>symbSelectedPoint</id>
      <transparencia>1.0</transparencia>
      <color>
        <rgb>0,255,255,255</rgb>
      </color>
    </estilo>
  </entry>
</estilos>
      
<simbologias>
  <entry>
    <string>symbSelectedPoint</string>
    <symb class="punto">
      <id>symbSelectedPoint</id>
      <idEstiloPunto>symbSelectedPoint</idEstiloPunto>
    </symb>
  </entry>
</simbologias>
      
Definición de estilo de Marca Definición de simbología de punto

7.4 Estilos y simbologías para líneas

7.4.1 Definición de estilos

Etiqueta Descripción
id Identificador del estilo. Debe coincidir con el atributo string definido en la etiqueta entry.
transparencia Grado de transparencia a aplicar.
colorLinea Color de la geometría. Debe llevar anidado un elemento rgb como <color><rgb>0,255,255,255</rgb></color>.
trazo Configuración del estilo del trazo de la línea. En la actualidad se permite modificar únicamente el ancho de la línea, pero se prevé añadir otras posibilidades de visualización soportadas por el API de Google Maps.
https://developers.google.com/maps/documentation/android-api/releases
.
Ejemplo de uso:

        <trazo class="basicStroke"> 
            <anchura>3</anchura> 
        </trazo>

7.4.2 Definición de simbología

Etiqueta Descripción
id Identificador de la simbología. Debe coincidir con el atributo string definido en la etiqueta entry.
idEstiloLinea Identificador de estilo que se utilizará para la línea.
<estilos>
  <entry>
    <string>symbInspeccionLinea</string>
    <estilo class="estiloLinea">
      <id>symbInspeccionLinea</id>
      <transparencia>1.0</transparencia>
      <colorLinea>
        <rgb>0,255,255,255</rgb>
      </colorLinea>
      <trazo class="basicStroke">
        <anchura>3</anchura>
      </trazo>
    </estilo>
  </entry>
</estilos>
      
<simbologias>
  <entry>
    <string>symbInspeccionLinea</string>
    <symb class="linea">
      <id>symbInspeccionLinea</id>
      <idEstiloLinea>symbInspeccionLinea</idEstiloLinea>
    </symb>
  </entry>
</simbologias>
      
Definición de estilo de línea Definición de simbología de línea

7.5 Estilos y simbologías para polígonos

7.5.1 Definición de estilos

Etiqueta Descripción
id Identificador del estilo. Debe coincidir con el atributo string definido en la etiqueta entry.
transparencia Grado de transparencia a aplicar.
colorLinea Color de la geometría. Debe llevar anidado un elemento rgb: <color><rgb>0,255,255,255</rgb></color>
colorRelleno Color de fondo de la geometría. Debe llevar anidado un elemento rgb: <colorRelleno><rgb>255,145,0,80</rgb></colorRelleno>
trazo Configuración del estilo del trazo de la línea. En la actualidad se permite modificar únicamente el ancho de la línea, pero se prevé añadir otras posibilidades de visualización soportadas por el api de google-maps.
https://developers.google.com/maps/documentation/android-api/releases
Ejemplo de uso:

        <trazo class="basicStroke">
            <anchura>3</anchura>
        </trazo>

7.5.2 Definición de simbología

Etiqueta Descripción
id Identificador de la simbología. Debe coincidir con el atributo string definido en la etiqueta entry.
texto Identificador de estilo que se utilizará para la etiqueta de la geometría. Opcional (solo se utiliza cuando la simbología se aplica a las etiquetas).
idEstiloPoligono Identificador de estilo que se utilizará para la línea.
<estilos>
  <entry>
    <string>pend50</string>
    <estilo class="estiloPoligono">
      <id>pend50</id>
      <transparencia>1.0</transparencia>
      <colorLinea>
        <rgb>0,255,255,255</rgb>
      </colorLinea>
      <trazo class="basicStroke">
        <anchura>3</anchura>
      </trazo>
      <colorRelleno>
        <rgb>255,145,0,80</rgb>
      </colorRelleno>
    </estilo>
  </entry>
</estilos>
      
<simbologias>
  <entry>
    <string>pend50</string>
    <symb class="poligono">
      <id>pend50</id>
      <idEstiloPoligono>pend50</idEstiloPoligono>
    </symb>
  </entry>
</simbologias>
      
Definición de estilo de polígono Definición de simbología de polígono

7.6 Estilos y simbologías para etiquetas

7.6.1 Definición de estilos

Etiqueta Descripción
id Identificador del estilo. Debe coincidir con el atributo string definido en la etiqueta entry.
transparencia Grado de transparencia a aplicar.
fuente Etiqueta que permite definir atributos tipográficos de la etiqueta. Ahora mismo solo está soportado el tamaño. Ej:
<fuente><tamano>36</tamano></fuente>
colorTexto Color de la letra a utilizar. Debe llevar anidado un elemento rgb:
<colorTexto><rgb>255,145,0,80</rgb></colorTexto>
<entry>
  <string>idTextRojo</string>
  <estilo class="estiloTexto">
    <id>idTextRojo</id>
    <transparencia>1.0</transparencia>
    <fuente>
      <tamano>36</tamano>
    </fuente>
    <colorTexto>
      <rgb>255,0,0,255</rgb>
    </colorTexto>
    <rotacion>0.0</rotacion>
  </estilo>
</entry>
      
<entry>
  <string>label_rojas_symb</string>
  <symb class="poligono">
    <id>Default_label</id>
    <texto>idTextRojo</texto>
    <idEstiloPoligono>label_rojas_pol</idEstiloPoligono>
  </symb>
</entry>
      
Definición de estilo de texto Definición de simbología de etiqueta

En este caso definimos una simbología de tipo polígono label_rojas_symb que referencia a un estilo de tipo texto idTextoRojo y a un estilo de tipo polígono label_rojas_pol. Para utilizar esta simbología, tendremos que referenciarla en la definición de la capa del siguiente modo:
<labelSymbId>label_rojas_symb</labelSymbId>.

7.7 Estilos y simbologías por defecto

Con la instalación de CartoDruid se incluye un fichero con simbologías y estilos por defecto configurados en el fichero /Cartodroid/config/crtdrdSymbologies.xml. Esta configuración puede ser sobrescrita por el proyecto sin más que definir en el fichero de simbologías del proyecto un estilo/simbología con el mismo identificador.

Por ejemplo, la siguiente simbología es utilizada por CartoDruid para definir la presentación del polígono del sketch de un corte válido. Pegando este trozo de código en el fichero de simbologías del proyecto y modificándolo se modificaría la visualización que por defecto da CartoDruid a este tipo de sketch.

<entry>
 <string>symbSketchLineOK</string>
 <estilo class="estiloPoligono">
 <id>symbSketchLineOK</id>
 <transparencia>0.8</transparencia>
 <colorLinea>
 <rgb>110,230,0,255</rgb>
 </colorLinea>
 <trazo class="basicStroke">
 <anchura>2</anchura>
 </trazo>
 <colorRelleno>
 <rgb>0,0,0,0</rgb>
 </colorRelleno>
 <imagenFondo></imagenFondo>
 </estilo>
</entry>

7.8 Simbologías condicionales

CartoDruid permite definir reglas para calcular la simbología que se debe aplicar a una entidad, tanto a su geometria como a su label, utilizando las etiquetas symbologyExpression y labelSymbologyExpression en la definición de la capa en el fichero crtdrdLayers.xml se puede definir una expresión SQL para determinar el identificador de la simbología a utilizar (Ver apartado de casos prácticos para ejemplos concretos).

Existe un método alternativo para simbolizar en función de atributos, en la configuración de la capa se puede anidar un elemento symbologies, en el que definimos un elemento symbology por cada simbología diferente que queremos aplicar, y la expresión SQL para su cálculo.

Por ejemplo en este caso vamos a simbolizar la capa de recintos SIGPAC por el capo de c_uso_sigpac, pero en el caso del viñedo queremos hacer diferencias utilizando el campo del campo cap_auto.

<es.jcyl.ita.crtcyl.core.model.VectorialLayer>
 …
<symbologies>
<es.jcyl.ita.crtcyl.core.model.style.ConditionalSymbology>
 <id>ALICIA</id>
 <name>Uso Forestal</name>
 <condition>c_uso_sigpac = 'FO'</condition>
</es.jcyl.ita.crtcyl.core.model.style.ConditionalSymbology>
<es.jcyl.ita.crtcyl.core.model.style.ConditionalSymbology>
 <id>JAIME</id>
 <name>Improductivo</name>
 <condition>c_uso_sigpac = 'IM'</condition>
</es.jcyl.ita.crtcyl.core.model.style.ConditionalSymbology>
<es.jcyl.ita.crtcyl.core.model.style.ConditionalSymbology>
 <id>CAMILO</id>
 <name>Tierra arable</name>
 <condition>c_uso_sigpac = 'TA'</condition>
</es.jcyl.ita.crtcyl.core.model.style.ConditionalSymbology>
<es.jcyl.ita.crtcyl.core.model.style.ConditionalSymbology>
 <id>PABLO</id>
 <name>Viñedo con CAP &gt; 50%</name>
 <condition>c_uso_sigpac = 'VI' AND CAP_AUTO &gt; 50</condition>
</es.jcyl.ita.crtcyl.core.model.style.ConditionalSymbology>
<es.jcyl.ita.crtcyl.core.model.style.ConditionalSymbology>
 <id>SOFIA</id>
 <name>Viñedo con CAP &lt;= 50%</name>
 <condition>c_uso_sigpac = 'VI' AND CAP_AUTO &lt;= 50</condition>
</es.jcyl.ita.crtcyl.core.model.style.ConditionalSymbology>
</symbologies>
 …
</es.jcyl.ita.crtcyl.core.model.VectorialLayer>

Estas reglas se aplican en el orden en el que son definidas en el XML, es decir, para cada geometría se evalúan las reglas en secuencia y se aplica la simbología de la primera regla satisfecha. En caso de no cumplir ninguno de los casos, se utiliza la simbología por defecto de la capa, la definida en el atributo symbId.

La ventaja respecto a utilizar la etiqueta symbologyExpression, es que al poder describir por separado cada regla, y darle un nombre, desde CartoDruid se puede utilizar esta información para mostrar una leyenda del mapa. Al pulsar sobre el cuadro de la simbología en la TOC, se abre una pantalla con la descripción de los estilos.

En las siguientes pantallas se puede ver cómo se aplican estas reglas sobre las capas de recintos y la leyenda que se genera a partir de las reglas.

Capa de recintos sigpac simbolizada por uso y por coeficiente CAP Leyenda calculada a partir de reglas de simbología