• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar al pie de página
logo web Geoinnova

Geoinnova

Consultoría y Formación en SIG y Medio Ambiente

  • Geoinnova
    • Asociación
    • Equipo
    • Visor de proyectos Geoinnova
    • Geolibrería
    • Alianzas Estratégicas
  • Consultoría
    • Consultoría y Desarrollo en Sistemas de Información Geográfica
    • Consultora Ambiental
    • Turismo sostenible
    • Planificación urbana y ordenación del territorio
    • Planes Urbanos de Actuación Municipal – PUAM
    • Geomarketing
  • Servicios
    • Planero Web
    • QElectricGIS
    • Plugins
  • Formación
    • Todos los cursos
    • Webinars
    • Máster y Diplomas
    • Cursos de ArcGIS
    • Cursos de QGIS
    • Cursos de Teledetección
    • Cursos de Medioambiente
  • Medio Ambiente
    • Consultora Ambiental
    • Estudios ambientales para proyectos de energías renovables
    • Estudios de Impacto e Integración Paisajística
    • Evaluación Ambiental Estratégica de planes y programas
    • Estudio de Impacto Ambiental para proyectos
    • Cálculo huella de carbono
    • Educación Ambiental
    • Cursos de Medioambiente
  • Coworking
  • Blog
    • SIG
    • Medio Ambiente
    • Teledetección
    • Programación y Desarrollo SIG
    • Corporativo
  • Contacto
    • Soporte de Clientes – Tickets
SIG

Cómo crear símbolos SVG para QGIS con Inkscape y que cambien dinámicamente

03/02/2022 3 comentarios

QGIS viene con una gran cantidad de marcadores para poder usarlos en nuestros mapas pero siempre hay casos en los que ninguno de estos símbolos se ajustan a la temática de nuestro mapa y una opción es crear un marcador SVG personalizado en Inkscape o en cualquier otro software de diseño gráfico preferido. En QGIS es sencillo añadir los nuevos símbolos a la biblioteca de marcadores.

Pero ¿qué pasa si necesitamos diferentes versiones de un mismo símbolo en el que hay variaciones en el color o en el texto que lleva el marcador? Realizar en Inkscape numerosas variantes del mismo símbolo sería una opción pero si son muchas no sería la más lógica.

Afortunadamente, el SVG dinámico resuelve todo esto.

Contenidos ocultar
SVG dinámicos: personalizar gráficos vectoriales a partir de datos
Creación de simbología en Inkscape
Convirtiendo a un SVG dinámico
Configuración de la simbología en QGIS

SVG dinámicos: personalizar gráficos vectoriales a partir de datos

Para afrontar esta situación podemos crear marcadores SVG parametrizables que QGIS reemplazará por valores de color de relleno, contorno, y texto que definamos a posteriori de forma dinámica. Es decir, QGIS hará todo el trabajo por nosotros evitando el engorro de crear un montón de cambios de una misma simbología: podremos personalizar cualquier parte de un SVG con los atributos de una capa.

Para ello vamos a utilizar Inkscape, un editor profesional de gráficos vectoriales gratuito y de código abierto que puedes aprender a utilizar en nuestro curso. Inkscape tiene todas las funciones y herramientas requeridas para crear cualquier simbología que necesitamos para nuestros mapas. Veremos cómo a crear y editar estos marcadores personalizables con Inkscape y cómo importarlos y representarlos de forma dinámica en QGIS.

Creación de simbología en Inkscape

Para este ejemplo tengo la intención de realizar una simbología utilizando los modelos de placa que se utilizan en las señales de hitos kilométricos de la red de carreteras en España. Utilizaré un único modelo de gráfico SVG creado en Inkscape al que aplicaré una parametrización que me permita realizar en QGIS infinitas combinaciones de color y texto en la señal. Para que el ejemplo no se haga largo me centraré solo en la señalización para carreteras nacionales y autonómicas.

Modelos de hitos kilométricos genéricos de las carreteras de España. Imagen: “Hitos kilómetricos de España” por Miguillen licencia bajo CC BY-SA 4.0.

Abrimos Inkscape y dibujamos el símbolo de una única señal usando las herramientas de dibujo que nos proporciona Inkscape. No te preocupes por el tamaño de tu dibujo pero sí es importante asegurarse de alinear al centro de la página.

Con Inkscape no es necesario indicar antes el tamaño de la página en las propiedades del documento ya que existe una forma rápida que ajusta las dimensiones de esta a la selección que tenemos hecha en nuestro lienzo. Para ello, seleccionamos todas las formas y textos que componen nuestro símbolo y vamos al menú Edición > Ajustar la página a la selección.

Una vez creada una plantilla con nuestro símbolo, debemos ajustar la página del lienzo a las dimensiones del gráfico.

Hemos creado una plantilla del símbolo con textos, colores y formas de ejemplo y se ha ajustado la página al tamaño del marcador de mapa. El siguiente paso será guardar el dibujo en un archivo SVG.
SVG es la abreviatura de Simple Vector Graphics, un formato abierto y estándar para guardar y compartir gráficos vectoriales. Cuando guardamos nuestra composición en Inkscape el programa por defecto lo hace en una versión de SVG con propiedades añadidas por Inskcape que amplían las capacidades del formato. No obstante, estas propiedades ampliadas al formato SVG aún no forman parte oficialmente del estándar por lo que en nuestro caso es más recomendable guardar la composición gráfica en el formato «SVG plano» que también ofrece el programa.

Convirtiendo a un SVG dinámico

Ya tenemos nuestro marcador listo para usarlo en QGIS. Sin embargo, hay un ‘pero’: QGIS no puede editar el color de relleno y el color del trazo ni puede leer el ancho del trazo que queda guardado en nuestro archivo SVG. Tampoco podemos modificar los texto que hemos incluido en la simbología. Por lo tanto, estamos trabajando con una simbología estática ya que QGIS aún no nos da la opción de editar ninguna de las propiedades anteriores en el símbolo.

Lo que queremos evitar es repetir todos los pasos anteriores cada vez que queramos cambiar el tamaño, el color o texto del símbolo. Esto puede ser una tarea tediosa si hay muchas variantes de nuestro símbolo y por lo tanto no es una opción.

Para que el marcador SVG sea editable de forma dinámica en QGIS debemos modificar algo el código del archivo SVG. Lo podemos realizar en un editor de texto como Notepad ++ o incluso dentro del propio Inkscape. Porque si no lo sabías con Inkscape tenemos la capacidad de navegar por el árbol de nodos que compone nuestro archivo SVG y editar las propiedades de los parámetros.

Desde el menú Editar de Inkscape accedemos al panel Editor XML y navegar por el árbol de nodos de nuestro dibujo vectorial en formato SVG.

Podemos cambiar los atributos de un marcador SVG que hayamos creado y si añadimos los marcadores de posición param(fill) modificaremos el color de relleno, con param(outline) cambiaremos el color del trazo y con param(outline-width) el ancho del trazo. Estos marcadores de posición pueden ir seguidos opcionalmente de un valor por defecto. Observa en el ejemplo cómo se ha modificado el atributo fill (color de relleno), donde se añadió param(fill) seguido de un código hexadecimal de color que he incluido de forma predeterminada (#ff0000):

<path
id="rect4804"
fill="param(fill) #ff0000"
stroke="#fe870a"
stroke-width="0.4688"
d="M -327.17737,375.807 H 30.024632 c 23.936,0 43.203,19.27 43.203,43.203 v 602.372 c 0,23.936 -19.269,43.203 -43.203,43.203 H -327.17737 c -23.936,0 -43.203,-19.269 -43.203,-43.203 V 419.01 c 0,-23.935 19.269,-43.203 43.203,-43.203 z"
style="display:inline" />

Configuración de la simbología en QGIS

De esta manera he parametrizado el SVG para que QGIS cambie el color de la placa de señalización según el código de color que está almacenado en la columna «color_placa» de la tabla de atributos de la capa. En la configuración de simbología de QGIS señalamos que el color de relleno se establezca de acuerdo al valor almacenado en la columna.

Por una parte, arriba estamos definiendo el color de relleno de la señal a partir de los valores de códigos de color hexadecimales almacenados en la columna color_placa de la tabla de atributos de la capa. En cambio abajo la nueva sección Dynamic SVG parameters en la ventana de simbología de QGIS nos permite vincular un parámetro libre (text1 y text2 en el ejemplo) con una expresión o columna de la tabla de atributos (en el ejemplo, el texto superior de la señal con la referencia de la carretera y el texto inferior que muestra el kilómetro señalizado).

Además, desde la versión 3.22 de QGIS ya podemos parametrizar el SVG de una forma aún más libre usando param(nombre del parámetro). ‘Nombre del parámetro’ hará referencia a un atributo de la capa o una expresión definida en la columna ‘Expresión’ de la tabla de la sección Dynamic SVG parameters que encontramos dentro de las opciones de configuración de simbología. En este código de ejemplo modificamos un texto en el SVG para que con param(text1) se muestre la referencia de la carretera a la que pertenece la señal y además con param(color_texto) que cambie el color del texto según la normativa establecida para cada tipo de placa.

style="fill:param(color_texto) #000000;fill-opacity:1;">param(text1)

Lo mismo podemos hacer para cambiar el texto según el valor de punto kilométrico guardado.

Con todo esto, ya podemos tener en QGIS una representación dinámica de la simbología a partir de un solo marcador SVG creado en Inkscape.

Resultado final donde se muestra la variación de la simbología a partir de un único gráfico vectorial SVG dinámico. Los colores y textos de las señales cambian en función de los datos guardados en la tabla de atributos de la capa.

Etiquetas: inkscape, qgis

Apúntate a nuestra newsletter semanal

"*" señala los campos obligatorios

Consentimiento*
*
Este campo es un campo de validación y debe quedar sin cambios.

Información legal

Cumplimos el RGPD (Reglamenteo General de Protección de Datos) y esta en la primera información que debes saber. Responsable: Asociación Geoinnova. Finalidad: Apuntarte en nuestra base de datos para poder enviarte nuestra newsletter y cualquier otra información de interes. Legitimidad: Nos das tu consentimiento para comunicarnos contigo. Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir tus datos. Para una información más ampliada entra a nuestra política de privacidad.

Artículos relacionados

Cómo instalar y agregar nuevas fuentes en QGIS
29/11/2022
Extraer valores ráster en QGIS
27/10/2022
Cómo instalar librerías python en PyQGIS
06/10/2022

Jesús Gómez Fernández

Jesús Gómez es un profesional con amplia experiencia en el campo de los Sistemas de Información Geográfica, participando en proyectos aplicados al transporte y movilidad, los servicios urbanos, el medio ambiente y el patrimonio. Forma parte de Alter Geosistemas y colaboradora con Geoinnova en proyectos de formación, desarrollo de aplicaciones GIS y cartografía.

Interacciones con los lectores

Comentarios

  1. Ricardo dice

    06/03/2022 a las 13:06

    Poemos hacer que el símbolo rote en función de la posición de una línea? Tengo una red eléctrica y necesito que el símbolo sea siempre perpendicular a dicha linea

    Responder
    • Alfredo dice

      02/06/2022 a las 02:39

      Ricardo lo pudiste solucionar ?. Tengo casi el mismo problema.

      Responder
    • Jesús Gómez Fernández dice

      02/06/2022 a las 09:43

      Desde la calculadora de campos puedes utilizar la función «azimuth»:

      degrees(azimuth(start_point($geometry), end_point($geometry)))

      Con ella obtienes el ángulo de la línea con respecto al norte. Después puedes calcular el grado de rotación que debería tener cada símbolo para que se muestre en una posición perpendicular a la línea.

      Responder

¿Quieres comentarnos algo? Adelante! Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Footer

Menú Legal

  • Aviso Legal
  • Política de privacidad
  • Política de cookies
  • Términos y condiciones

Otras páginas de interes

  • Promociones y descuentos en formación
  • Formación bonificada FUNDAE

Contacto

Calle Luis Morondo Urra nº 8 Bajo A
31006 Pamplona (Navarra)
info@geoinnova.org
+34 948 117 137

Horario de atención

Lunes a Viernes - 09:00 a 14:00 y de 16:00 a 19:00.
Fines de semana y Festivos - Exclusivamente por mail.
Horario de Verano (01 de julio al 30 de agosto): De lunes a viernes de 8 a 15h.
Entidad adherida a Confianza Online Certificado de inscripción en el Registro de huella de carbono, compensación y proyectos de absorción Logo Plazox

© 2023 · Desarrollada por Geoinnova en colaboración con OikosMSP

Gestionar el Consentimiento de las Cookies
Utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. Lo hacemos para mejorar la experiencia de navegación y para mostrar anuncios personalizados. El consentimiento a estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.
Funcional Siempre activo
El almacenamiento o acceso técnico es estrictamente necesario para el propósito legítimo de permitir el uso de un servicio específico explícitamente solicitado por el abonado o usuario, o con el único propósito de llevar a cabo la transmisión de una comunicación a través de una red de comunicaciones electrónicas.
Preferencias
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario.
Estadísticas
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos. El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos anónimos. Sin una requerimiento, el cumplimiento voluntario por parte de su proveedor de servicios de Internet, o los registros adicionales de un tercero, la información almacenada o recuperada sólo para este propósito no se puede utilizar para identificarlo.
Marketing
El almacenamiento o acceso técnico es necesario para crear perfiles de usuario para enviar publicidad, o para rastrear al usuario en un sitio web o en varios sitios web con fines de marketing similares.
Administrar opciones Gestionar los servicios Gestionar proveedores Leer más sobre estos propósitos
Preferencias
{title} {title} {title}