Suite

Limiter les valeurs de liste en fonction du champ précédent dans QGIS Forms ?

Limiter les valeurs de liste en fonction du champ précédent dans QGIS Forms ?


Vous recherchez de l'aide pour configurer la configuration appropriée afin de permettre le filtrage des valeurs des listes déroulantes en fonction d'une valeur précédente.

Fondamentalement, j'ai une structure de catégorisation à 3 niveaux pour l'une de nos couches SIG - Classe > Type > Sous-type.

Une fois que la classe a été sélectionnée, je souhaite que la liste des types soit filtrée uniquement sur les valeurs pertinentes pour cette classe et ainsi de suite pour le sous-type.

J'ai transformé cela en tables attributaires de liste de valeurs de code et chargé inot QGIS en tant que tables attributaires -

J'ai utilisé ces tables comme listes de relations de valeur dans les propriétés du widget

Les listes déroulantes fonctionnent très bien sans filtre. Mais dès que j'essaie d'ajouter un filtre avec une expression, il n'y a rien dans ma liste déroulante… Si je tape simplement "CLASS_ID" = 1… Je limite la liste à ceux de Class = 1. L'expression seule ( l'attribut($currentfeature, 'LU_CLASS') remplit correctement les valeurs entières si je l'utilise pour remplir un champ virtuel dans le générateur d'expression…

Quelqu'un peut-il expliquer pourquoi cela ne fonctionne pas dans le filtre des widgets ?

J'ai aussi (brièvement) essayé de mettre en place une relation dans les propriétés du projet… mais j'ai l'impression de m'y prendre dans le mauvais sens… les enregistrements ne sont pas un enfant ou liés à cette autre table - je veux simplement les utiliser pour remplir des listes déroulantes.

Est-ce que je manque juste une étape simple?


$currentfeature fait référence à la couche associée (Type_Values ​​dans votre exemple) de sorte que l'expression renvoie toujours false et toutes les valeurs sont filtrées.

Voir : https://lists.osgeo.org/pipermail/qgis-developer/2015-November/040382.html


Je viens de publier un plugin qui permet l'exploration et d'autres filtrages complexes de valeurs dans un formulaire, regardez :

http://www.itopen.it/a-new-qgis-plugin-allows-dynamic-filtering-of-values-in-forms/


J'avais besoin de quelque chose de similaire et dans mon cas, je l'ai fait fonctionner en changeant votre expression :

"CLASS_ID" = attribut( $currentfeature, 'LU_CLASS')

pour

"CLASS_ID" = current_value('LU_CLASS')

Brève explication:

Comme @elpaso66 remarqué $fonctionnalitéactuelle fait référence à la couche associée (Type_Values ​​dans l'exemple ci-dessus) et nous avons besoin d'une référence à l'élément en cours d'édition à ce moment-là, nous avons donc valeur_courante('champ') fonction qui nous permet de sélectionner la valeur d'un champ dans l'élément que nous éditons.

De cette façon, nous pouvons filtrer la clé de la couche associée (Type_Values ​​dans l'exemple ci-dessus) avec la valeur du fichier que nous voulons utiliser comme filtre (LU_CLASS dans l'exemple ci-dessus)


Voir la vidéo: Qgis Tutorial 75: Corriger les problèmes de géométrie