#1 Wed 13 November 2019 15:27
- Juju25
- Juste Inscrit !
- Date d'inscription: 17 Mar 2016
- Messages: 9
QGIS: Jointure
Bonjour,
Je voudrais représenter, sous forme de symboles proportionnels, la densité d'un type d'objet en fonction d'un carroyage. J'ai pensé faire une jointure spatiale entre ma table attributaire de type point avec mon carroyage. Sauf que tous mes points ne sont pas forcément localisés avec des coordonnées X, Y. Je m'explique :
Voici un extrait de la table attributaire de la couche point :
_carre masse_objet coordonnee_X coordonnee_Y
P6 10,5 NULL NULL
P6 111,6 NULL NULL
P6 0,5 ... ....
Q6 104,0
Q6 107
Q6 2310
Q6 2310
...
Voici un extrait de la table attributaire du carroyage :
ID _carre
... P6
Q6
En fait, je voudrais un champs, dans ma couche polygone (mon carroyage), où il a été calculé automatiquement la masse_objet totale par carré. En langage informel : combien il y a g d'objet dans le carré P6 par exemple ?, quantité que je pourrais représenté sous la forme de couleurs ou symboles proportionnels. Et cela pour tous les carrés (il n'y a pas que deux mailles).
J'espère avoir été assez claire.
En espérant trouver réponses ... Merci d'avance
Hors ligne
#2 Wed 13 November 2019 16:02
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3947
Re: QGIS: Jointure
Bonjour,
A priori, et si j'ai bien compris, pas besoin de jointure spatiale. Vous disposez déjà d'un lien entre les deux données: le champ "_carre". Il vous faut:
- créer une relation entre les deux jeux, sur les champs "_carre". La couche parent est la couche de carroyage. chaque carreau sera lié aux points de même carré.
- ensuite créer un champ dans lequel agréger les données provenant de la couche enfant: la fonction relation_aggregate pourra vous aider.
Hors ligne
#3 Thu 14 November 2019 10:22
- Juju25
- Juste Inscrit !
- Date d'inscription: 17 Mar 2016
- Messages: 9
Re: QGIS: Jointure
Merci beaucoup pour votre aide.
J'ai bien réussi à faire la relation mais je n'arrive pas à agréger les données provenant de la couche enfant. Dans la calculatrice je ne vois pas les champs issus de la table de points...
Merci d'avance !
Hors ligne
#4 Thu 14 November 2019 11:02
- Thom25
- Participant occasionnel
- Date d'inscription: 16 Sep 2013
- Messages: 31
Re: QGIS: Jointure
La jointure à bien fonctionné en ouvrant la table attributaire de la couche parent ? Si c'est le cas tenté d'enregistrer / exporter la couche parent, normalement les champs qui étaient joins devraient être désormais inscrit en dur dans la couche enregistrée / exportée.
Hors ligne
#5 Thu 14 November 2019 11:26
- Juju25
- Juste Inscrit !
- Date d'inscription: 17 Mar 2016
- Messages: 9
Re: QGIS: Jointure
En fait, j'ai compris l'intérêt de la fonction relation_aggregate mais cela ne marche pas ... J'obtiens NULL à chaque fois. Est-ce vous voyez le problème ?
Hors ligne
#6 Thu 14 November 2019 11:33
- Juju25
- Juste Inscrit !
- Date d'inscription: 17 Mar 2016
- Messages: 9
Re: QGIS: Jointure
Thom25 Je ne fais pas vraiment une jointure mais plutôt une relation. Je vois très bien la table associée quand j'utilise l'outils d'identification mais ce lien n’apparaît pas dans la table attributaire de ma couche parent (qui est mon carroyage en l’occurrence).
Hors ligne
#7 Thu 14 November 2019 11:38
- Thom25
- Participant occasionnel
- Date d'inscription: 16 Sep 2013
- Messages: 31
Re: QGIS: Jointure
Oups pardon j'ai lu en diagonale !
Dernière modification par Thom25 (Thu 14 November 2019 14:03)
Hors ligne
#8 Thu 14 November 2019 11:55
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3947
Re: QGIS: Jointure
Bonjour,
Non, vous ne verrez pas les champs de la table enfant dans la calculatrice de champs de la table parent; ce serait pratique en effet. Il va vous falloir les noter et ajouter manuellement.
En fait, j'ai compris l'intérêt de la fonction relation_aggregate mais cela ne marche pas ... J'obtiens NULL à chaque fois. Est-ce vous voyez le problème ?
Possibilité de voir la formule utilisée?
Hors ligne
#9 Thu 14 November 2019 12:06
- Juju25
- Juste Inscrit !
- Date d'inscription: 17 Mar 2016
- Messages: 9
Re: QGIS: Jointure
relation_aggregate('bdd_carroyage', 'sum', 'metal_mass')
bdd_carroyage étant ma relation et metal_mass mon champ sur lequel j'aimerai qu'il fasse la somme. Je ne sais pas si cela à un rapport (je pense que oui) mais mon champs métal_mass est de type String. Comment le modifier (si cela à un rapport avec l'erreur) ?
Merci beaucoup !
Hors ligne
#10 Thu 14 November 2019 12:22
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3947
Re: QGIS: Jointure
relation_aggregate('bdd_carroyage', 'sum', 'metal_mass')
selon la doc, le paramètre représentant l'expression est entre double guillemets, soit
Code:
relation_aggregate('bdd_carroyage', 'sum', "metal_mass")
et pour la conversion, vous avez des fonctions dans le groupe "Conversion", soit to_real("metal_mass") ou to_int("metal_mass") selon la donnée.
Dernière modification par SANTANNA (Thu 14 November 2019 12:23)
Hors ligne
#11 Thu 14 November 2019 13:28
- Juju25
- Juste Inscrit !
- Date d'inscription: 17 Mar 2016
- Messages: 9
Re: QGIS: Jointure
Super, tout fonctionne.
Effectivement, la conversion est importante, cela ne marche pas sur un champs de type text.
Merci encore Santanna !
A bientôt
Hors ligne
#12 Thu 14 November 2019 15:10
- Juju25
- Juste Inscrit !
- Date d'inscription: 17 Mar 2016
- Messages: 9
Re: QGIS: Jointure
J'en profites pour poser une autre question :
Je voudrais faire la somme de plusieurs champs de ma couche enfant toujours en utilisant la fonction relation_aggregate. Je n'arrive pas à trouver la formule adéquate. Est-ce que c'est possible de m'orienter ?
Merci beaucoup !
Hors ligne
#13 Thu 14 November 2019 16:25
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3947
Re: QGIS: Jointure
Peut-être
Code:
relation_aggregate('bdd_carroyage', 'sum', "monchamp1" + "monchamp2")
Si ça marche pas, faire la somme dans la couche enfant puis utiliser le champ résultat. Attention si un champ est null, la fonction + renvoie null et si c'est le cas il faudra alors peut-être penser à appliquer la fonction coalesce au(x) champ(s)
Dernière modification par SANTANNA (Fri 15 November 2019 12:04)
Hors ligne
#14 Fri 15 November 2019 10:30
- Juju25
- Juste Inscrit !
- Date d'inscription: 17 Mar 2016
- Messages: 9
Re: QGIS: Jointure
Merci pour ces fonctions qui me seront bien utiles.
Tout fonctionne parfaitement !
Hors ligne