#1 Wed 15 December 2021 13:18
- neskuik01
- Participant assidu
- Date d'inscription: 16 Feb 2015
- Messages: 199
QGIS: regles & logique
Bonjour,
Les vacances arrivant à grand pas, je crois que mon cerveau a décidé de prendre de l'avance ^^. Je bloque sur une discrétisation toute bête des données.
j'ai pour chaque années de 2012 à 2020 une colonne avec pour valeur des entiers qui décrive la présence d'un impact. lorsque la valeur est égale à 0 il y'a absence de phénomène.
Je dois cartographier la ou il y'a un impact sur 2 ans, 3 ans, 4, 5, 6,7 8ans je vois comment faire en testant toutes les combinaisons possibles:
impact2012!=0 and impact2013!=0 and impact2014+impact...+... =0
OR..
Mais je suis persuadé qu'il y a une méthode plus optimale non ?
EDIT: mon cerveau est revenu, je vais mettre toute les valeurs dans une liste et compter les valeurs différentes de 0.
Dernière modification par neskuik01 (Wed 15 December 2021 13:48)
Hors ligne
#2 Wed 15 December 2021 13:53
- shirosaki
- Participant actif
- Lieu: Lyon
- Date d'inscription: 30 Mar 2018
- Messages: 125
Re: QGIS: regles & logique
Bonjour,
Vous pouvez utilisez une formule de ce genre :
with_variable( -- Déclaration d'une variable locale
'arr', -- Nom de la variable
array( "impact2020" , "impact2019" , "impact2018" ), -- définition de la variable
case when array_sum(@arr) > 0 then 1
else 0 end
-- condition
)
Il vous suffit d'alimenter la variable 'arr' avec les champs souhaitez et de mettre la condition que vous voulez
ps : si vous utilisez Qgis > 3.18 pas de problème
sinon il faut installer l'extension "array plus" qui rajouter la formule "array_sum"
pps : je viens de voir votre édition de message, plus de soucis donc
Dernière modification par shirosaki (Wed 15 December 2021 13:56)
Paul QUESNOT
Hors ligne
#3 Wed 15 December 2021 15:22
- neskuik01
- Participant assidu
- Date d'inscription: 16 Feb 2015
- Messages: 199
Re: QGIS: regles & logique
Bonjour,
Vous pouvez utilisez une formule de ce genre :with_variable( -- Déclaration d'une variable locale
'arr', -- Nom de la variable
array( "impact2020" , "impact2019" , "impact2018" ), -- définition de la variable
case when array_sum(@arr) > 0 then 1
else 0 end
-- condition
)
Il vous suffit d'alimenter la variable 'arr' avec les champs souhaitez et de mettre la condition que vous voulez
ps : si vous utilisez Qgis > 3.18 pas de problème
sinon il faut installer l'extension "array plus" qui rajouter la formule "array_sum"
pps : je viens de voir votre édition de message, plus de soucis donc
Merci
Hors ligne