Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Sat 20 November 2021 11:05

Kiecane
Participant actif
Date d'inscription: 31 Oct 2021
Messages: 91

QGIS: besoin aide jointure

Bonjour,

Je rencontre un léger problème avec ma table attributaire (cf image jointe). J'ai effectué une jointure de 2 tables (l'une contenant le champ y et l'autre les champs y_2 et AUTO : cf image jointe) pour que lorsque y est inférieur à la première valeur la plus grande de y_2 et supérieure à la seconde valeur la plus grande du champ y_2, alors le champ AUTO correspondant affiche 4. Ensuite, lorsque y est inférieur à la seconde valeur la plus grande de y_2 et supérieure à la troisième valeur la plus grande du champ y_2, alors le champ AUTO correspondant affiche 3. Et ainsi de suite. Le soucis, c'est que je ne sais pas comment coder le fait que je choisisse la première valeur la plus grande de y_2 puis la seconde ect. dans la calculatrice des champs. J'avais pensé à quelque chose comme ça :

CASE
IF "y"<(1ere valeur la plus grande de y_2) AND "y">(2ere valeur la plus grande de y_2)
THEN "AUTO"='4'
IF "y"<(2ere valeur la plus grande de y_2) AND "y">(3ere valeur la plus grande de y_2)
THEN "AUTO"='3'
ect.
END

Je me dis qu'il y a même peut-être moyen de faire une boucle mais je ne sais pas trop comment m'y prendre. Je sais qu'il serait possible de passer par du SQL mais je préfère utiliser la calculatrice des champs dans la mesure où je souhaite réaliser un modeleur graphique et c'est plus simple d'utiliser la calculatrice des champs dans ce cas (en tout cas pour moi)

Je vous remercie d'avance !


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Sun 21 November 2021 16:16

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3939

Re: QGIS: besoin aide jointure

Bonjour,
Je regarde la pièce jointe et ne sais pas trop quoi en déduire; y_2 est carrément vide donc à quoi correspondent les 2eme et 3eme plus grandes valeurs auxquelles vous faites référence ?
Si je comprends votre code, l'idée c'est de classer les valeurs de y_2, et comparer y à celles-ci. Selon le rang obtenu, on assigne la valeur AUTO qui décroît. Or la valeur AUTO part de 4 et vous avez plus que 4 entités. Que se passe-t-il si y_2(6)< y < y_2(5)?  Et comment gerez-vous l'égalité (soit entre y et y_2 ou si y_2 a plusieurs valeurs identiques), les valeurs nulles? Bref, il y a peut-être encore quelques points à ajuster dans le concept.

Toutefois, pour ce qui est du comment, (pas testé mais...) les fonctions array peuvent permettre de créer une liste des valeurs de y_2, y ajouter la valeur y en cours, trier et renvoyer l'index de la valeur y (donc son classement) dans cette liste triée.

Une autre option (peut-être plus facile), utiliser la fonction aggregate (count) pour compter le nombre de valeurs y_2 supérieures à y et déduire la position donc AUTO. Attention aux doublons y_2...

Hors ligne

 

Pied de page des forums

Powered by FluxBB