Creación de mapas interactivos en lienzo (QGIS3)

Este tutorial muestra cómo hacer que los objetos espaciales se actualicen dinámicamente al mover el cursor en el lienzo de QGIS. Implementaremos el cepillado del lienzo usando expresiones para hacer que los objetos espaciales respondan al movimiento del cursor.

Visión general de la tarea

Crearemos una cuadrícula de iconos QGIS y aplicaremos un cambio definido por datos para la rotación de iconos para hacer que los iconos sigan el movimiento del cursor.

../../_images/output1.gif

Procedimiento

1. We will start by creating a grid. To make our grid with global extents, we can load the world map on the canvas. You can type world in the coordinates box at the bottom of the QGIS window and press Enter. This is one of the several hidden easter eggs in QGIS. You can discover other easter eggs on our YouTube Channel.

../../_images/1103.png
  1. Se añadirá una nueva capa World Map al panel Capas de QGIS. Vaya a Procesos ‣ Caja de herramientas.

../../_images/290.png
  1. Busque y localice el algoritmo Creación de vectores ‣ Crear cuadrícula. Haga doble clic para abrirlo.

../../_images/337.png
  1. En el cuadro de diálogo Crear cuadrícula, haga clic en el menú desplegable Calcular a partir de capa ‣ Mapa Mundial.

../../_images/418.png
  1. A continuación, ajuste el Espaciado horizontal y el Espaciado vertical a 20 grados. Haga clic en el botón ... situado junto a Cuadrícula y seleccione Guardar en archivo. Busque una carpeta en su ordenador e introduzca el nombre grid.gpkg. Pulse Ejecutar.

../../_images/517.png
  1. Se añadirá una nueva capa grid. Haga clic en el botón Abrir el panel de estilo de capas del panel Capas. Haga clic en la etiqueta Marcador simple.

../../_images/617.png
  1. En el menú desplegable, seleccione Marcador SVG como tipo de símbolo.

../../_images/716.png
  1. Desplácese hasta la sección Navegador SVG y seleccione la carpeta logos. Seleccione el icono QGIS.

../../_images/816.png
  1. Desplácese hasta la opción Tamaño y ajuste el tamaño a 5.

../../_images/916.png
  1. A continuación, localice la opción Rotación y haga clic en el botón Cambio definido por datos. Seleccione Editar….

../../_images/1022.png
  1. Añadiremos una expresión que calculará dinámicamente la rotación del icono basándose en la posición actual del cursor. Como nuestro icono está apuntando a 135° de acimut, esta será la rotación 0. A medida que el cursor se mueva, la expresión calculará el ángulo acimutal entre el icono y la posición del cursor y calculará el ángulo que debe girar para apuntar al cursor. Introduzca la siguiente expresión y pulse Aceptar.

degrees(azimuth(@geometry,  @canvas_cursor_point)) - 135
../../_images/1125.png
  1. El lienzo del mapa aún no responde al movimiento del cursor porque no se actualiza a menos que muevas el mapa. Hagamos que se actualice automáticamente. Haz clic con el botón derecho en la capa grid y selecciona Propiedades.

../../_images/1223.png
  1. Cambie a la pestaña Renderizado. Desplácese hacia abajo y marque la casilla Refrescar capa a intervalos. Ajuste el intervalo a un número pequeño como 0.1 (es decir, 100ms) y haga clic en Aceptar.

../../_images/1321.png
  1. De vuelta a la ventana principal, desactiva la capa Mapa del Mundo. Ahora, al mover el cursor, todos los iconos rotarán para apuntar hacia tu posición actual.

../../_images/1419.png
  1. Este divertido ejercicio fue diseñado para ayudarte a entender cómo usar la variable @canvas_cursor_point para hacer capas dinámicas que respondan al movimiento del ratón.

../../_images/output1.gif

If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)