Saltar al contenido
AI Agent
QGIS
Tutorial

Unión espacial en QGIS: por ubicación, más cercano o con IA

Publicado el

Un mapa de calles del distrito 8 de Lyon con puntos rojos de escuelas, cada uno unido por una línea negra a su parada de tranvía azul más cercana, y el texto 710 m, distancia mediana de una escuela de Lyon a una parada de tranvía.

Una unión espacial copia los campos de una capa a otra según dónde están los objetos, no según un ID común. En QGIS, abre Vector > Data Management Tools > Join Attributes by Location…, elige la capa que recibirá los campos nuevos, la capa de la que se toman y una regla como "intersect", y ejecútala. Para preguntas del tipo "cuál es el más cercano", usa Join Attributes by Nearest, o escribe toda la tarea en una frase a AI Agent.

Lo que quieresHerramientaTiempo en nuestra prueba
Dar a cada punto el nombre del área donde caeJoin Attributes by Location0,21 s, 382 escuelas
Lo mismo, escrito en una fraseAI Agent22 s, recuento y vecino más cercano a la vez
Contar o sumar puntos por áreaJoin Attributes by Location (Summary)0,02 s, 9 áreas
Encontrar el objeto más cercano y su distanciaJoin Attributes by Nearest0,06 s, 382 escuelas

Los datos de prueba

Todas las cifras de esta guía salen de una sola ejecución con datos abiertos reales de Lyon, Francia, el 15 de octubre de 2026:

  • 9 arrondissements (los distritos de la ciudad) y 382 escuelas de OpenStreetMap.
  • 106 paradas de tranvía de OpenStreetMap.
  • 103 910 edificios de la BD TOPO del IGN, la base de datos topográfica nacional francesa.

Todas las capas están en Lambert-93 (EPSG:2154), un sistema proyectado en metros. Los tiempos se midieron con QGIS 3.44 en un MacBook Air M4.

Método 1: Join attributes by location

Es la unión espacial clásica. Aquí, cada escuela recibe el nombre de su arrondissement.

Abre la herramienta

Vector > Data Management Tools > Join Attributes by Location…. También puedes buscar "join attributes" en la Caja de herramientas de procesos (Ctrl+Alt+T).

Elige las dos capas

Join to features in es la capa que recibe los campos nuevos, aquí schools. By comparing to es la capa de la que los tomas, aquí arrondissements.

Marca un predicado

intersect es la opción segura por defecto para puntos en polígonos. La sección de más abajo explica qué significa cada casilla.

Elige los campos y el tipo de unión

En Fields to add, deja solo lo que necesitas, aquí name. Pon Join type en uno a uno y añade un prefijo como arr_ para localizar fácilmente el campo nuevo.

Ejecútala

Deja Joined layer como capa temporal para revisar primero el resultado y guárdala después como GeoPackage.

El cuadro de diálogo Join attributes by location de QGIS. Join to features in: schools. Predicate: intersect está marcado. By comparing to: arrondissements. Fields to add: name. Join type: Take attributes of the first matching feature only (one-to-one). Joined field prefix: arr_.
La unión que ejecutamos: las escuelas reciben el nombre del arrondissement en el que caen. Las 382 coincidieron en 0,21 segundos.

Marca Discard records which could not be joined solo si quieres descartar los fallos. Al principio déjala sin marcar: las filas vacías te dicen qué salió mal.

Úsala cuando: quieras uno o varios campos del objeto en el que está o con el que toca cada elemento.

Evítala cuando: los objetos nunca se tocan, como una escuela y una parada de tranvía. Eso es el Método 4.

Método 2: Pídeselo a AI Agent en una frase

AI Agent es nuestro plugin de QGIS que ejecuta tareas a partir de una petición escrita. Lee los nombres y campos de tus capas, elige las herramientas y las ejecuta en tu proyecto.

Le dimos esto, con las mismas capas de Lyon cargadas:

Cuenta las escuelas de cada arrondissement y luego da a cada escuela el nombre de su parada de tranvía más cercana y la distancia hasta ella en metros.

Ejecutó dos herramientas de procesamiento de QGIS y después un breve paso de Python que escribió los dos campos nuevos en la capa de escuelas. El panel mostró "Worked for 22 s". Pidió permiso una vez, porque iba a editar el GeoPackage en disco. Sus recuentos coincidieron exactamente con los de nuestra ejecución manual: 382 escuelas, desde 27 en el 2.º y el 4.º hasta 56 en el 5.º.

QGIS con los arrondissements de Lyon rellenos de naranja y puntos de escuelas, y el panel de AI Agent a la derecha. La petición dice: Count the schools in each arrondissement, then give every school the name of its nearest tram stop and the distance to it in metres. La respuesta enumera los recuentos por arrondissement, 382 escuelas en total, e indica que las 382 escuelas recibieron nearest_tram y tram_distance_m, con distancias de 49,6 a 4949,2 m.
Las mismas dos uniones a partir de una sola frase. La respuesta enlaza a la capa nueva y enumera lo que cambió.

Úsala cuando: conoces la pregunta pero no sabes cuál de las cuatro herramientas de unión la responde, o encadenas varios pasos.

Evítala cuando: ejecutas la misma unión cada semana. Guárdala una vez como modelo o como script de Python.

Precio: plan gratuito, sin tarjeta. Pro cuesta 49 € al mes sin IVA.

Método 3: Contar y resumir con una unión espacial

El Método 1 da a cada escuela su distrito. La pregunta inversa, cuántas escuelas tiene cada distrito, necesita la versión de resumen.

Busca Join attributes by location (summary) en la Caja de herramientas de procesos. Pon los polígonos en Join to features in, los puntos en By comparing to y elige las estadísticas en Summaries to calculate: recuento, suma, media, mediana, mínimo, máximo y más. QGIS añade un campo por estadística, con nombres como osm_id_count.

Mapa de los nueve arrondissements de Lyon coloreados de amarillo claro a naranja oscuro según el número de escuelas, cada uno con su etiqueta: 9e 38, 4e 27, 1e 33, 6e 41, 5e 56, 2e 27, 3e 54, 7e 53, 8e 53. Puntos rojos marcan las escuelas.
Escuelas por arrondissement con una sola unión de resumen: 0,02 segundos.

También suma números. Con los edificios del IGN, una ejecución dio a cada arrondissement su número de edificios y de viviendas registradas en ellos: 9474 edificios y 51 743 viviendas en el 3.º, el mayor en ambos casos.

Para un simple recuento, Vector > Analysis Tools > Count Points in Polygon… hace lo mismo con menos opciones.

Úsala cuando: la respuesta es un número por área: recuento, total, promedio.

Evítala cuando: necesitas la lista de coincidencias en sí. Usa el Método 1 con uno a muchos.

Método 4: Join attributes by nearest

Cuando los objetos nunca se tocan, únelos por distancia. Busca Join attributes by nearest en la Caja de herramientas de procesos.

Pon Input layer en schools, Input layer 2 en tram_stops y Maximum nearest neighbors en 1. QGIS añade los campos de la parada más un campo distance, y las coordenadas de ambos extremos.

Mapa de calles del distrito 8 de Lyon. Puntos rojos de escuelas unidos cada uno por una línea negra a la parada de tranvía azul más cercana. Varias escuelas comparten la misma parada.
Cada escuela unida a su parada de tranvía más cercana. En toda Lyon la mediana es de 710 m, y 86 de las 382 escuelas están a menos de 300 m.

Dos ajustes cambian el resultado:

  • Maximum distance. Con 300 m, solo 86 escuelas obtuvieron una parada. Las otras 296 se quedaron en el resultado con campos vacíos, salvo que marques Discard records which could not be joined.
  • Maximum nearest neighbors. Con 3, las 382 escuelas pasaron a 1146 filas, una por escuela y parada. Un empate exacto también añade una fila: con los 103 910 edificios del IGN obtuvimos 103 911 filas.

La distancia es en línea recta, no la distancia a pie por las calles.

Úsala cuando: preguntas "cuál es el más cercano" y "a qué distancia".

Evítala cuando: necesitas la distancia de desplazamiento. Usa las herramientas de Network analysis de la Caja de herramientas de procesos.

Qué predicado marcar

El predicado es la regla espacial que decide una coincidencia. QGIS lo lee como "capa A [predicado] capa B", donde A es la capa que recibe los campos.

Diagrama de ocho relaciones espaciales entre una forma roja A y una forma azul B: intersect, comparten alguna parte; contain, A contiene todo B; are within, A está dentro de B; equal, misma geometría; touch, solo comparten un borde; overlap, mismo tipo con parte compartida; cross, una línea lo atraviesa; y no match, disjoint, no se une nada.
El rojo es la capa que recibe los campos, el azul es la capa con la que comparas.

Tres reglas cubren la mayoría del trabajo:

  • intersect para puntos en polígonos, y para todo lo que solo necesita tocarse. También recoge los objetos sobre el borde.
  • are within cuando el objeto debe quedar totalmente dentro. En nuestros edificios, 112 de los que intersecan con Lyon no estaban totalmente dentro de un solo arrondissement: 108 cruzan el límite de la ciudad y 4 un borde interior.
  • contain para la dirección inversa, polígonos que contienen puntos.

Puedes marcar varias casillas. Un objeto coincide entonces si se cumple cualquiera de ellas.

Uno a uno, uno a muchos o mayor solapamiento

Un edificio en un borde toca dos distritos. El Join type decide qué pasa con él. Con los 46 250 edificios del IGN que intersecan con Lyon:

Tipo de uniónFilas de salidaTiempo
Uno a muchos (un objeto por coincidencia)46 2541,13 s
Solo el primer objeto coincidente (uno a uno)46 2500,99 s
Solo el mayor solapamiento (uno a uno)46 2509,62 s

Uno a muchos duplicó los 4 edificios que cabalgan sobre un borde interior. Eso es correcto para una lista de coincidencias e incorrecto para cualquier suma: esos edificios se contarían dos veces.

"First matching" se queda con la primera coincidencia que encuentra QGIS, así que un edificio en el borde puede acabar en cualquiera de los dos distritos. "Largest overlap" elige el distrito que contiene la mayor parte, que es la respuesta justa, pero aquí tardó diez veces más.

Trampas del CRS

Un sistema de referencia de coordenadas equivocado rara vez detiene una unión. Cambia el resultado en silencio.

  • Mezclar CRS funciona en las uniones por ubicación. Dejamos las escuelas en WGS 84 (EPSG:4326) y los distritos en Lambert-93. QGIS reproyectó al vuelo y las 382 coincidieron.
  • Las distancias siguen las unidades de la capa de entrada. Ejecuta Join by nearest con los archivos en WGS 84 y la "distancia" mediana sale 0,0071. Son grados, no metros. Reproyecta antes ambas capas a un CRS proyectado en metros, con Vector > Data Management Tools > Reproject Layer….
  • Maximum distance usa las mismas unidades. Un 300 en grados cubre todo el planeta.

Nuestra guía sobre qué es un CRS explica grados frente a metros y cómo arreglar una capa que aparece en el lugar equivocado.

Velocidad en capas grandes

QGIS resuelve uniones a escala de ciudad en segundos. Con los 103 910 edificios del IGN:

  • Unión uno a uno con los 9 distritos: 0,97 s desde un GeoPackage.
  • La misma capa como Shapefile: 1,69 s. Tras Vector > Data Management Tools > Create Spatial Index…, 1,04 s.
  • Parada de tranvía más cercana para cada edificio: 3,5 s.
  • Mayor solapamiento: 9,62 s, la opción más lenta.

Cuatro hábitos mantienen rápidas las uniones grandes:

  • Trabaja desde GeoPackage. Lleva un índice espacial. Un Shapefile necesita su archivo .qix, que escribe Create Spatial Index.
  • Pide menos campos. Rellena Fields to add en lugar de copiarlo todo.
  • Evita el mayor solapamiento salvo que los objetos del borde importen de verdad.
  • Repara antes las geometrías. Un polígono no válido detiene la ejecución con "has invalid geometry". La herramienta Fix geometries de la Caja de herramientas de procesos lo repara. También puedes cambiar Invalid feature filtering bajo el icono de la llave junto a la capa de entrada.

Comprueba también dónde están tus puntos. Solo 211 de los 382 puntos de escuela cayeron dentro de un edificio del IGN. El resto marca patios y recreos, así que "escuela dentro de edificio" habría dejado fuera 171 escuelas.

Qué recordar

Usa Join Attributes by Location con intersect para dar a los puntos el nombre de su área.

Usa la versión Summary para contar o sumar por área, y Join Attributes by Nearest para el objeto más cercano y su distancia.

Elige uno a uno para totales, y uno a muchos cuando necesites todas las coincidencias.

Reproyecta a un CRS en metros antes de calcular cualquier distancia.

Si no estás seguro de qué herramienta encaja, describe a AI Agent el resultado que quieres y revisa lo que construyó.

Preguntas frecuentes

¿Qué es una unión espacial en QGIS?

Una unión espacial añade los campos de una capa a otra según la ubicación: dentro, tocando o más cercano. En QGIS las herramientas principales son Join Attributes by Location, su versión Summary para recuentos y estadísticas, y Join Attributes by Nearest para distancias.

¿Cómo uno atributos por ubicación en QGIS?

Abre Vector > Data Management Tools > Join Attributes by Location…. Indica la capa que recibe los campos en Join to features in y la capa de origen en By comparing to, marca intersect, elige los campos y un tipo de unión uno a uno, y ejecútala.

¿Cuál es la diferencia entre unir por ubicación y unir por vecino más cercano?

Unir por ubicación exige que los objetos se toquen o se solapen, según el predicado que marques. Unir por vecino más cercano no exige contacto: encuentra el objeto más próximo y añade un campo de distancia, en las unidades del CRS de la capa de entrada.

¿Por qué mi unión espacial devuelve campos vacíos?

Normalmente los objetos no cumplen el predicado: puntos justo fuera de los polígonos, un predicado demasiado estricto como "are within", o geometrías no válidas. Revisa ambas capas en el mapa, prueba con "intersect" y ejecuta Fix Geometries. Que falte el CRS en una capa también la coloca mal.

¿Puede la IA hacer una unión espacial en QGIS?

Sí. AI Agent ejecuta las herramientas de QGIS a partir de una petición escrita. En nuestra prueba de Lyon hizo un recuento por distrito y una unión por vecino más cercano con una sola frase en 22 segundos, con los mismos resultados que la ejecución manual.

Prueba AI Agent gratis en QGIS, sin tarjeta

Escrito porTerraLab
·14 min read
Contactar