Pages: 1
- Sujet précédent - QGIS 2.2 : Formule Calculatrice de champ : si colonne 1 >0, alors... - Sujet suivant
#1 Tue 01 March 2016 11:48
- SamuelG
- Juste Inscrit !
- Date d'inscription: 6 Jan 2011
- Messages: 6
QGIS 2.2 : Formule Calculatrice de champ : si colonne 1 >0, alors...
Objet: Formule Calculatrice de champ : si colonne 1 >0, alors colonne 20 text
Bonjour,
QGIS 2.2.0 Valmeira
travaillant sur une couche de données avec vingt types de surface, le type est renseigné de sa dimension dans un champ propre que lorsque que le polygone relève de ce type de surface. Au final, ma table se présente avec 20 champs pour autant de types de surfaces, mais à chaque ligne, un seul champ est renseigné.
Je souhaiterais créer un 21e champ, pour dire : "si le champ n°1 est supérieur à 0, alors le champ n°21 est intitulé du nom du type de la surface du champ n°1"... mais si le champ n°1 est égal à 0, alors j'interroge le champ n°2... ainsi de suite sur les 20 champs. Cette formule me serait bien utile pour la reproduire sur plus de 20 000 lignes.
Je suis certains que la calculatrice de champs doit permettre ce genre de formule, ou quelque chose de plus astucieux. Quelqu'un aurait-il une idée ?
Merci d'avance pour vos conseils
Samuel
Hors ligne
#2 Tue 01 March 2016 12:39
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3944
Re: QGIS 2.2 : Formule Calculatrice de champ : si colonne 1 >0, alors...
Bonjour,
En mode bourrin, des "case when" devrait, je pense, faire l'affaire
Code:
CASE WHEN "champ1" >0 THEN 'nomduchamp1' WHEN "champ2" >0 THEN 'nomduchamp2' ... ... END
En plus astucieux, écrire une fonction Python qui parcourt la ligne (mais pas dispo en 2.2 je crois à part avec le plugin scriptrunner).
Par contre, je vois que tu es sous Valmiera; ça fait un moment que c'est sorti, on en est à la 2.14 soit 6 versions de différence. S'il n'y a rien qui t'en empêche, je te conseillerais de passer à un eplus récente, qui te garantit l'accès aux nouvelles fonctions mais aussi à l'aide de la communauté (on est nombreux à ne plus utiliser cette version et ne plus savoir ce qu'elle fait ou pas)
Dernière modification par SANTANNA (Tue 01 March 2016 14:42)
Hors ligne
#3 Tue 01 March 2016 12:45
- Theos2000
- Participant assidu
- Date d'inscription: 15 Jun 2015
- Messages: 221
Re: QGIS 2.2 : Formule Calculatrice de champ : si colonne 1 >0, alors...
Bonjour,
Dans la foulée il me semble que le sujet a été traité ici aussi !
http://georezo.net/forum/viewtopic.php?id=95213
Hors ligne
#4 Tue 01 March 2016 13:54
- SamuelG
- Juste Inscrit !
- Date d'inscription: 6 Jan 2011
- Messages: 6
Re: QGIS 2.2 : Formule Calculatrice de champ : si colonne 1 >0, alors...
Merci pour ces deux retours
J'ai testé la formule 'CASE WHEN THEN END"... elle fonctionne sur le principe, mais une seule valeur s'affiche par défaut - celle affectée au champ 1.
Petite précision, mes données en champs 1 à 20 sont des valeurs (propriétés du champ : type "double", nom "real"). J'ai donc testé (sans résultat) :
- CASE WHEN "champ1" > 0 THEN "champ1"
- CASE WHEN "champ1" > 0.1 THEN "champ1"
Solution de repli, je vais traiter champ après champ pour leur affecter une valeur texte au lieu d'une quantité (si > 0 = texte, sinon 'null'). Je vais concaténer ensuite les 20 colonnes dans une 21e, avec normalement un seul texte qui apparaîtra... normalement
Hors ligne
#5 Tue 01 March 2016 14:25
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3944
Re: QGIS 2.2 : Formule Calculatrice de champ : si colonne 1 >0, alors...
Quand il n'y a pas de valeur saisie dans le champ 1, qu'est-ce qui y est renseigné?
Hors ligne
#6 Tue 01 March 2016 14:32
- SamuelG
- Juste Inscrit !
- Date d'inscription: 6 Jan 2011
- Messages: 6
Re: QGIS 2.2 : Formule Calculatrice de champ : si colonne 1 >0, alors...
Les champs 0 à 20 semblent être un calcul automatique de surface. Donc la 'non-valeur' correspond à 0.00000
Hors ligne
#7 Tue 01 March 2016 14:41
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3944
Re: QGIS 2.2 : Formule Calculatrice de champ : si colonne 1 >0, alors...
Donc il n'y a pas de champ nulle. La valeur renseignée si non concernée par le type de surface, est 0.0000. Et avec "champ">0.1 ça ne marche pas?
PS: en relisant tes messages, je comprends que ce n'est pas la valeur du champ 1 que tu veux récupérer mais le nom du champ. Ma formule n'est pas bonne. Je la réadapte avec cette info (pour les futurs lecteurs).
Hors ligne
#8 Tue 01 March 2016 14:51
- SamuelG
- Juste Inscrit !
- Date d'inscription: 6 Jan 2011
- Messages: 6
Re: QGIS 2.2 : Formule Calculatrice de champ : si colonne 1 >0, alors...
J'ai testé avec 0.1 (message de 13h54)... mais ça ne marche pas
Pour être précis, je veux affecter dans le 21e champ une valeur au format texte à condition que ce champ 1 a une surface supérieure à 0.00000. Si ce champ 1 est égal à 0.00000 alors j'interroge le champ 2, ... et ainsi de suite sur 20 champs. L'objectif est de trouver dans le 21e champ une valeur texte.
Les intitulés de colonne sur les champs de 0 à 20 s'intitulent "surf_1" à "surf_20", alors que je veux leur donner des noms plus explicites sur le type de surface. J'espère profiter de cette séquence pour réduire de 20 intitulés à 3.
Hors ligne
#9 Tue 01 March 2016 16:25
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3944
Re: QGIS 2.2 : Formule Calculatrice de champ : si colonne 1 >0, alors...
J'ai testé avec 0.1 (message de 13h54)... mais ça ne marche pas
Oui, j'avais bien lu... je m'étonnais que cela ne fonctionne pas. Peut-on avoir la copie conforme et complète de l'expression saisie?
Hors ligne
#10 Tue 01 March 2016 16:45
- SamuelG
- Juste Inscrit !
- Date d'inscription: 6 Jan 2011
- Messages: 6
Re: QGIS 2.2 : Formule Calculatrice de champ : si colonne 1 >0, alors...
CASE
WHEN "surf_1" > 0.000000000000000
THEN 'Grandes cultures'
WHEN "surf_2" > 0.000000000000000
THEN 'Grandes cultures'
WHEN "surf_3" > 0.000000000000000
THEN 'Grandes cultures'
WHEN "surf_4" > 0.000000000000000
THEN 'Grandes cultures'
WHEN "surf_5" > 0.000000000000000
THEN 'Grandes cultures'
WHEN "surf_6" > 0.000000000000000
THEN 'Grandes cultures'
WHEN "surf_7" > 0.000000000000000
THEN 'Grandes cultures'
WHEN "surf_8" > 0.000000000000000
THEN 'Grandes cultures'
WHEN "surf_9" > 0.000000000000000
THEN 'Grandes cultures'
WHEN "surf_10" > 0.000000000000000
THEN 'Grandes cultures'
WHEN "surf_11" > 0.000000000000000
THEN 'Aucune culture'
WHEN "surf_12" > 0.000000000000000
THEN 'Aucune culture'
WHEN "surf_13" > 0.000000000000000
THEN 'Aucune culture'
WHEN "surf_14" > 0.000000000000000
THEN 'Grandes cultures'
WHEN "surf_15" > 0.000000000000000
THEN 'Grandes cultures'
WHEN "surf_16" > 0.000000000000000
THEN 'Grandes cultures'
WHEN "surf_17" > 0.000000000000000
THEN 'Grandes cultures'
WHEN "surf_18" > 0.000000000000000
THEN 'Prairies'
WHEN "surf_19" > 0.000000000000000
THEN 'Prairies'
WHEN "surf_20" > 0.000000000000000
THEN 'Autres cultures'
WHEN "surf_21" > 0.000000000000000
THEN 'Autres cultures'
WHEN "surf_22" > 0.000000000000000
THEN 'Autres cultures'
WHEN "surf_23" > 0.000000000000000
THEN 'Autres cultures'
WHEN "surf_24" > 0.000000000000000
THEN 'Autres cultures'
WHEN "surf_25" > 0.000000000000000
THEN 'Autres cultures'
WHEN "surf_26" > 0.000000000000000
THEN 'Autres cultures'
WHEN "surf_27" > 0.000000000000000
THEN 'Autres cultures'
WHEN "surf_28" > 0.000000000000000
THEN 'Autres cultures'
END
Hors ligne
#11 Wed 02 March 2016 15:48
- SamuelG
- Juste Inscrit !
- Date d'inscription: 6 Jan 2011
- Messages: 6
Re: QGIS 2.2 : Formule Calculatrice de champ : si colonne 1 >0, alors...
Pour info : j'ai trouvé ma solution en sortant de de qGIS. Retour à Excel et à son mode de traitement des formules plus explicite pour moi, puis intégration de la nouvelle table dans ma couche initiale avec une jointure. Le dé-tour est joué :-)
Merci tout de même pour l'aide. Samuel
Hors ligne
Pages: 1
- Sujet précédent - QGIS 2.2 : Formule Calculatrice de champ : si colonne 1 >0, alors... - Sujet suivant