Message posté par : ccam86
----------------------------------------
Description du problème :
Bonjour à tous,
Je rencontre un problème dans QGIS avec la gestion des valeurs dans les listes déroulantes
liées à une table externe.
Contexte (voir données exemple de la liste déroulantes) :
J'ai une couche avec un champ CS_VEGAQUA qui représente le pourcentage de recouvrement
de végétation aquatique.
Ce champ est lié à une table externe LD_canal, où chaque libellé (ex: '0 à 20 %',
'20 à 40 %', etc.) a une note numérique associée (ldcan_note).
Plusieurs libellés différents partagent la même note numérique. Par exemple, '0 à 20
%' et '80 à 100 %' ont tous deux la note 2.
Problème :
Quand je sélectionne une valeur dans la liste déroulante pour CS_VEGAQUA, QGIS semble
mélanger les libellés ayant la même note numérique.
Si je choisis "80 à 100%" = note de '2' → QGIS enregistre "0 à
20%" = note de '2'.
Si je choisis "Absent" (note = 0) → QGIS m’affiche "absence"
ailleurs.
Je souhaite conserver le libellé que j'ai choisi, sans qu'il soit remplacé par un
autre libellé ayant la même note.
⚠️ Car le problème, c’est que je dois absolument stocker **les notes numériques** (champs
en `Integer64`) pour mes calculs du type :
```
"CS_VEGRIPI" + "CS_ENVACAN" + "CS_VEGAQUA"
```
Donc je ne peux pas mettre `ldcan_id` comme clé, sinon je perds mes calculs.
Ce que j'ai essayé :
- J'ai configuré le champ CS_VEGAQUA avec un widget de type "Valeur
relationnelle" pour afficher les libellés textuels tout en stockant les notes
numériques. (En gros, une concaténation des éléments de ma table déroulante depuis mon
excel joint)
- J'ai utilisé un filtre pour n'afficher que les valeurs de la classe
'recouvrementvegaquatique'. --> "ldcan_classe" =
'recouvrementvegaquatique'
- J'ai défini des valeurs par défaut et des contraintes pour les champs CS_VEGAUTO et
CS_VEGENVA en fonction de CS_VEGAQUA.
exemple de contrainte : (Végétation aquatique autochtone) CS_VEGAUTO -->
"CS_VEGAQUA" != 0 (absent) OR "CS_VEGAUTO" = 0 (absent)
exemple de valeur par défaut :
CASE
WHEN "CS_VEGAQUA" = 'absence' THEN 3 -- 'absence' dans
presenceabsence
ELSE "CS_VEGENVA" -- Garde la valeur existante
END
Question :
Comment puis-je configurer QGIS pour qu'il conserve le libellé que j'ai
sélectionné dans la liste déroulante, sans le remplacer par un autre libellé ayant la même
note numérique ?
Est-ce que je dois modifier la structure de ma table LD_canal ou y a-t-il une solution
dans QGIS pour gérer ce problème ? (version Qgis :3.40 LTR et essaie avec 3.44.2)
Informations supplémentaires :
Mon champ CS_VEGAQUA est de type entier (Integer64) en 11 caractères et stocke les notes
numériques (ldcan_note).
Les libellés et les notes sont définis dans la table LD_canal.
Merci d'avance pour votre aide !
Voici les données exemple de la liste déroulantes en pièce jointe --> LD_canal ou sinon
via ce tableau code :
-----------------
Code :
+------------+------------------------+-----------+---------------------------+
| ldcan_id | ldcan_intitule | ldcan_note| ldcan_classe |
+------------+------------------------+-----------+---------------------------+
| 154 | absence | 3 | presenceabsence |
| 155 | présence | 0 | presenceabsence |
+------------+------------------------+-----------+---------------------------+
| 126 | absence | 0 | recouvrementvegaquatique |
| 127 | 0 à 20% | 2 | recouvrementvegaquatique |
| 128 | 20 à 40% | 4 | recouvrementvegaquatique |
| 129 | 40 à 60% | 5 | recouvrementvegaquatique |
| 130 | 60 à 80% | 4 | recouvrementvegaquatique |
| 131 | 80 à 100% | 2 | recouvrementvegaquatique |
+------------+------------------------+-----------+---------------------------+
| 150 | absence | 0 | vegetationautochtone |
| 151 | 1 espèce | 1 | vegetationautochtone |
| 152 | 2 et 3 espèces | 3 | vegetationautochtone |
| 153 | 4 espèces et plus | 5 | vegetationautochtone |
+------------+------------------------+-----------+---------------------------+
-----------------
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=374354#p374354
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net