#1 Tue 08 March 2016 14:01
- Nana2
- Juste Inscrit !
- Date d'inscription: 8 Mar 2016
- Messages: 5
QGIS : Erreur case when then else
Bonjour,
Je n'arrive pas à trouver l'erreur dans mon expression ci-jointe, pourtant QGIS indique expression invalide ...
CASE WHEN "Catchment Area - OK@1" = 0 THEN '1*10000' ELSE "Catchment Area - OK@1"*10000 END
Si vous avez des idées... Par avance, merci !
Hors ligne
#2 Tue 08 March 2016 14:17
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3944
Re: QGIS : Erreur case when then else
Bonjour,
'1*10000' renvoie le texte 1*10000 (au format texte) et non le résultat 10000, à cause du guillemet simple utilisé. Or il me semble que vous attendez une valeur numérique. (d'ailleurs pourquoi ne pas juste écrire 10000 au lieu de faire un calcul?)
Si ce n'est pas le cas, quel est le format du champ "Catchment Area - OK@1" et quel format de résultat attendez-vous?
Hors ligne
#3 Tue 08 March 2016 14:17
Re: QGIS : Erreur case when then else
Bonjour et bienvenue.
Dans le CASE, les deux tests ne renvoient pas le même type de donnée :
'1*10000' est une chaîne de caractère
"Catchment Area - OK@1"*10000 est une valeur numérique
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#5 Tue 08 March 2016 15:00
- Nana2
- Juste Inscrit !
- Date d'inscription: 8 Mar 2016
- Messages: 5
Re: QGIS : Erreur case when then else
C'est vrai autant simplifier par 10000 ! Mais même en faisant cela, avec ou sans guillemets cela n'est toujours pas valide...
Catchmentarea est un champ numérique... Et j'attends bien un résultat numérique (en gros remplacer les 0 par 10000)
Merci de votre (début) d'aide !
Dernière modification par Nana2 (Tue 08 March 2016 15:02)
Hors ligne
#6 Tue 08 March 2016 15:23
- Lucien
- Participant actif
- Date d'inscription: 8 Mar 2016
- Messages: 104
Re: QGIS : Erreur case when then else
Bonjour,
Peux-tu traduire ce que tu veux concrètement faire en français ?
Je ne suis pas sur que le CASE WHEN ELSE soit bien approprié
Hors ligne
#7 Tue 08 March 2016 15:24
Re: QGIS : Erreur case when then else
oui "Catchment Area - OK@1" est une valeur numérique mais les guillemets simples autour de '1*10000' retournent le texte 1*10000
Un case ne peut pas renvoyer dans un cas une valeur numérique et dans l'autre une chaine de caractère
Ceci devrait fonctionner :
Code:
CASE WHEN "Catchment Area - OK@1" = 0 THEN 10000 ELSE "Catchment Area - OK@1"*10000 END
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#8 Tue 08 March 2016 15:26
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3944
Re: QGIS : Erreur case when then else
Catchmentarea est un champ numérique...
Est-ce pour faire court que vous appelez le champ comme cela ou est-ce son vrai nom (auquel cas, à quoi correspond ou que signifie le - OK@1 ?)?
Hors ligne
#9 Tue 08 March 2016 15:34
- Nana2
- Juste Inscrit !
- Date d'inscription: 8 Mar 2016
- Messages: 5
Re: QGIS : Erreur case when then else
Alors j'ai bien réessayé avec l'expression de MathieuB mais cela m'indique toujours une expression invalide.
En fait ce que je veux faire correspond à l'expression ArcGIS CON("Catchment Area - OK@1" == 0, 10000, "Catchment Area - OK@1"*10000), c'est-à-dire que toutes les valeurs 0 soient remplacées par 10000 et que les autres soient multipliées par 10000. Je ne sais pas trop comment adapter la fonction "con" de ArcGIS à QGIS c'est pour cela que jusqu'ici j'ai essayé avec CASE WHEN...
Ma couche s'appelle "Catchment Area - OK@1", c'était juste pour faire court, excusez-moi
Hors ligne
#10 Tue 08 March 2016 15:49
- Lucien
- Participant actif
- Date d'inscription: 8 Mar 2016
- Messages: 104
Re: QGIS : Erreur case when then else
Ta couche s'appelle Catchment Area - OK@1 ou ton champ ?
Hors ligne
#11 Tue 08 March 2016 16:00
- Nana2
- Juste Inscrit !
- Date d'inscription: 8 Mar 2016
- Messages: 5
Re: QGIS : Erreur case when then else
Oui, ma couche raster ...
Hors ligne
#12 Tue 08 March 2016 16:16
- Lucien
- Participant actif
- Date d'inscription: 8 Mar 2016
- Messages: 104
Re: QGIS : Erreur case when then else
D'accord c'est une couche raster, cela change tout.
Peut-être que cela fonctionne :
Code:
("Catchment Area - OK@1"= 0)*10000 + ("Catchment Area - OK@1"="Catchment Area - OK@1"*10000)
Dernière modification par Lucien (Tue 08 March 2016 16:17)
Hors ligne
#13 Tue 08 March 2016 16:37
- Nana2
- Juste Inscrit !
- Date d'inscription: 8 Mar 2016
- Messages: 5
Re: QGIS : Erreur case when then else
Non ...
P.S. : Donc l'expression CASE WHEN ne s'utilise pas avec une couche raster ?
Hors ligne
#14 Wed 09 March 2016 08:52
- Lucien
- Participant actif
- Date d'inscription: 8 Mar 2016
- Messages: 104
Re: QGIS : Erreur case when then else
Code:
("Catchment Area - OK@1"=0)*10000 + ("Catchment Area - OK@1" > 0)*("Catchment Area - OK@1"*10000)
Toujours pas? (Ce code fonctionne si tu n'as que des valeurs positives)
Dernière modification par Lucien (Wed 09 March 2016 08:53)
Hors ligne