Cómo utilizar la función Aggregate en QGIS

Artículo escrito por Mauricio Márquez Goa. Profesional GIS / Analista Datos.

Las expresiones de QGIS tiene una función de agregación que permiten hacer uniones espaciales «al vuelo». Esto nos permite utilizar QGIS para usos muy interesantes. En esta entrada mostraremos cómo utilizar la función Aggregate en QGIS.

Un uso de este tipo es permitir una edición de datos rápida y precisa. Por ejemplo, cuando se está digitalizando y se desea rellenar automáticamente un campo en función de su relación con otra capa.

Para ejemplificar esta característica utilizaremos las capas de parcelas, radios censales, barrios, comunas y calles del portal de Buenos Aires Data de la Capital Autónoma de Buenos Aires (CABA).

Ejemplo Nº 1. Rellenar automáticamente los campos de la capa “areas_relevamiento” desde las capas de parcelas, radios_censales, barrios y comunas.

CABA está dividida en 15 comunas y 48 barrios superpuestos. En lugar de ingresar los datos del barrio, comuna, cantidad de parcelas y población por radio censal manualmente, se configurarán los campos cuyas propiedades se completarán automáticamente.

El primer paso es abrir las propiedades de la capa “areas_relevamiento”.

Función Aggregate en QGIS

En la pestaña Formulario de atributos, seleccionar el campo que deseamos que sea rellenado automáticamente. Procedemos a indicar la expresión usando la función aggregate con el valor a determinar.

Función Aggregate en QGIS - fomulario_atributos

Campo comunas

La expresión para el campo comunas será la siguiente:

aggregate

(‘comunas’,

‘concatenate’,

«comunas_t»,

intersects($geometry,geometry(@parent)),

‘, ‘ ,

«comunas»)

–función aggregate

–nombre de la capa

–tipo de agregación

–campo con valor de agregación

–expresión de calculo

–concatenador

–ordenación de la concatenación

 

Esta expresión significa que queremos consultar la capa comunas y recuperar el valor del campo comunas_t. El agregado se calculará utilizando solo las características que pasan los criterios de filtro definidos en el parámetro de filtro.

  • Definimos un filtro espacial para obtener solo la entidad que intersecta el polígono que acabamos de digitalizar.
  • La expresión geometry(@parent) se refiere a la entidad digitalizada “areas_relevamiento” y $geometry se refiere a la geometría de las entidades de la capa de intersección “comunas”.
  • Se debe marcar el recuadro de “Aplicar valor predeterminado al actualizar”.

Campo barrios

Repetiremos el proceso el campo barrios:

aggregate

(‘barrios’,

‘concatenate’,

«barrio»,

intersects($geometry,geometry(@parent)),

‘, ‘,

«comuna»)

–función aggregate

–nombre de la capa

–tipo de agregación

–campo con valor de agregación

–expresión de calculo

–concatenador

–ordenación de la concatenación

Esta expresión significa que queremos consultar la capa barrios y recuperar el valor del campo barrio. A

  • Definimos un filtro espacial para obtener solo la entidad que intersecta el polígono que acabamos de digitalizar.
  • Marcamos el recuadro de “Aplicar valor predeterminado al actualizar”.

Campo cant_parce

De nuevo se repite el proceso para el campo cant_parce:

aggregate

(‘parcelas’,

‘count’,

«id»,

intersects($geometry,geometry(@parent)),

‘, ‘ )

–función aggregate

–nombre de la capa

–tipo de agregación

–campo con valor de agregación

–expresión de calculo

–concatenador

Esta expresión significa que queremos consultar la capa parcelas y recuperar el valor de la cantidad de geometrías presentes mediante el campo id.

  • Definimos un filtro espacial para obtener solo las entidades que intersectan el polígono que acabamos de digitalizar.
  • Marcamos el recuadro de “Aplicar valor predeterminado al actualizar”.

Campo poblacion

Por último, repetimos el proceso para el campo poblacion:

aggregate

(‘radios_censales’,

‘sum’,

«tot_pob»,

intersects($geometry,geometry(@parent)),

‘, ‘ )

–función aggregate

–nombre de la capa

–tipo de agregación

–campo con valor de agregación

–expresión de calculo

–concatenador

 

Esta expresión significa que queremos consultar la capa radios_censales y recuperar la sumatoria de los valores presentes en el campo tot_pob.

  • Definimos un filtro espacial para obtener solo las entidades que intersectan el polígono que acabamos de digitalizar.
  • Marcamos el recuadro de “Aplicar valor predeterminado al actualizar”.

Como puede observarse, al finalizar la edición del polígono se generan automáticamente los valores para los campos poblacion, cant_parce, barrios y comunas a partir de configuración de completado automático.

Ejemplo Nº 2. Definición de Calle cercana frente a parcela digitalizada mediante restricción de nombre y cálculo de área de parcela

Con la capa de calles será de utilidad obtener del nombre de la calle enfrente en lugar de escribirlo manualmente y muchísimo mejor que el usuario pueda elegir el nombre desde las calles cercanas.

Vamos a las propiedades de la capa de parcelas_digitalizadas → pestaña Formularios de atributos.

Seleccionamos el campo calle_frente y elegimos en Tipo de Control →  Relación de valores.

Podemos configurar este campo para buscar los nombres del atributo de calle en la capa de calles. El truco es ingresar una expresión de filtro espacial para seleccionar los caminos que están cerca de la geometría digitalizada. Con la siguiente expresión puedes obtener el valor del campo:

intersects($geometry, buffer(@current_geometry, 0.0005))

Adicionalmente se puede calcular el área de parcela digitalizada. Para ello, al igual que en el primer ejemplo, en la pestaña Formulario de atributos seleccionamos el campo área para que sea rellenado automáticamente indicando la expresión $area. Ésta se refiere al área a la entidad digitalizada “parcelas_digitalizadas”. Marcamos el recuadro de “Aplicar valor predeterminado al actualizar”.

Ahora, a medida que digitalizamos las parcelas, los nombres de las calles cercanas se rellenarán en el cuadro desplegable y se presentarán al usuario. De igual manera se autocompletará el área de la entidad digitalizada. Hay duplicados debido a que varios segmentos de línea de la misma calle están presentes dentro de la distancia de búsqueda.

Más información

Para obtener mayor información sobre la función aggregate en QGIS puedes visitar la documentación de QGIS – función aggregate.

Este documento es una versión en habla hispana mejorada del artículo del blog de Ujaval Gandhi.

Let’s connect!

Date de alta en nuestro newsletter
y recibe este ebook gratuito

Y una vez al mes recibirás las últimas novedades del sector GIS y de nuestros cursos

3 comentarios en “Cómo utilizar la función Aggregate en QGIS”

  1. Hola,

    Me parece muy útil esta función. El problema que veo es que, siguiendo estos pasos, sólo se autorellena el campo en cuestión cuando introducimos una nueva entidad.

    Hay alguna forma de hacer el mismo proceso (o similar) para entidades ya digitalizadas, para así evitar el uso de herramientas de geoproceso y generar nuevos archivos?

    Gracias y un saludo!

  2. Excelente aporte. Saludos y felicidades por su blog, definitivamente uno de los mas interesantes en la comunidad de Geomática en español, espero no decaigan en ese empeño de compartir este tipo de aporte.

Deja un comentario