Skip to Content

Foire Aux Questions - Jointures spatiales

Auteur : Lena

Pour joindre à chaque entité de la couche de polygones A les entités de la couche ponctuelle B qui correspondent à leur centre, il faut :

  • tout d’abord, générer les centroïdes de la couche A (par exemple à l’aide de l’extension ET Geowizard, onglet ‘Convert’, outil gratuit et non limité Polygon to point, ‘Specify conversion option’ = ‘Center points’).
  • ensuite, réaliser une jointure spatiale entre la couche de centroïdes et la couche B. Cette opération va joindre à chaque centroïde de A l’entité de B qui en est la plus proche.
  • enfin, sélectionner les entités de la couche résultante (Join_output .shp) pour lesquelles le champ [Distance] = 0.

 Auteur : Lena

Les couches doivent avoir un champ identifiant de manière unique chaque entité ([Id_A] et [Id_B]).

  • On effectue tout d'abord une intersection des couches A et B.
  • Dans la couche résultante intersection_output, on crée et calcule un champ [aire].
  • On effectue ensuite une récapitulation sur le champ [Id_A] en incluant comme résumé statistique le maximum du champ [aire] : on obtient la table sum_output.
  • On fait enfin une série de jointures (basées sur les attributs) à la table attributaire de la couche A :
    • sum_output via les champs [coucheA.Id_A] et [sum_output.Id_A]
    • intersect_output via les champs [sum_output.Max_aire] et [intersect_output.aire]
    • coucheB via les champs [intersect_output.Id_B] et [coucheB.Id_B].

A chaque polygone de A sont ainsi joints les attributs du polygone de B qui y est le plus représenté en surface.

 Auteur : Lena

L’union (cf. ‘Comment croiser plusieurs couches vectorielles (union, intersection, combinaison, découpage) ?’) donne un résultat semblable à une jointure spatiale (n, m), à ceci près qu’on ne conserve pas la géométrie originale de la couche. Pour réaliser une jointure spatiale (1, n), on utilisera l’intersection qui, de la même façon, ne conserve pas la géométrie des entités.

Exemple :
On dispose d’une couche représentant des communes et d’une couche représentant des habitats naturels. On souhaite connaître pour chaque commune la liste des habitats naturels qui y ont été identifiés. En d’autres termes, on souhaite faire une jointure commune <- (1,n)-> habitat_naturel.

  • Au préalable, on s’assure que les deux couches possèdent un champ identifiant de manière unique chaque commune et chaque habitat ([id _commune] et [id _habitat]).

On réalise ensuite une intersection (cf. ‘Géotraitements’ -> ‘Comment croiser plusieurs couches vectorielles (union, intersection, combinaison, découpage) ?’ : couche A = communes, couche B = habitats_naturels) :

 Résultat de l'intersection

La géométrie de la couche résultante intersection_output n’a pas forcément grand intérêt, contrairement à sa table attributaire. Celle-ci contient effet un enregistrement pour chaque couple polygone communal <-> polygone habitat.

Table attributaire résultante

  • Si l’on souhaite ensuite connaître la superficie des différents habitats pour chaque commune, on va tout d’abord créer et calculer un champ [aire] dans la couche intersection_output. On va ensuite créer un champ texte à partir de la concaténation des champs [id_polyg_commune] et [id_habitat] (via la calculatrice de valeur de champ, à partir de la formule : [id_concat] = ‘Str([id_polyg_commune]) & Str([id_habitat])’). Puis on fait une récapitulation (clic droit sur l’en-tête du champ [id_concat] -> ‘Récapituler...’) à partir du champ [id_concat] en incluant comme résumé statistique la somme du champ [aire]. On a ainsi la superficie totale des différents habitats sur chaque commune.

Table attributaire résultante

 Auteur : Lena

Pour joindre à une couche A les attributs des entités d’une couche B en fonction de leur emplacement, il convient de réaliser une jointure spatiale. Cette opération n'ajoute pas (comme pour la jointure en fonction des attributs) les attributs de B directement dans A, mais crée une troisième couche dans laquelle on retrouve les attributs de A et B.

Pour cela : 

  • faites un clic droit sur la couche A dans la table des matières -> ‘Jointures et relations’ -> ‘Joindre…’
  • dans la liste déroulante ‘Que voulez-vous joindre à cette couche ?’, choisissez ‘Joindre les données d’une couche selon l’emplacement’
  • choisissez la couche dont les données sont à joindre (couche B), les modalités de jointure ainsi que le nom et le chemin de la couche C
  • cliquez sur ‘OK’. 

A une entité de la couche A, on peut joindre par jointure spatiale :

  • soit un seul enregistrement de la table attributaire de la couche B (jointure 1,1) :

Synthèse des possibilités :

Synhèse des possibilités

  • soit un récapitulatif (moyenne, somme, minimum, maximum, écart-type ou variance) des attributs numériques de plusieurs entités de la couche B (jointure (1, récapitulation de n)) :

Synthèse des possibilités

Synthèse des possibilités

Il est possible de réaliser d’autres types de jointure spatiale en plusieurs étapes (cf. quelques exemples dans les questions suivantes)