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

Printemps des cartes 2024

#1 Mon 20 January 2020 15:10

HappyCX
Juste Inscrit !
Date d'inscription: 20 Jan 2020
Messages: 5

QGIS: MAJ colonne par jointure spatiale

Bonjour,

Je gère les espaces verts d'une commune. J'ai donc une couche des jardins (polygones)et une couche des quartiers (polygones). J'aimerais mettre à jour la colonne quartier de ma couche jardin en passant par une analyse spatiale : chaque objet de la couche jardin prend le nom du quartier dans lequel il se situe.

Avec MapInfo c'était facile mais je ne trouve pas sur QGIS.

Quelqu'un aurait-il une solution à m'apporter?

Merci d'avance, Thomas


Windows 10 / QGIS 3.14.16

Hors ligne

 

#2 Mon 20 January 2020 15:36

chanteclair
Participant assidu
Lieu: Pau
Date d'inscription: 3 Jan 2007
Messages: 717

Re: QGIS: MAJ colonne par jointure spatiale

Bonjour,
Menu Vecteur/Outils de gestion de données/Joindre les attributs par localisation devrait répondre à votre question.
Cordialement.

Hors ligne

 

#3 Mon 20 January 2020 15:47

HappyCX
Juste Inscrit !
Date d'inscription: 20 Jan 2020
Messages: 5

Re: QGIS: MAJ colonne par jointure spatiale

Bonjour,

J'ai essayé mais cela ne met pas à jour ma colonne. Cela crée une copie de ma couche en y ajoutant la colonne de la couche de référence... Admettons, mais comment après, mettre à jour ma colonne. Je reviens au point de départ si ce n'est que la jointure se fera sur des champs et non plus sur des objets. Cela ne m'avance pas vraiment.

Merci quand même d'avoir essayé.

Thomas.


Windows 10 / QGIS 3.14.16

Hors ligne

 

#4 Mon 20 January 2020 15:57

chanteclair
Participant assidu
Lieu: Pau
Date d'inscription: 3 Jan 2007
Messages: 717

Re: QGIS: MAJ colonne par jointure spatiale

Vous travaillez avec des shapes ou sur une base type PostgreSQL ?

Hors ligne

 

#5 Mon 20 January 2020 16:26

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 722

Re: QGIS: MAJ colonne par jointure spatiale

Bonjour,

formule de mise à jour du champs quartier de la couche jardin
en supposant que votre couche s'appelle quartier et que le nom de champs s'appelle "nom_quartier"

pensez à bien choisir texte comme type de donnée.

Fonctionne uniquement sous qgis 3 :



Code:

aggregate('quartier','concatenate_unique', "nom_quartier", filter:=intersects(geometry(@parent), $geometry))

Hors ligne

 

#6 Tue 21 January 2020 10:25

HappyCX
Juste Inscrit !
Date d'inscription: 20 Jan 2020
Messages: 5

Re: QGIS: MAJ colonne par jointure spatiale

Bonjour,
Merci pour vos réponses.

Pour Chanteclair -> je travaille avec des shapefiles.

Pour JD -> pour vérifié que j'ai compris, je réécris votre formule comme suit :

aggregate('nom_couche_source','concatenate_unique', "nom_champs_source", filter:=intersects(geometry(@parent), $geometry))

Si c'est cela, ou désigne-t-on la couche cible et le champs à mettre à jour?

Veuillez excuser mon inexpérience.


Windows 10 / QGIS 3.14.16

Hors ligne

 

#7 Tue 21 January 2020 12:02

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 722

Re: QGIS: MAJ colonne par jointure spatiale

Bonjour,
Vous renseignez cette formule dans la calculatrice de champs
Ou dans la table attributaire.
Cordialement,

Hors ligne

 

#8 Mon 12 October 2020 11:43

HappyCX
Juste Inscrit !
Date d'inscription: 20 Jan 2020
Messages: 5

Re: QGIS: MAJ colonne par jointure spatiale

Bonjour,

Je reviens vers vous après quelques mois pour vous dire que je n'ai pas réussi. En fait QGIS ne trouve pas le champ source. Si je l'écris avec des "guillemets" il m'indique qu'il lui est impossible de calculer l’agrégat. Et si je l'écris avec des 'Côtes', il note en bas : "prévisualisation : 'nomduchamp'
et en résultat il écrit dans ma colonne le nom du champ et pas l'information de la colonne.
pour exemple : si mon champ s'appelle 'secteur' et que j'ai dans ma colonne : 'centre, 'est', 'ouest'... Il écrira à chaque ligne de ma colonne cible : 'secteur'

Si quelqu'un y comprend quelque chose et a une solution, je suis preneur.
Merci d'avance.


Windows 10 / QGIS 3.14.16

Hors ligne

 

#9 Mon 12 October 2020 13:58

HappyCX
Juste Inscrit !
Date d'inscription: 20 Jan 2020
Messages: 5

Re: QGIS: MAJ colonne par jointure spatiale

J'ai avancé et trouvé la jointure spatiale :
onglet vecteur -> outils de gestion de données -> joindre les attributs par localisation.
Cela me crée une nouvelle couche cible avec une colonne supplémentaire contenant la donnée de la couche source.

C'est un début, mais cela n'a pas modifié la table attributaire de la couche cible comme souhaité à l'origine.


Windows 10 / QGIS 3.14.16

Hors ligne

 

#10 Mon 12 October 2020 14:18

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

Re: QGIS: MAJ colonne par jointure spatiale

Bonjour,

Si quelqu'un y comprend quelque chose et a une solution, je suis preneur.


Pourriez-vous partager la formule que vous utilisez, svp? Merci.

Hors ligne

 

#11 Wed 27 January 2021 11:23

Laurent . M
Participant occasionnel
Lieu: Var
Date d'inscription: 26 Jun 2008
Messages: 18

Re: QGIS: MAJ colonne par jointure spatiale

Bonjour
Avec la version de Qgis 3.10.13-A Coruña
Pour mettre à jour un champ existant avec la calculatrice de champ depuis une autre couche sur la base d’une jointure par localisation :
J'ai appliqué la formule donnée plus haut par JD et redéfini par HappyCX :

aggregate('nom_couche_source','concatenate_unique', "nom_champs_source", filter:=intersects(geometry(@parent), $geometry))

Après avoir "copier-coller" cette formule dans la calculatrice de champs, il faut aller chercher (et remplacer) le nom de la couche source depuis la liste à droite dans l'onglet couche (il y en a deux, prendre celle qui liste vos couches présentes dans Qgis)

Remarque 1 : La couche source en question n'a (dans mon cas) pas tout à fait le même nom puisqu'une série de nombre s'ajoute après le nom usuel de la couche : 'Comm_CAPV20190919175737322' au lieu de simplement 'Comm_CAPV'. Je suppose qu'il s'agit d'une sorte d'identifiant interne pour que Qgis s'y retrouve ( ?)
Par contre j'ai rentré manuellement le nom du champs source (entre "") qui devra remplir le champs cible à mettre à jour. Il n'y a , à priori, pas d'onglet qui liste les champs de la couche source.

Remarque 2 : les couches doivent avoir la même projection

Remarque 3 : dû fait de l'intersection (comme défini dans la formule) le champ mis à jour peut retourner plusieurs valeurs collées à la suite. Est-il d’ailleurs possible de mettre un séparateur de type "-" ?

Merci pour cette formule bien utile pour mettre à jour une colonne "en dur" sans passer par la création d'une nouvelle couche "jointure par localisation" (dans mon cas).
Peut-être qu'un outil pour faciliter encore d'avantage ce processus (aussi fréquent en géomatique) serait bienvenu ?

Dernière modification par Laurent . M (Wed 27 January 2021 11:38)

Hors ligne

 

#12 Wed 27 January 2021 13:05

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

Re: QGIS: MAJ colonne par jointure spatiale

Bonjour,

Laurent . M a écrit:

Je suppose qu'il s'agit d'une sorte d'identifiant interne pour que Qgis s'y retrouve ( ?)


Exact, étant donné que rien ne vous empêche d'avoir par exemple l'intitulé "communes" deux fois dans votre liste de couches (sans pour autant qu'elles renvoient à la même source de données, d'ailleurs). Au moins, là, on n'est sûr de la couche à laquelle on se réfère. Mais 'Comm_CAPV' l'aurait fait aussi.

Remarque 2 : les couches doivent avoir la même projection


C'est sûr et certain, ça? Je demande parce qu'il me semblait avoir compris que la V3 ne requerrait plus de correspondance de SCR des couches dans les traitements, du fait de la reprojection à la volée par défaut. Et comme je pense que ces fonctions utilisent les mêmes sources que le menu traitement, je me disais que la reprojection se ferait peut-être, de façon transparente.

Est-il d’ailleurs possible de mettre un séparateur de type "-" ?


Ajoutez concatenator:= '-' aux paramètres. Voir les exemples de la fonction aggregate dans le panneau à droite (aussi disponible ici) ou des fonctions concatenate(_unique).

Hors ligne

 

#13 Wed 27 January 2021 13:54

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 722

Re: QGIS: MAJ colonne par jointure spatiale

SANTANNA a écrit:

C'est sûr et certain, ça? Je demande parce qu'il me semblait avoir compris que la V3 ne requerrait plus de correspondance de SCR des couches dans les traitements, du fait de la reprojection à la volée par défaut. Et comme je pense que ces fonctions utilisent les mêmes sources que le menu traitement, je me disais que la reprojection se ferait peut-être, de façon transparente.
.


Je viens de tester (3.10.14) et ca fonctionne uniquement  quand les couches ont la même projection.

Hors ligne

 

#14 Wed 27 January 2021 16:26

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

Re: QGIS: MAJ colonne par jointure spatiale

Merci pour la vérification. Étonnante, cette limitation...

Hors ligne

 

Pied de page des forums

Powered by FluxBB