banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#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: 3929

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

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1228
Site web

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

 

#4 Tue 08 March 2016 14:18

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1228
Site web

Re: QGIS : Erreur case when then else

Battu au sprint ;-)


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

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1228
Site web

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: 3929

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 wink

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

 

Pied de page des forums

Powered by FluxBB