#1 Wed 28 September 2022 09:01
- Lferrad
- Juste Inscrit !
- Date d'inscription: 8 Oct 2018
- Messages: 3
QGIS: Requete sur plusieurs colonnes d'attribut
Bonjour,
J'ai un shp avec de très nombreuses entités (des lignes) et de très nombreux attributs de même nature (des valeurs d'altitude calculées en différents points sur la ligne). Je voudrais ajouter une colonne Max et Min qui me donne pour chaque entité la valeur min et max pour l'ensemble des valeurs prises pour les différents attributs. Je ne trouve pas comment formuler ma requête pour calculer une telle valeur sur plusieurs colonnes à la fois.
En clair : comment calculer un minimum non pas sur une colonne pour un attribut donné mais sur une ligne, c'est-à-dire pour une entité et différents attributs.
Merci d'avance, Louis
Hors ligne
#2 Wed 28 September 2022 10:19
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: QGIS: Requete sur plusieurs colonnes d'attribut
Avec la calculatrice de champ, vous pouvez faire ce genre calcul comme ceci, selon le nom de vous champs :
Code:
min("alt1","alt2","alt3", ... , "altN")
Les noms des champs sont écrits entre guillemets : "nomduchamp"
A vous d'adapter à votre contexte
Sylvain M.
Hors ligne
#3 Mon 03 October 2022 14:01
- Lferrad
- Juste Inscrit !
- Date d'inscription: 8 Oct 2018
- Messages: 3
Re: QGIS: Requete sur plusieurs colonnes d'attribut
Bonjour,
merci pour votre réponse. Et si j'ai un nombre de champs énorme et variable ? L'idée étant d'automatiser le traitement
Hors ligne
#4 Thu 06 October 2022 10:22
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3940
Re: QGIS: Requete sur plusieurs colonnes d'attribut
Bonjour,
Toujours avec la calculatrice des champs
Code:
with_variable( 'tousleschamps', -- on crée une variable attributes(), -- récupérant tous les champs de la couche with_variable('champs_cibles', -- et une autre variable (j'imagine qu'il y a des champs à ignorer) array_filter(map_akeys(@tousleschamps), @element not in ('NAME','USE')), -- contenant les champs qui nous intéressent (à vous d'adapter la liste) array_min( -- et pour chaque entité, on prend la valeur min de la liste array_foreach( @champs_cibles, attributes()[@element] -- générée à partir de la valeur de chacun des champs retenus ) ) ) )
Et comme je le dis souvent, même si j'ai commenté, je vous invite à lire l'aide associée à chacune des fonctions utilisée pour mieux comprendre ce qui s'y passe.
En ligne