ArcGis : Jointure spatiale multiple (1-n) d’attributs

Les jointures entre tables ou entre couches ne posent pratiquement pas de problème du moment où on a une correspondance unique entre les deux éléments qu’on essaye de joindre. A un enregistrement de la table ou couche de référence, correspond un ou aucun enregistrement de la table ou couche à joindre. La table ou couche résultante de la jointure peut être traitée comme tout autre table ou couche.

Les choses se compliquent toujours quand la table ou couche à joindre contient plus d’un enregistrement correspondant au même enregistrement de référence. On parle alors de relation 1-n. Nous verrons ici une option cachée qui permet de répondre à une partie de questions qu’on se pose dans le cas des jointures spatiales de type 1-n.Tout d’abord prenons un exemple simple.

On a une couche de zones protégées, par exemple les ZNIEFF (Zones naturelles d’intérêt écologique, faunistique et floristique).

Vous souhaitez savoir quelles communes sont concernées par chaque zone présente dans la couche ZNIEFF.

Le plus simple ce serait de pouvoir ajouter un attribut à la table ZNIEFF contenant la liste des communes concernées chaque zone

Nous avons donc la couche ZNIEFF et une couche Communes

couches de base pour l'exemple de jointure spatiale

La jointure disponible dans le menu contextuel de la couche dans ArcMap ne permet que le calcul du nombre de communes qui intersectent la zone.

Nous disposons de l’outil Jointure spatiale de la boîte à outils Analyse -> Superposition

outil jointure spatiale de la toolbox arcgis

Cet outil possède une option  qui permet de faire des jointures uniques ou multiples. Mais si nous exécutons l’outil avec l’option multiple :

joutil jointure spatiale avec l'option une à plusieurs

le résultat obtenu est le suivant:

résultat de l'outil jointure spatiale avec l'option une à plusieursLa zone avec l’identifiant 142 (Target_id) se trouve à cheval des communes de Saint-Eloy et du Tréhou. L’outil produit en sortie deux polygones identiques, un avec les attributs de Saint-Eloy et l’autre avec les attributs du Tréhou.

Mais ce n’est pas ce que nous voulons. Pour savoir quelles sont les communes concernées par cette zone ont est obligés de faire une requête. Ce que nous voulons c’est un attribut qui contienne la liste des communes.

C’est là où l’option cachée va nous permettre de résoudre notre problème.

Nous utiliserons l’outil jointure spatiale, mais contrairement à ce que l’on pouvait penser, nous allons laisser l’option à une à une (one-to-one) car c’est en réalité ce que nous voulons : une zone en entrée doit produire une zone en sortie, et pas plusieurs comme dans ce que nous venons de faire.

Par contre, c’est au niveaux des champs en sortie que nous allons changer quelque chose.

Dans les attributs de la couche commune nous avons un champ qui contient le nom de la commune : NOM_COM. Si vous cliquez-droit sur ce champ dans la liste des champs en sortie, vous avez un menu contextuel avec une option : Propriétés. C’est ce champ que nous voulons utiliser pour créer une liste de communes.

menu contextuel des champs en sortie de la jointure spatiale

 

Vous aurez alors la fenêtre de propriétés.

propriétés du champ en sortie de la jointure spatialerègles de fusion du champ en sortie

 

  • Ayez soin de mettre une taille suffisante pour contenir la liste résultante.
  • Dans le champ Règle de fusion, sélectionnez Jointure.
  • Comme Séparateur, sélectionnez la virgule.
  • Exécutez l’outil, et le résultat est le suivant:

résultat de la jointure spatiale avec le champ en sortie de type Joint

Maintenant l’outil a créé un seul polygone par zone en entrée et le champ NOM_COM contient la liste des communes qui intersectent cette zone, séparées par des virgules.

Seul problème de cette astuce: l’option de fusion Jointure n’est disponible que pour les champs de type Texte. Alors selon le format de votre table en sortie vous serez limité dans la longueur du champ:

  • si vous travaillez avec des shapefiles, le résultat est limité à 254 caractères.
  • si vous travaillez avec une geodatabase personnelle, oubliez de travailler avec la version actuelle d’ArcGis (10.3), ça plante! L’outil essaye de créer un shape dans une base Access…erreur avec un format geodatabase personnelle
  • si vous travaillez avec un geodatabase fichier, la limite de longueur est de 2 147 483 647 caractères… toujours suffisants! Par contre la taille du champ c’est vous qui la fixez, avant d’exécuter l’outil. Si vous ne donnez pas assez de place pour la liste en sortie vous aurez un message d’erreur et l’arrêt de l’exécution de l’outil.

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *