- Jointure des attributs d'une table
- Jointure de données par emplacement (spatialement)
- Mise en relation des tables
- Classes de relations dans la géodatabase
- Jointures et relations
- Enregistrement de jointures et de relations
- Utilisation des jointures, des mises en relation et des classes de relations ensemble
La plupart des directives de création des bases de données favorise l'organisation sur la base de tables multiples - chacune se concentrant sur un sujet spécifique - au lieu d'une grande table contenant tous les champs nécessaires. Le fait d'avoir plusieurs tables évite de devoir dupliquer les informations dans la base de données puisque les données ne sont saisies qu'une fois dans une table. Lorsque vous avez besoin d'informations ne figurant pas dans la table avec laquelle vous travaillez, vous avez la possibilité de relier les deux tables.
Par exemple, vous pouvez obtenir des données auprès d'autres services de votre organisation, les acheter ou les télécharger sur Internet. Si ces informations sont stockées dans une base de données dBASE, INFO ou une table de géodatabase, vous pouvez les associer aux entités géographiques et les afficher sur la carte.
Avec ArcGIS, vous pouvez associer des enregistrements d'une table à des enregistrements d'une autre table à l'aide d'un champ commun appelé clé. Vous pouvez créer ces associations de plusieurs façons, y compris en joignant ou en mettant en relation temporairement des tables de votre carte, ou en créant des classes de relations dans la géodatabase qui gère les associations permanentes. Par exemple, vous pouvez associer une table contenant des informations sur la propriété des parcelles à la couche parcelle, puisque ces tables ont en commun un champ d'identification des parcelles.
Lorsque vous joignez deux tables, vous annexez les attributs d'une table à l'autre en fonction d'un champ commun aux deux tables. La mise en relation de tables définit un rapport entre deux tables (également en fonction d'un champ commun), mais n'annexe pas les attributs de l'une à l'autre. Les données sont accessibles lorsque vous en avez besoin.
Jointure des attributs d'une table
En règle générale, vous joignez une table de données à une couche en fonction de la valeur d'un champ présent dans les deux tables. Le nom du champ ne doit pas obligatoirement être le même contrairement au type de données qui doit l'être. Vous joignez des nombres à des nombres, des chaînes à des chaînes et ainsi de suite. Vous pouvez effectuer une jointure soit par le biais de la boîte de dialogue Joindre des données, accessible en cliquant avec le bouton droit sur une couche dans ArcMap, soit à l’aide de l’outil Ajouter une jointure.
Supposons que vous ayez obtenu des données qui décrivent le changement en pourcentage de la population par comté et que vous souhaitiez générer des cartes d'augmentation de la population à partir de ces informations. Tant que vos données démographiques sont stockées dans une table de la base de données et ont un champ en commun avec la couche, vous pouvez les joindre à l'entité géographique et utiliser tous les champs supplémentaires pour symboliser, étiqueter, interroger ou analyser les entités de la couche.
Relations un vers un et plusieurs vers un
Lorsque vous joignez des tables dans ArcMap, vous établissez un rapport un à un ou plusieurs à un entre la table attributaire de la couche et la table contenant les informations que vous souhaitez joindre. L'exemple ci-dessous illustre une relation un à un entre chaque comté et les données de changement de la population de ce comté. En d'autres termes, il existe un changement de population pour chaque comté.
L'exemple suivant est un exemple de rapport plusieurs à un. Supposons que vous ayez une couche dans laquelle chaque polygone est classé selon le type d'utilisation des sols. La table attributaire de la couche ne stocke que le code d'utilisation du sol. Une table distincte stocke la description complète de chaque type d'utilisation du sol. La jointure de ces deux tables établirait une relation plusieurs vers un puisque de nombreux enregistrements dans la table attributaire de la couche se joindraient au même enregistrement dans la table des descriptions de l'utilisation du sol. Vous pourriez alors utiliser le texte descriptif lors de la génération de la légende de la carte.
Relations un vers plusieurs et plusieurs vers plusieurs
Lors de l'utilisation de données dans les cas où existent une relation un vers plusieurs ou plusieurs vers plusieurs, vous devez utiliser une mise en relation ou une classe de relations pour établir la relation entre les jeux de données. Toutefois, il est possible de créer une jointure dans ces circonstances. Lorsque vous créez une jointure dans un tel cas, il y a des différences entre le fonctionnement d'outils et d'autres paramètres spécifiques à la couche selon la source de données. Si vous utilisez des données de géodatabase pour créer la jointure, tous les enregistrements assortis sont renvoyés. Si vous utilisez des données ne provenant pas d'une base de données, comme des fichiers de formes ou des tables dBASE, pour créer la jointure, seul le premier enregistrement correspondant est retourné.
Cela signifie que si vous avez créé une jointure 1:M ou M:M avec les données de la géodatabase et que vous générez un rapport, vous voyez plusieurs enregistrements dans le rapport, un pour chaque correspondance. Les correspondances multiples sont également visibles lors de l'utilisation d'un champ de jointure pour symboliser une couche jointe, étiqueter, identifier des entités, générer un diagramme, et utiliser l'outil Rechercher ou Hyperlien. Si vous utilisez la couche jointe comme entrée d'un outil de géotraitement ou dans une opération d'exportation, les enregistrements correspondants multiples sont utilisés.
Jointure de données par emplacement (spatialement)
Lorsque les couches de votre carte ne partagent pas de champ attributaire commun, vous pouvez joindre ces couches à l'aide d'une jointure spatiale. Ce type de jointure permet de joindre les attributs de deux couches en fonction de l'emplacement des entités dans les couches.
Vous pouvez effectuer une jointure spatiale soit par le biais de la boîte de dialogue Joindre des données, accessible en cliquant avec le bouton droit sur une couche dans ArcMap, soit à l’aide de l’outil Jointure spatiale.
Avec une jointure spatiale, vous pouvez trouver chacun des éléments suivants :
- l'entité la plus proche d'une autre,
- ce que contient une entité,
- avec quoi une entité s'intersecte,
- le nombre de points faisant partie de chaque polygone.
La jointure par emplacement, ou jointure spatiale, utilise des associations spatiales entre les couches impliquées pour ajouter des champs d'une couche à une autre. Les jointures spatiales diffèrent des jointures d'attributs ou de classes de relations par le fait qu'elles ne sont pas dynamiques et qu'elles nécessitent d'enregistrer les résultats dans une nouvelle couche en sortie.
Trois types d'association permettent d'exécuter une jointure spatiale :
- Apparier chaque entité à l'entité ou aux entités les plus proches : dans cette association, vous pouvez ajouter les attributs de l'entité la plus proche ou ajouter une combinaison (telle que min, max, etc.) des attributs numériques des entités les plus proches.
- Apparier chaque entité à l'entité dont elle fait partie : dans ce cas, les attributs de l'entité dans laquelle se trouve l'entité actuelle sont ajoutés. Cette situation se produit lorsque, par exemple, un point figure dans un polygone ou un segment de ligne faisant entièrement partie (c'est-à-dire entièrement recouvert) d'un autre segment de ligne.
- Apparier chaque entité à l'entité ou aux entités qu'elle croise : comme pour l'association des entités les plus proches présentée plus haut, vous pouvez ajouter les attributs d'une entité d'intersection individuelle ou une combinaison d'attributs numériques des entités d'intersection.
Pour chaque combinaison de points, de polygones et de lignes, seules les associations les plus utilisées sont disponibles dans la boîte de dialogue Jointure. Toutefois, avec VBA, il est possible d'exécuter une jointure fondée sur n'importe quelle association et à partir de n'importe quelle combinaison de couches d'entités ponctuelles, linéaires ou surfaciques.
Mise en relation des tables
Contrairement à la procédure de jointure, la mise en relation entre des tables définit simplement un rapport entre deux tables. Les données associées ne sont pas annexées à la table attributaire de la couche, comme dans le cas d'une jointure, mais sont accessibles lorsque vous utilisez les attributs de la couche.
Par exemple, si vous sélectionnez un bâtiment, vous pouvez trouver tous ses occupants. De la même façon, si vous sélectionnez un locataire, vous pourrez trouver le bâtiment dans lequel il réside (ou les bâtiments dans le cas d'une enseigne commerciale ayant plusieurs magasins dans différents centres commerciaux : il s'agit alors d'un rapport plusieurs à plusieurs). Cependant, si vous avez effectué une jointure de telles données, ArcMap ne recherche que le premier locataire de chaque bâtiment et ne prend pas en compte les autres locataires.
Les mises en relation définies dans ArcMap suivent essentiellement le même concept que les classes de relations simples définies dans la géodatabase sauf qu'elles sont enregistrées avec la carte et non avec la géodatabase.
Si les données sont stockées dans une géodatabase et que leurs classes de relations sont définies, vous pouvez les utiliser directement sans avoir à établir une relation dans ArcMap. Les classes de relations sont automatiquement disponibles lorsque vous ajoutez une couche qui participe à une classe de relations avec la carte. Il est à noter que la relation plusieurs vers plusieurs est définie différemment lorsque les données sont stockées dans une géodatabase. En général, si des classes de relations sont définies dans la géodatabase, vous devez les utiliser au lieu d'en créer de nouvelles dans ArcMap.
Classes de relations dans la géodatabase
Une classe de relations stocke des informations sur les associations entre des entités et des enregistrements dans une géodatabase et garantit l'intégrité de vos données.
En savoir plus sur les avantages liés à l'utilisation des classes de relations
Jointures et relations
Suivez ces indications lorsque vous devez choisir entre jointures ou des liaisons de données :
- Vous voulez joindre deux tables lorsque les données des tables ont une relation un vers un ou plusieurs vers un.
- Vous voulez mettre en relation deux tables lorsque les données des tables ont une relation un vers plusieurs ou plusieurs vers plusieurs.
En savoir plus sur le choix entre des classes de relations, des jointures et des relations
Enregistrement de jointures et de relations
Lorsque vous enregistrez une carte contenant des jointures et des mises en relation, ArcMap enregistre la façon dont les deux tables attributaires sont liées et non pas les données jointes elles-mêmes. Lorsque vous rouvrez la carte, ArcMap rétablit le rapport (qu'il s'agisse d'une jointure ou d'une mise en relation) entre les tables en lisant les tables de la base de données. De cette façon, toutes les modifications des tables sources effectuées depuis la dernière visualisation sont automatiquement incluses et reflétées dans la carte.
Les jointures peuvent être stockées dans un document ArcMap ou dans un fichier de couches. Si vous envisagez de déplacer les données à un moment ou à un autre, vous devez enregistrer vos documents ArcMap avec leurs chemins relatifs. Si les données sont déplacées, vous pouvez réparer les tables et les couches après l'ouverture du document. Cependant, les jointures ne sont réparées que si la table cible et les tables à joindre se trouvent dans le même répertoire ou le même espace de travail. Si vous enregistrez votre document avec ses chemins relatifs, les tables et les couches sont restaurées automatiquement avec les jointures si le document a été déplacé en fonction de l'emplacement dans lequel se trouvent les données transférées.
Vous pouvez faire une copie permanente sur disque de la couche avec données jointes en exportant simplement la couche. Pour exporter la couche, cliquez avec le bouton droit dans la table des matières, sélectionnez Données, puis cliquez sur Exporter des données. Cette opération crée une nouvelle classe d'entités avec tous les attributs, y compris les champs joints.
Utilisation des jointures, des mises en relation et des classes de relations ensemble
Si vos données sont utilisées à la fois par les jointures et les mises en relation, l'ordre dans lequel les jointures et les mises en relation sont créées est important. Si la couche ou la table a une mise en relation, cette dernière est supprimée lors de la jointure des données. Si vous effectuez une mise en relation sur une couche ou une table jointe, la mise en relation est supprimée lors de la suppression de la jointure. En règle générale, il est préférable de créer les jointures puis d'ajouter les mises en relation.
Dans le cas où vous ayez besoin de joindre la tableA et de mettre la tableB en relation avec la tableC, sur les trois options proposées, deux pourront être utilisées. Chaque cas est décrit ci-dessous :
- Joignez la table A à la couche C, puis mettez la table B en relation avec la couche C : ce scénario fonctionne. Le résultat est une couche jointe avec une mise en relation avec la table B.
- Mettez en relation la couche C avec la table B, puis joignez la table A à la couche C : ce scénario fonctionne également. Une mise en relation est bi-directionnelle. Les deux tables liées peuvent donc l'utiliser quelle que soit celle qui la détient. Dans ce cas, la table B détient la relation ; par conséquent, lorsque la table A est jointe à la table C, la mise en relation n'est pas supprimée.
- Mettez en relation la table B avec la couche C, puis joignez la table A à la couche C : ce scénario ne fonctionne pas. Cette possibilité est différente de la précédente car dans ce scénario la layerC détient la mise en relation. Par conséquent, lorsque la tableA est jointe à la layerC, la mise en relation est supprimée.
Les mises en relation appartenant à la table à joindre ne sont pas affectées par la jointure. Toutefois, ces mises en relation ne sont pas accessibles à partir de la table ou de la couche cible.
Les classes de relations ne sont jamais supprimées après une opération de jointure ou d'agrégation. Elles peuvent être utilisées même si les données font partie de jointures ou des mises en relation.