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é ?

Annonce

Printemps des cartes 2024

#1 Tue 05 March 2019 17:37

Renaud
Membre
Lieu: Ploemeur (56)
Date d'inscription: 9 Mar 2006
Messages: 2315

QGIS 3.4: Fonction 'attribute()' et symbologie

Bonjour,

QGIS a un comportement bizarre lorsque je cherche à faire une symbologie à partir d'un champ calculé contenant la fonction 'attribute'.
Le champ calculé contient plusieurs valeurs quand j'affiche la table.
Mais lorsque je fais la symbologie, il met tout mes objets dans la même classe.
Si je remplace la fonction 'attribute' par le nom d'un champ, la symbologie est correcte.

Pour illustrer :

Bien interprétée dans la table mais la symbologie basée sur le champ est fausse :

Code:

case when  "seuil1"  is not null and  attribute($currentfeature,"proba90")<= "seuil1"  then 1 else 2 end

Bien interprétée dans la table et la symbologie basée sur le champ est correcte :

Code:

case when  "seuil1"  is not null and  "proba90"<= "seuil1"  then 1 else 2 end

(Je cherche évidemment à faire varier le champ testé à partir du contenu d'une autre table)

Merci


Renaud Mouche

Hors ligne

 

#2 Wed 06 March 2019 11:04

dominique.lys
Participant assidu
Date d'inscription: 5 Oct 2006
Messages: 473
Site web

Re: QGIS 3.4: Fonction 'attribute()' et symbologie

Bonjour,

Dans la fonction attribute, le nom du champs doit être entre simple quote et non entre double quote.

Code:

case when "seuil1"  is not null and attribute($currentfeature, 'proba90')<= "seuil1"  then 1 else 2 end

Les doubles quotes permettent justement d’accéder à la valeur du champs pour l'entité courante, c'est un raccourci à la fonction attribute, donc admettons que porba90 vaut 50 pour la première entité, si vous laissez les doubles quotes c'est comme si vous écriviez attribute($currentfeature, 50), avec les simples quotes on passe une chaine de texte représentant le nom du champs.

Hors ligne

 

#3 Wed 06 March 2019 12:33

Renaud
Membre
Lieu: Ploemeur (56)
Date d'inscription: 9 Mar 2006
Messages: 2315

Re: QGIS 3.4: Fonction 'attribute()' et symbologie

Merci,

Au temps pour moi, je me suis trompé en recopiant le code pour GeoRezo.
La formule était correcte dans QGIS.

Ce qui me rend perplexe c'est que QGIS puisse renvoyer une symbologie différente pour une même valeur de champ, en fonction de la méthode utilisé pour calculer le dit-champ.

Dans la copie ci-dessous, on voit bien que la colonne 'clastolerant' contient plusieurs valeurs, mais que toutes les mailles ont le symbole du 6

https://imagizer.imageshack.com/img922/9329/6IamFr.jpg


Renaud Mouche

Hors ligne

 

#4 Wed 06 March 2019 13:40

dominique.lys
Participant assidu
Date d'inscription: 5 Oct 2006
Messages: 473
Site web

Re: QGIS 3.4: Fonction 'attribute()' et symbologie

ok je comprends mieux et j'arrive à reproduire le problème : j'ai fait deux champs virtuels avec des formules CASE WHEN similaires, l'une utilisant la fonction attribute l'autre non et affectivement dans la table les valeurs sont correctes alors qu'en faisant un symbologie par catégorie le champs utilisant la formule attribute ne fonctionne pas et l'autre fonctionne.

Je n'ai pas d'explication c'est clairement un bug, ce qui fonctionne par contre c'est de mettre la formule directement à la place du nom de champs dans les paramètres de symbologie par catégorie ou bien en découpant la formule dans des règles de symbologie.

Hors ligne

 

#5 Wed 06 March 2019 14:49

Renaud
Membre
Lieu: Ploemeur (56)
Date d'inscription: 9 Mar 2006
Messages: 2315

Re: QGIS 3.4: Fonction 'attribute()' et symbologie

OK, donc c'est bien un bug de QGIS, je vais le signaler.

Et effectivement, en mettant la fonction directement dans la symbologie ça fonctionne, à priori sans impact significatif sur les temps d'affichage (la fonction réelle est plus lourde que celle postée).

Merci Dominique


Renaud Mouche

Hors ligne

 

#6 Thu 07 March 2019 09:33

Renaud
Membre
Lieu: Ploemeur (56)
Date d'inscription: 9 Mar 2006
Messages: 2315

Re: QGIS 3.4: Fonction 'attribute()' et symbologie

L'affichage fonctionne correctement en affichage 2D, lorsqu'on met la formule dans la symbologie.
En revanche les objets apparaissent en noir dans ThreeJS sad

attribute() et get_feature() sont de super fonctions, mais il reste des choses à caler.

Impossible de sous-traiter le calcul des valeurs à Postgre sans donner de droit d'écriture.
Va falloir que je revois mes ambitions à la baisse.


Renaud Mouche

Hors ligne

 

Pied de page des forums

Powered by FluxBB