Ajouter une jointure (Gestion des données)

Synthèse

Permet de joindre une couche à une autre couche ou table selon un champ commun. Les couches d’entités, les vues tabulaires et les couches raster avec une table attributaire de rasters sont prises en charge.

Les enregistrements du paramètre Join Table (Table de jointure) seront appariés aux enregistrements du paramètre Input Table (Table en entrée). Un appariement est effectué lorsque les valeurs du champ de jointure en entrée et du champ de table de jointure sont égales. Cette jointure est temporaire.

Illustration

Illustration de l’outil Add Join (Ajouter une jointure)

Utilisation

  • La valeur du paramètre Input Table (Table en entrée) peut être une couche d’entités, une vue tabulaire ou une couche raster avec une table attributaire. Si un chemin de données est utilisé, la couche est créée avec une jointure. La jointure se trouvera toujours dans la couche, pas avec les données.

  • Pour créer une jointure permanente, utilisez l’outil Join Field (Joindre un champ) ou utilisez la couche jointe en tant qu’entrée de l’un des outils suivants : Copy Features (Copier des entités), Copy Rows (Copier des lignes) , Export Features (Exporter des entités) ou Export Table (Exporter une table). Lorsque vous enregistrez les résultats dans une nouvelle classe d’entités ou table, l’environnement Qualified Field Names (Noms de champ qualifiés) peut être utilisé pour contrôler si les noms de champs joints en sortie sont qualifiés avec le nom de la table d’origine du champ. Les alias de champ sont conservés depuis la couche vers la sortie, sauf si la sortie est un shapefile.

  • Si l’entrée est un chemin d’accès à une classe d’entités ou à un jeu de données, cet outil crée et renvoie automatiquement une nouvelle couche avec les résultats de l’outil.

  • Lorsqu’une jointure un vers plusieurs est générée, le résultat de la jointure peut être visualisé dans la table attributaire, où un message d’avertissement indique si la table contient des ID d’objet dupliqués. Étant donné que de nombreux outils de géotraitement ne prennent pas en charge les données contenant des ID d’objet dupliqués et que le traitement de telles données est susceptible de générer des résultats inattendus, il est recommandé de d’abord copier la couche jointe dans une nouvelle classe d’entités à l’aide de l’outil Exporter des entités. Utilisez ensuite cette nouvelle classe d’entités comme entrée d’autres outils de géotraitement.

  • Les tables suivantes comprennent des sorties potentielles de l’exécution d’une jointure avec différentes entrées.

    La première table illustre une jointure de type un vers plusieurs. La conservation d’enregistrements d’appariement uniquement n’aura aucun effet, car tous les enregistrements ont des appariements.

    Table en entréeTable de jointureRésultat

    Champ en entrée

    Type

    Champ de jointure

    Valeur

    Champ en entrée

    Type

    Champ de jointure

    Valeur

    1

    A

    1

    100

    1

    A

    1

    100

    2

    B

    2

    200

    2

    B

    2

    200

    1

    300

    1

    A

    1

    300

    2

    400

    2

    B

    2

    400

    Exemple d’utilisation de l’outil Ajouter une jointure : jointure de type un vers plusieurs lorsque chaque table comporte un champ ID d’objet

    La deuxième table utilise une table de jointure sans ID d’objet ; seule une jointure de type un vers premier est possible. Une jointure de type un vers premier n’est également possible que si chaque table provient d’espace de travail différent.

    Table en entréeTable de jointureRésultat

    Champ en entrée

    Type

    Champ de jointure

    Valeur

    Champ en entrée

    Type

    Champ de jointure

    Valeur

    1

    A

    1

    100

    1

    A

    1

    100

    2

    B

    2

    200

    2

    B

    2

    200

    3

    300

    4

    400

    Exemple d’utilisation de l’outil Ajouter une jointure : jointure de type un vers premier lorsqu’une des tables ne comporte pas de champ ID d’objet

    Dans la dernière table, la table en entrée comporte plus d’enregistrements que la table de jointure. Si vous conservez tous les enregistrements, tous les enregistrements correspondants sont également conservés, plus les enregistrements de la table en entrée qui ne correspondaient pas.

    Table en entréeTable de jointureRésultat

    Champ en entrée

    Type

    Champ de jointure

    Valeur

    Champ en entrée

    Type

    Champ de jointure

    Valeur

    1

    A

    1

    100

    1

    A

    1

    100

    2

    B

    2

    200

    2

    B

    2

    200

    3

    C

    1

    300

    1

    A

    1

    300

    4

    D

    2

    400

    2

    B

    2

    400

    3

    C

    <Nul>

    <Nul>

    4

    D

    <Nul>

    <Nul>

    Exemple d’utilisation de l’outil Ajouter une jointure : jointure de type un vers plusieurs lorsque chaque table comporte un champ ID d’objet et que le paramètre Keep All Target Features (Conserver toutes les entités cible) est activé

    La table en entrée doit comporter un champ d’ ID d’objet pour réaliser une jointure de type un vers plusieurs et se trouver dans le même espace de travail.

  • Les enregistrements de la table de jointure peuvent être appariés à plusieurs enregistrements si la table de jointure comporte un champ d’ID d’objet. Sinon, une jointure de type un vers premier est réalisée.

  • Par défaut, tous les enregistrements sont conservés lors de la jointure de tables. Si un enregistrement de la table cible n'a pas d'équivalent dans la table de jointure, il affiche des valeurs Null pour tous les champs ajoutés à la table cible à partir de la table de jointure.

    Table en entréeTable de jointureRésultat

    Champ en entrée

    Type

    Champ de jointure

    Valeur

    Champ en entrée

    Type

    Champ de jointure

    Valeur

    1

    A

    1

    100

    1

    A

    1

    100

    2

    B

    2

    200

    2

    B

    2

    200

    3

    C

    1

    300

    1

    A

    1

    300

    4

    D

    2

    400

    2

    B

    2

    400

    3

    C

    <Nul>

    <Nul>

    4

    D

    <Nul>

    <Nul>

    Lorsque l’option Keep All Target Features (Conserver toutes les entités cible) est activée, si un enregistrement de la table cible n’a pas d’équivalent dans la table de jointure, il est supprimé de la table cible résultante. Si la table cible représente la table attributaire d'une couche, les entités sans données jointes n'apparaissent pas sur la carte.

    Table en entréeTable de jointureRésultat

    Champ en entrée

    Type

    Champ de jointure

    Valeur

    Champ en entrée

    Type

    Champ de jointure

    Valeur

    1

    A

    1

    100

    1

    A

    1

    100

    2

    B

    2

    200

    2

    B

    2

    200

    3

    300

    4

    400

  • Les propriétés de champ telles que les alias, la visibilité et la mise en forme des nombres sont conservées lors de l'ajout ou de la suppression d'une jointure.

  • Une table en entrée ne peut effectuer qu’une jointure à la fois.

  • La jointure est conservée uniquement pour la durée de la couche. Pour conserver une couche, enregistrez la session ArcGIS Pro ou enregistrez-la dans un fichier de couche à l’aide de l’outil Save Layer To File (Enregistrer une couche dans un fichier).

    Pour voir le résultat d’une jointure créée dans un outil de script, l’outil doit inclure la couche en tant que paramètre en sortie dérivé. De la même manière, le paramètre Updated Input Layer or Table View (Couche ou vue tabulaire en entrée mise à jour) doit être défini en tant que paramètre en sortie dérivé dans un outil de modèle pour voir les résultats joints.

  • Dans la table résultante, les champs seront préfixés avec le nom de l’entrée et un point (.) ; tous les champs de la table de jointure seront préfixés avec le nom de table de jointure et un point comme valeur par défaut.

    Par exemple, joindre landuse, qui comporte les champs A et B, à lookup_tab, qui comporte les champs C et D, donne une couche ou une vue tabulaire avec les champs suivants : landuse.A, landuse.B, lookup_tab.C et lookup_tab.D.

  • Les noms de champ d’une couche doivent être uniques. Si les tables en entrée et les tables jointes portent le même nom et se trouvent dans des espaces de travail différents, une jointure ne peut pas être réalisée sans créer une couche mal définie.

  • L’indexation des champs dans la table en entrée et la table de jointure sur lesquelles la jointure sera basée peut améliorer les performances. Si le paramètre Index Joined Fields (Indexer les champs joints) est activé, un index attributaire sera ajouté aux deux champs de jointure. Par ailleurs, chaque champ de jointure peut être indexé à l’aide de l’outil Add Attribute Index (Ajouter un index attributaire).

  • Si les résultats de la jointure sont imprévus ou incomplets, déterminez si les valeurs des paramètres Join Table Field (Champ de table de jointure) et Input Join Field (Champ de jointure en entrée) sont indexées. Si ce n’est pas le cas, essayez de supprimer et de recréer l’index, puis exécutez de nouveau l’outil.

  • Si les champs de la couche ou de la vue tabulaire en entrée ont été modifiés (renommés ou masqués) à l’aide du paramètre Field Info (Informations de champ) dans l’outil Make Feature Layer (Générer une couche d’entités) ou Make Table View (Générer une vue tabulaire), ces modifications de champ ne seront pas reportées dans la couche ou la vue tabulaire jointe en sortie.

  • L’ensemble de définition de la table en entrée est appliqué à la couche ou vue tabulaire en entrée. Pour supprimer l’ensemble de définition, utilisez l’outil Remove Join (Supprimer une jointure) ou supprimez manuellement l’ensemble de définition de la couche.

  • L’outil Valider une jointure peut être utilisé pour valider une jointure entre deux couches ou tables afin de déterminer si celles-ci ont des noms de champ et des champs d’ID d’objet valides, si la jointure produit des enregistrements correspondants, s’il s’agit d’une jointure un vers un ou un vers plusieurs, ou d’autres propriétés de la jointure.

    Pour faciliter l’utilisation de l’outil, la boîte de dialogue associée contient un bouton permettant de valider la jointure.

  • Les sélections sur la couche ne sont pas utilisées dans l’outil Add Join (Ajouter une jointure), mais le sont dans l’outil Join Field (Joindre un champ).

Paramètres

ÉtiquetteExplicationType de données
Table en entrée

La couche ou la vue tabulaire à laquelle la table de jointure sera jointe.

Mosaic Layer; Raster Layer; Table View
Champ de jointure en entrée

Le champ de la couche ou de la vue tabulaire en entrée sur lequel la jointure sera basée.

Field
Table de jointure

La table ou la vue tabulaire à joindre à la couche ou à la vue tabulaire en entrée.

Mosaic Layer; Raster Layer; Table View
Champ de table de jointure

Champ dans la table de jointure qui contient les valeurs sur lesquelles sera basée la jointure.

Field
Conserver toutes les entités cible
(Facultatif)

Spécifie si seuls les enregistrements de l’entrée qui correspondent à un enregistrement de la table de jointure seront inclus dans la sortie.

  • Activé : tous les enregistrements de la couche ou de la vue tabulaire en entrée sont inclus dans la sortie. On parle également de jointure externe. Il s’agit de l’option par défaut.
  • Désactivé : seuls les enregistrements en entrée qui correspondent à une ligne de la table de jointure sont inclus dans la sortie. On parle également de jointure interne.
Boolean
Indexer les champs joints
(Facultatif)

Spécifie si les index attributaires de la table seront ajoutés aux deux champs de jointure.

  • Activé : les deux champs de jointure seront indexés. Si la table contient un index, aucun nouvel index sera ajouté.
  • Désactivé : les index ne seront pas ajoutés. Il s’agit de l’option par défaut.
Boolean

Sortie obtenue

ÉtiquetteExplicationType de données
Couche ou vue tabulaire en entrée mise à jour

Jeu de données en entrée mis à jour.

Table View; Raster Layer; Mosaic Layer

arcpy.management.AddJoin(in_layer_or_view, in_field, join_table, join_field, {join_type}, {index_join_fields})
NomExplicationType de données
in_layer_or_view

La couche ou la vue tabulaire à laquelle la table de jointure sera jointe.

Mosaic Layer; Raster Layer; Table View
in_field

Le champ de la couche ou de la vue tabulaire en entrée sur lequel la jointure sera basée.

Field
join_table

La table ou la vue tabulaire à joindre à la couche ou à la vue tabulaire en entrée.

Mosaic Layer; Raster Layer; Table View
join_field

Champ dans la table de jointure qui contient les valeurs sur lesquelles sera basée la jointure.

Field
join_type
(Facultatif)

Spécifie si seuls les enregistrements de l’entrée qui correspondent à un enregistrement de la table de jointure seront inclus dans la sortie.

  • KEEP_ALLTous les enregistrements de la couche ou de la vue tabulaire en entrée sont inclus dans la sortie. On parle également de jointure externe. Il s’agit de l’option par défaut.
  • KEEP_COMMONSeuls les enregistrements en entrée qui correspondent à une ligne de la table de jointure sont inclus dans la sortie. On parle également de jointure interne.
Boolean
index_join_fields
(Facultatif)

Spécifie si les index attributaires de la table seront ajoutés aux deux champs de jointure.

  • INDEX_JOIN_FIELDSLes deux champs de jointure seront indexés. Si la table contient un index, aucun nouvel index sera ajouté.
  • NO_INDEX_JOIN_FIELDSLes index ne seront pas ajoutés. Il s’agit de l’option par défaut.
Boolean

Sortie obtenue

NomExplicationType de données
out_layer_or_view

Jeu de données en entrée mis à jour.

Table View; Raster Layer; Mosaic Layer

Exemple de code

Exemple 1 d'utilisation de la fonction AddJoin (fenêtre Python)

Le script de fenêtre Python ci-dessous illustre l’utilisation de la fonction AddJoin en mode immédiat.

import arcpy
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
veg_joined_table = arcpy.management.AddJoin("vegetation", "HOLLAND95", 
                                            "vegtable", "HOLLAND95")
arcpy.management.CopyFeatures(veg_joined_table, "vegjoin")
Exemple 2 d'utilisation de la fonction AddJoin (script autonome)

Ce script autonome illustre la fonction AddJoin dans le cadre d’un processus permettant de joindre une table à une classe d’entités, puis d’extraire les entités spécifiées.

# Name: AttributeSelection.py
# Purpose: Join a table to a featureclass and select the desired attributes

# Import system modules
import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
# The qualifiedFieldNames environment is used by Copy Features when persisting 
# the join field names.
arcpy.env.qualifiedFieldNames = False

# Set local variables
inFeatures = "vegtype"
joinTable = "vegtable"
joinField = "HOLLAND95"
expression = "vegtable.HABITAT = 1"
outFeature = "vegjoin"

# Join the feature layer to a table
veg_joined_table = arcpy.management.AddJoin(inFeatures, joinField, joinTable, 
                                            joinField)

# Select desired features from veg_layer
arcpy.management.SelectLayerByAttribute(veg_joined_table, "NEW_SELECTION", 
                                        expression)

# Copy the layer to a new permanent feature class
result = arcpy.management.CopyFeatures(veg_joined_table, outFeature)

# See field names and aliases
resultFields = arcpy.ListFields(result)
print([field.name for field in resultFields])
print([field.aliasName for field in resultFields])

Informations de licence

  • Basic: Oui
  • Standard: Oui
  • Advanced: Oui

Rubriques connexes