Le PortailSIG est issu d'une volonté de vous informer sur l'actualités des Systèmes d'Information Géographique, mais également de mettre en commun des ressources s'y rapportant, aussi diverses que des articles, des tutoriaux, des FAQs, des scripts et documents téléchargeables et d'autres fonctionnalités que nous essaierons de vous apporter au cours des évolutions de cette version 2 du PortailSIG.
Comment faire une jointure spatiale (1,n) ou (n,m) de deux couches polygonales ?
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) :

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.

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

- Ajouter un commentaire
- 621 lectures
Similar entries
- Comment transférer les attributs d’une couche à une autre en fonction de l’emplacement des entités ?
- Comment joindre à chaque entité de la couche A les attributs de l'entité de B qui y est la plus représentée en surface?
- Comment croiser plusieurs couches vectorielles (union, intersection, combinaison, découpage) ?
- Comment calculer des statistiques basiques groupées en fonction de la valeur d'un champ ?
- Comment découper toutes les couches d’un projet en fonction d’une entité d’une couche ?