lunes, 4 de junio de 2018

Añadir símbolos SVG a QGIS.

Como todos los aficionados a la cartografía sabemos, la simbología que se aplique a los vectores que componen un mapa determina en gran medida su atractivo y hacen su lectura y entendimiento mucho más sencillo e intuitivo. Esto, que es común para todos los elementos, se hace especialmente notorio en el caso de los marcadores de vectores tipo punto, que son aquellos que configuran los genéricamente llamados puntos de interés (POI's) y representan los elementos puntuales del terreno.
Iconos representando una cima, una gasolinera, un camping o un aeródromo son imprescindibles en cualquier mapa moderno que aspire a dar una visión nítida y de fácil interpretación del territorio. Es en estos casos cuando una simple figura geométrica se queda muy corta para ese objetivo y necesitamos de marcadores más elaborados.
Galería de marcadores simples en QGIS, insuficientes para representar ciertos elementos.
Es aquí donde entran en juego los marcadores SVG (Scalable Vector Graphics). Este formato, como vectorial que es, nos ofrece la indispensable propiedad de poder ser redimensionado al tamaño que necesitemos sin pérdida de calidad (lo que si sucede en formatos de imagen como el PNG, habitualmente utilizados como marcadores por su transparencia). Y, además, tienen la posibilidad de poder editar su estructura modificando anchuras y colores de contorno y contenido. 
QGIS cuenta también por defecto con una buena colección de marcadores SVG.
Símbolo SVG de QGIS de tamaño 8x8 mm, con relleno en verde y contorno en negro de anchura 0,20 mm.
Hecha esta brevísima introducción, hoy vamos a mostrar cómo podemos ampliar la galería de marcadores SVG de nuestro QGIS.
- Lo primero que necesitamos son los nuevos símbolos SVG a añadir. Aunque siempre está la posibilidad de crear nosotros mismos el SVG con programas como Inkscape, para lo que hoy nos ocupa tiraremos por el camino sencillo: librerías de símbolos ya preparadas. Son muchas las que podemos encontrar por la web; nosotros para nuestro artículo vamos a usar la colección de símbolos open source MAKI, facilitada por la gente de mapbox.
Se trata -a fecha de este artículo- de un compendio de 146 símbolos, ofrecidos en dos tamaños (11x11 y 15x15 pixels), que representan algunas de los elementos más clásicos presentes en un mapa. La web nos ofrece además la posibilidad de editar ciertos parámetros del icono o seleccionar sólo aquellos que queremos antes de la descarga. Nosotros descargamos el lote completo (zip de 1,44 mb).
Contenido del paquete MAKI con la carpeta icons que es la que contiene los marcadores SVG.
- Lo segundo que necesitamos saber es en qué lugar de nuestro PC debemos colocar los archivos SVG para que QGIS tenga acceso a ellos. No nos complicamos lo más mínimo y desde la misma ventana de simbología de QGIS obtenemos la ruta a los mismos.
Es fácil obtener la ruta al destino de los símbolos SVG desde la misma ventana de simbología, teniendo seleccionado SVG marker como tipo de símbolo. Obviamente dependerá del lugar donde se haya instalado QGIS, en mi ejemplo es C:\Program Files\QGIS 3.0\apps\qgis\svg
- Una vez tenemos los nuevos SVG y la ruta donde colocarlos, simplemente extraemos la carpeta icons del ZIP a la carpeta destino (Ej: C:\Program Files\QGIS 3.0\apps\qgis\svg) y la renombramos con un nombre identificativo para más comodidad.
Extraemos la carpeta al directorio destino y la renombramos como maki para mayor comodidad.
Ya podemos abrir QGIS y comprobar que los nuevos símbolos están disponibles como SVG marker bajo el directorio especificado:

APÉNDICE
Seguramente muchos os hayáis dado cuenta de un pequeño detalle: mientras que muchos de los símbolos SVG por defecto de QGIS pueden editarse (color, grosor del trazo, etc...), los símbolos de MAKI que acabamos de añadir a la librería no nos lo permiten, apareciendo bloqueadas dichas opciones.
Los colores de relleno y de marca, así como su anchura, no están disponibles para modificar.
Investigando un poco y tras leer ciertas webs, el motivo se encuentra en la propia estructura del archivo SVG compuesta de texto xml. Así tenemos que el símbolo airfield-15.svg del ejemplo de arriba está formado por el siguiente código (visto en el mismo bloc de notas):

Y cotejando con uno de los símbolos editables disponibles por defecto en QGIS, enseguida encontramos la línea de código que permite que el SVG sea modificable:
Código destacado en amarillo que nos permite convertir el SVG en editable en colores y anchuras de marca. 
Procedimos pues a modificar el texto xml del símbolo airfield-15.svg de MAKI añadiéndole el código en cuestión:

Guardamos cambios y abrimos QGIS para comprobar que el símbolo SVG modificado nos permite ahora editar sus colores y marcas.
El símbolo ha pasado del negro de sus compañeros al gris (lo que ya nos indica que alguna modificación ha sufrido). Las pestañas de color de relleno, color de marca y anchura de marca se encuentran ahora activas, pudiendo editar el símbolo a nuestro gusto.
Por último reseñar que el símbolo puede estar compuesto por varios elementos, con lo que el texto xml estará compuesto por diferentes "paths", y habrá que añadir el correspondiente código tras cada path o sólo haremos editable parte del símbolo. Se ve claramente con el ejemplo del símbolo bakery-15.svg
Este símbolo SVG contiene dos path: el primero corresponde a los tres vectores izquierdos y el segundo path a los dos vectores derechos. Hemos añadido el código -en amarillo- tras cada uno de los paths -destacados en verde-.
Esto es todo por hoy. Obviamente puede resultar engorroso modificar según lo expuesto toda una librería de símbolos, pero para casos que necesitemos imperiosamente modificar alguno de los marcadores creemos que es una solución aceptable. Saludos.

PD1: Otra buena colección de iconos (172) la tenéis aquí.
PD2: dado que la estructura xml del SVG puede ser diferente al estar creado por distintos softwares (Inkscape, Illustrator, etc...), es posible que el añadido del citado código no funcione igual en todos los casos, y haya que añadirlo en más o menos "path's" y/o "polygon`s".

12 comentarios:

  1. Muchas gracias por destripar así de bien este asunto de los SVG... Impecable y muy útil.

    ResponderEliminar
  2. Fantástica entrada !!!
    Un abrazo Javi

    ResponderEliminar
  3. Con Inkscape, es una opción para crear y personalizar iconos, exportarlos a svg, para levantarlo con QGis en ese aspecto es limitado en cuanto a variedad de iconos.

    muy buen post!!!!

    saludos

    ResponderEliminar
    Respuestas
    1. Yo intenté crear algunos con Inkscape (muy sencillos) pero seguían sin dejarme modificar en QGIS hasta que no variaba el código... También es cierto que no controlo Inkscape y seguramente no los exporte como deba... Saludos y gracias!

      Eliminar
  4. donde encuentro el código para poder modificarlo?

    ResponderEliminar
    Respuestas
    1. No entiendo... como se ve en el artículo tendrás que buscarlo entre las líneas de texto que forman el archivo SVG....

      Eliminar
  5. Buenas,
    cuando intento extraer la carpeta "icons" en la carpeta "svg" me dice: no se han encontrado archivos

    ResponderEliminar