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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres des Utilisateurs Francophones de QGIS 2019 à Montpellier

12 et 13 décembre 2019 à Montpellier.

Cet événement est organisé en partenariat entre Montpellier SupAgro et l’OSGeo-fr.

http://conf.qgis.osgeo.fr/

 

#1 Wed 13 November 2019 15:27

Juju25
Membre
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
Membre
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 2425

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
Membre
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
Membre
Date d'inscription: 16 Sep 2013
Messages: 25

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
Membre
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
Membre
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
Membre
Date d'inscription: 16 Sep 2013
Messages: 25

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
Membre
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 2425

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
Membre
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
Membre
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 2425

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
Membre
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
Membre
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
Membre
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 2425

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
Membre
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

 

Pied de page des forums

Powered by FluxBB

Partagez  |