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 Wed 28 June 2017 11:25

MIROSLAW Christophe
Participant occasionnel
Lieu: Lieusaint
Date d'inscription: 5 Jul 2014
Messages: 37

QGIS: Multiples jointures attributaires

Bonjour,

En utilisant l'extension "Spreadsheet layers", je charge dans QGis différents onglets (A, B, C) d'un fichier Excel (qui ont tous globalement la même structure avec au minimum les noms des colonnes identiques) me permettant de spécifier le type de données présentes dans les colonnes.

Je dispose ensuite d'une couche "test" contenant un colonne NUMERO dont tous les 'numéros' sont tous remplis et uniques.
Les couches créés A, B et C possèdent chacune aussi une colonne NUM qui contient juste une fraction de l'ensemble des 'numéros' de la colonne NUMERO de la couche "test".
Pour être le plus clair possible, une partie des 'numéros' de "test" sont présents dans A, une partie dans B, une autre partie dans C, et une dernière vers rien (car pas de données à rattacher) sachant qu'il n'y a pas de doublon de 'numéros' entre les couches A, B et C.

Je réalise ensuite une 1ère jointure attributaire entre le fichier A et ma couche "test" suivant l’identifiant commun 'numéros'; je personnalise ma jointure en ne chargeant que la colonne RESULTAT et en supprimant le préfixe.

Je réalise ensuite mes 2 autres jointures attributaires avec les fichiers B et C et ma couche "test" suivant l’identifiant commun 'numéros'; je personnalise ma jointure en ne chargeant toujours que la colonne RESULTAT et en supprimant toujours le préfixe.

Ma couche "test" est donc complétée d'une seule nouvelle colonne RESULTAT toutefois seules les données de la première jointure sont visibles.

Plusieurs essais (couches virtuelles ou pas dans la jointure) ne changent pas le résultat.
Par contre, si l'on supprime la 1ère jointure, ce sont les données de la 2ème qui apparaissent (car elle devient la 1ère dans la liste).
Les 3 jointures sont fonctionnelles individuellement mais le fait de renvoyer l'ensemble des données dans une colonne unique semble masquer / écraser les données d'une jointure par rapport aux 2 autres.

Pour illustrer, sous Excel, je sais réaliser une "recherche de valeur" combinée avec une fonction "si" qui analyse chaque onglet à la recherche du numéro unique présent dans un fichier de synthèse (et renvoyant les données cherchées dans une colonne unique "compilée"). Toutefois cela nécessite de centraliser au départ les valeurs uniques des numéros présents dans les onglets dans le fichier de synthèse (un peu long si beaucoup de numéros et peu évolutif si ajout de numéros dans les onglets).

Actuellement je suis donc obligé d'utiliser un préfixe pour chaque jointure, créant de fait "x" colonnes de résultats et m'obligeant à combiner des ensembles de règles au niveau des styles pour le rendu.

Si quelqu'un a déjà eu le problème ou une autre méthode ?

Merci à tous par avance

Hors ligne

 

#2 Wed 28 June 2017 11:47

Xavier Julian
Participant assidu
Lieu: Orange
Date d'inscription: 19 Jan 2015
Messages: 218

Re: QGIS: Multiples jointures attributaires

Bonjour,

Je pense qu'il faut réaliser votre jointure avec l'onglet A, puis enregistrer votre couche.
Ensuite y joindre l'onglet B, et réenregistrer votre couche.
Idem pour le C.

++

Hors ligne

 

#3 Wed 28 June 2017 11:51

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

Re: QGIS: Multiples jointures attributaires

Bonjour,

Ma couche "test" est donc complétée d'une seule nouvelle colonne RESULTAT toutefois seules les données de la première jointure sont visibles.


Enlever le préfixe ne modifie pas pour autant la source de la donnée (qui est l'onglet A). Et donc soit QGIS écrasera cette source soit il ignorera le second import (ce qui semble être le cas).

Actuellement je suis donc obligé d'utiliser un préfixe pour chaque jointure, créant de fait "x" colonnes de résultats et m'obligeant à combiner des ensembles de règles au niveau des styles pour le rendu.


Une autre alternative est de créer une nouvelle colonne (virtuelle ou pas?) par concaténation des trois champs importés (avec leur préfixe) avec le code ci-dessous pour garder juste la valeur renseignée (j'espère que le caractère volatile de ces champs ne posera pas problème) et faire la symbologie sur le nouveau champ (devrait être moins lourde)

Code:

coalesce("a_resultat", "b_resultat", "c_resultat")

EDIT:
Peut-être même ne pas créer cette nouvelle colonne mais utiliser la formule pour faire la symbologie pourrait marcher. A tester!

Dernière modification par SANTANNA (Wed 28 June 2017 11:53)

Hors ligne

 

#4 Wed 28 June 2017 13:41

MIROSLAW Christophe
Participant occasionnel
Lieu: Lieusaint
Date d'inscription: 5 Jul 2014
Messages: 37

Re: QGIS: Multiples jointures attributaires

Bonjour,

Merci à vous deux pour le retour rapide.

La solution de SANTANNA est celle qui me convient le mieux car elle me permet notamment de conserver le lien "pseudo-dynamique" de mise à jour des champs des différentes couches (faut encore fermer-rouvrir QGis après avoir fait des modif dans mes onglets Excel, mais c'est mineur - peut être espérer dans une version future une mise à jour via le bouton "actualiser").

J'ai conservé la solution de la colonne virtuelle qui me permet de recontrôler rapidement les données dans la table (on n'est jamais trop prudent) ; j'en ai profité pour masquer les colonnes de jointure (vi l'organisation des colonnes) qui du coup ne me servent plus.

Hors ligne

 

#5 Wed 28 June 2017 14:24

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

Re: QGIS: Multiples jointures attributaires

faut encore fermer-rouvrir QGis après avoir fait des modif dans mes onglets Excel, mais c'est mineur - peut être espérer dans une version future une mise à jour via le bouton "actualiser")


Le délimiteur csv de QGIS propose une option "suivre le fichier" qui, de mémoire, permet d'avoir une actualisation de la data si elle évolue. L'extension SpreadSheets ne possède pas cela? Auquel cas, voilà peut-être une demande de fonctionnalité à faire...

Hors ligne

 

Pied de page des forums

Powered by FluxBB