Vai al contenuto

Creare moduli con filtro dinamico (anche multi-selezione)

Una delle novità introdotte nella QGIS 3.2 è la Form drill-down (a cascata) WIDGET Value Relation (Relazione valore) che permette di creare delle Form con filtro dinamico, in questo esercizio vedremo come realizzare una Form semplice e una multiselezione.

Form semplice selezione 1:1

  • espressione da usare:
"cod_prov" = current_value('provincia')

Form avanzato n:m

  • espressione da usare:
eval( ' "cod_prov" in' || replace(current_value('provincia'),array('{','}', '"'),array('(',')', '\'')))

Espressione di Pedro Venâncio con suggerimento di Alexandre Neto - Lista QGIS dev

Form avanzato con spatial join 1:m

  • espressione da scrivere in Espressione filtro nel primo campo della form:
aggregate( 
layer:='province_siciliane', 
aggregate:='concatenate', 
expression:= "DEN_PCM", 
filter:= intersects(@current_geometry, geometry(@parent) )
) 

o più semplicemente (e anche più performante)

intersects( @current_geometry ,$geometry)
  • Nel caso volessimo filtrare la feature più vicina (quindi non necessariamnete intersecante):
minimum(distance(@current_geometry ,$geometry)) = distance(@current_geometry ,$geometry)

  • espressione da scrivere in Espressione filtro nel secondo campo della form:
eval( ' "cod_prov" in' || replace(current_value('provincia'),array('{','}', '"'),array('(',')', '\'')))

Espressione di Pedro Venâncio con suggerimento di Alexandre Neto - Lista QGIS dev

funzione aggregate

Prova tu

Geopackage con dati e progetto Nel GeoPackage sono state memorizzate i tre stili usati per il form!!!

Riferimenti

Lista QGIS dev

Issue: https://github.com/qgis/QGIS/issues/33046


Funzioni e variabili utilizzate: