31 votos

Filtrar características en otras capas de QGIS Atlas

Estoy tratando de utilizar las herramientas de QGIS Atlas para construir "mapas de dispersión" de los estudiantes, es decir, mostrar la escuela y los estudiantes que asisten a esa escuela, para 215 escuelas.

La capa de escuelas es la capa de cobertura, y está siendo impulsada por el SCHNUM (número de escuela). Esto funciona bien, es decir, maneja las páginas correctamente.

Sin embargo, ¿cómo puedo mostrar sólo las características de otras capas, en este caso la capa de puntos de estudiantes, que coinciden con la correspondiente SCHNUM para la característica actual en la capa de cobertura?

También me gustaría cambiar la capa de cobertura (escuelas) a "oculta" y utilizar la misma técnica para mostrar sólo la escuela actual de una capa de escuelas duplicada.

Hay un presentación disponible aquí que alude al uso de una configuración de reglas de renderizado de capas mediante $atlasfeatureid pero no puedo entender cómo funciona.

También encontré esto página de seguimiento de errores que muestra que esto funciona, pero de nuevo, no puedo conseguir que funcione con mis datos:

53voto

sashkello Puntos 325

En efecto, es necesario utilizar una simbología basada en reglas para lograr lo que se desea.

Tienes que crear una regla para lo que quieres mostrar, y una regla ELSE para todos los demás.

enter image description here

En la regla ELSE, desmarque la casilla del símbolo para hacerlo invisible.

enter image description here

Ocultar otras características de la capa de cobertura

La regla para mostrar sólo la característica actual del atlas puede ser la siguiente:

$id  =  @atlas_featureid 

enter image description here

Nota: : Creo que la variable @atlas_featureid es una sintaxis de la 2.12. Creo que en 2.8.x tendrías que usar una función llamada $atlas_featureid.

Ocultar características fuera de la característica actual del atlas

La receta es la misma que antes, una regla más para ocultar características, otra para mostrarlas.

Para tu pregunta en particular, parece que tienes un atributo compartido llamado SCHNUM. En ese caso la regla puede ser:

"Layers_field" = attribute (@atlas_feature, 'coverage_layer_field_name')

en su caso particular:

"SCHNUM"  =  attribute( @atlas_feature , 'SCHNUM')

Observe la diferencia entre ambos SCHNUM. El primero, entre comillas dobles, representa el valor de cada característica de la capa actual del campo que almacena el código de la escuela. El segundo, entre comillas simples, es una cadena con el nombre de la capa de cobertura que almacena el código de la escuela.

Nota : De nuevo creo que la variable @atlas_feature es algo "nuevo", y en 2.8.x tendrás que usar la función $atlas_feature

enter image description here

2voto

Removed_account Puntos 721

A partir de QGIS 3.16 Hannover, hay un botón que permite ver la geometría actual del atlas:

https://changelog.qgis.org/en/qgis/version/3.16/#add-automatic-clipping-settings-for-atlas-maps

enter image description here

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