En este tutorial se explica cómo crear un efecto visual dinámico en QGIS que simula una «araña» (ragnetto) que conecta automáticamente los 8 puntos más cercanos al cursor del mouse. Esta funcionalidad permite visualizar relaciones espaciales de forma interactiva y resulta especialmente útil para análisis de proximidad.
El tutorial incluye:
- Conexiones gráficas dinámicas desde el cursor hacia los puntos cercanos
- Etiquetado automático de nombres (opcional)
- Visualización de distancias en metros (opcional)
Requisitos
- QGIS versión 3.x
- Capa vectorial de puntos (ciudades, equipamientos, puntos de interés, etc.)
Paso 1: Configuración del generador de geometrías
El primer paso consiste en configurar las líneas que conectan dinámicamente el cursor con los puntos más cercanos.
- Cargar una capa de puntos y hacer clic derecho sobre la misma para acceder a las propiedades de la capa (clic derecho → Propiedades)
- Navegar a la pestaña «Simbología», ubicarse sobre «Marcador simple» y en la parte derecha hacer clic en el botón + para agregar otro marcador
- Seleccionar un marcador simple, luego ir a «Tipo de capa del símbolo» y seleccionar «Generador de geometrías». En tipo de geometría seleccionar «cadena de línea»
- Introducir la siguiente expresión en el campo correspondiente:
with_variable(
'center',
transform(@canvas_cursor_point, @map_crs, @layer_crs),
if(
array_contains(
array_slice(
array_agg(
@id,
order_by := distance(@geometry, @center)
), 0, 7
),
@id
),
make_line(@geometry, @center),
NULL
)
)

Al aceptar los cambios y hacer clic en cualquier parte del mapa, se mostrarán los puntos más cercanos. Si se desea que el cursor los siga automáticamente, realizar la siguiente configuración: en el siguiente nivel del Generador de geometría seleccionar «Línea», luego en la parte inferior debajo de los estilos se encuentra el botón «Avanzado». Ahí seleccionar «Animation Setting» y activar con «Is Animated».

Si se desea la expresión sin movimiento, simplemente desactivar «Animation Setting» en el paso anterior y usar esta expresión:
with_variable(
'center',
transform(@map_extent_center, @map_crs, @layer_crs),
if(
array_contains(
array_slice(
array_agg(
@id,
order_by := distance(@geometry, @center)
), 0, 7
),
@id
),
make_line(@geometry, @center),
NULL
)
)
Estas expresiones calculan la posición del cursor, determinan los 8 puntos más cercanos y generan líneas desde cada punto seleccionado hacia la posición del cursor.
- Configurar el estilo de línea y puntos:
- Tipo: dependiendo del símbolo para el punto o línea, seleccionar los colores de preferencia. Se recomienda hacer una personalización manual para evitar perder las expresiones del generador de geometría
- Color: negro o según preferencias
- Grosor: 0.5 mm
Paso 2: Etiquetado condicional
Para mostrar únicamente las etiquetas de los puntos conectados, se debe configurar un etiquetado por reglas.
- Acceder a las propiedades de la capa en la pestaña «Etiquetas»
- Seleccionar «Etiquetado basado en reglas» en el menú desplegable
- Crear una nueva regla, introducir el nombre de la regla y en el campo «Filtro» (junto a Prueba) hacer clic en el ícono de expresión (ε) para añadir el siguiente filtro:
with_variable(
'center',
transform(@canvas_cursor_point, @map_crs, @layer_crs),
if(
array_contains(
array_slice(
array_agg(
@id,
order_by := distance(@geometry, @center)
), 0, 7
),
@id
),
true,
NULL
)
) is true
- Configurar el texto de la etiqueta. En la parte inferior se puede seleccionar el campo que se desee que muestre el texto y así darle el formato, tipo de letra, color del texto, etc.:
- Seleccionar el campo que contiene los nombres
- Ajustar fuente, tamaño y posición según necesidades
- Aplicar colores que proporcionen buen contraste

Paso 3: Visualización de distancias
Si se desea como funcionalidad adicional mostrar las distancias calculadas en tiempo real, también se puede hacer, pero debe considerarse que la capa esté proyectada en un sistema de coordenadas planas y el proyecto también. En coordenadas geográficas calculará otros valores.
- Al igual que el paso anterior, crear una nueva regla de etiquetado adicional o modificar la existente (la anterior se puede desactivar para mantener ambas)
- Utilizar la siguiente expresión para el texto de la etiqueta, pero ya no en el campo «Filtro» sino en el campo «Valor» haciendo clic en el ícono de expresión (ε):
with_variable(
'center',
transform(@canvas_cursor_point, @map_crs, @layer_crs),
if(
array_contains(
array_slice(
array_agg(
@id,
order_by := distance(@geometry, @center)
), 0, 7
),
@id
),
round(distance(@geometry, @center), 2) || ' m',
NULL
)
)
- Configuración recomendada para las etiquetas de distancia:
- Color distintivo (rojo o naranja)
- Tamaño de fuente reducido (8-9 puntos)
- Posición próxima a las líneas de conexión

Personalización avanzada
Una vez establecida la funcionalidad básica, se pueden implementar mejoras adicionales:
- Aplicación de colores variables según distancia mediante ramp_color
- Grabación de secuencias de video para demostrar la funcionalidad
- Exportación a formatos web utilizando QGIS2Web para visualización online
- Personalizar según el gusto de cada usuario

Resolución de problemas comunes
El efecto no se actualiza al mover el cursor
Verificar que el renderizado dinámico esté activado mediante el botón correspondiente (▶️) en la barra de herramientas. Si se colocan demasiados puntos, considerar usar un ordenador potente.
Las distancias calculadas son incorrectas
Utilizar un sistema de coordenadas proyectado apropiado (por ejemplo, EPSG:3857 o el sistema UTM correspondiente a la zona de trabajo) en lugar de sistemas geográficos.
Modificar el número de puntos conectados
En las expresiones proporcionadas, modificar los valores «0, 7» según el número deseado de conexiones (ejemplo: «0, 4» para 5 puntos, «0, 9» para 10 puntos).
Consideraciones de rendimiento
Para capas con gran cantidad de entidades (superior a 1000 puntos), se recomienda aplicar filtros previos para optimizar el rendimiento del sistema y mantener la fluidez de la visualización interactiva.
Referencia: Basado en la documentación disponible en https://hfcqgis.opendatasicilia.it/esempi/ragnetto/