5 votos

¿Condiciones en las uniones espaciales de QGIS?

Estoy empezando a pensar en escribir expresiones simples en QGIS. Tengo dos capas de polígonos: la primera muestra los límites de las casas de varios tipos y cuántas personas viven en cada una. La segunda muestra los límites de las zonas que agrupan ciertas casas.

Me gustaría que la segunda capa mostrara un resumen de cuántas personas viven en cada tipo de casa en esa zona. También necesito que los valores se actualicen automáticamente si hago cambios en la primera capa. Para ello creo que la segunda capa necesitará un campo diferente para cada tipo de casa y que estos campos deben ser virtuales.

He llegado hasta el punto de descargar el plugin de Reffunctions y conseguir que la función intersecting_geom_sum sume a todas las personas de cada zona. Sin embargo, estoy luchando por introducir la condición por la cual cada campo sólo suma los valores de un tipo específico.

3voto

Ray Koopman Puntos 111

también puedes usar una capa virtual junto con una declaración de grupo, algo así como:

   SELECT zones.geometry, zones.typ, houses.typ, sum(houses.habs) as sumHabs
   FROM zones LEFT Join houses
   ON st_intersects(houses.geometry, zones.geometry)
   group by zones.geometry, zones.typ, houses.typ

0voto

nuecaster Puntos 128

Añade un nuevo campo virtual al casa capa llamada NumRes_Tipo1. Si la casa es de tipo 1, este campo será el número de residentes de la casa. En caso contrario será 0. Utilice esta función, sustituyendo los nombres de campo correctos:

if("tipo_de_casa" = tipo de casa 1, "número_de_residentes", 0)

Repita para cada tipo de casa. Ahora tienes campos en la capa de la casa llamados NumRes_Tipo1, NumRes_Tipo2, NumRes_Tipo3, etc.

Ahora usa los campos que acabas de crear con la función intersecting_geom_sum para sumar el número de residentes de cada tipo de casa. Añade una capa virtual al zonas capa con esta función:

intersecting_geom_sum('house_layer', 'NumRes_Type1')

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X