Résumé
Joint une couche à une autre couche ou table (couche étant une couche d'entités, une vue tabulaire ou une couche raster avec une table attributaire de rasters) selon un champ commun.
Les enregistrements dans la Table de jointure sont appariés aux enregistrements du Nom de la couche en entrée. Un appariement est effectué lorsque les valeurs de champ de jointure en entrée et de champ de jointure de la sortie sont égales. Cette jointure est temporaire.
Illustration
Utilisation
L'entrée doit être une couche d'entités, une vue tabulaireou une couche raster possédant une table attributaire ; ce ne peut pas être une classe d'entités ou une table.
Les enregistrements de la Table de jointure peuvent être appariés à plusieurs enregistrements dans la couche ou la vue tabulaire en entrée. Pour plus d'informations sur les jointures un-à-un, plusieurs-à-un, un-à-plusieurs et plusieurs-à-plusieurs, consultez la rubrique A propos de la jointure et de la mise en relation des tables.
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.
Lorsque l'option Conserver uniquement les enregistrements correspondants 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.
La table de jointure peut être de n'importe quel type suivant : une table de géodatabase, un fichier dBASE, une table INFO ou une table OLE DB.
La couche ou la vue tabulaire en entrée doit avoir un champ ObjectID. La Table de jointure ne doit pas obligatoirement contenir un champ ObjectID.
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.
S'il existe déjà une jointure avec le même nom de table, par exemple si la couche A est jointe à la table B, un avertissement indique que la jointure existe déjà si vous réexécutez l'outil pour joindre la table B.
La jointure dure uniquement pour la durée de la session. Pour rendre la jointure persistante pour une utilisation dans une autre session, enregistrez la couche dans un fichier de couches à l'aide de l'outil Enregistrer la couche dans un fichier. Cela s'applique seulement aux couches ; les vues tabulaires ne peuvent pas être enregistrées de cette manière.
Dans la couche ou la vue tabulaire résultante, les champs de la couche ou de la vue tabulaire en entrée seront préfixés avec le nom de l'entrée et un point (.), et tous les champs de la table de jointure seront préfixés avec le nom de table de jointure plus un point comme valeur par défaut.
- Par exemple, joindre landuse, qui a des champs A et B à lookup_tab, qui a des 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.
- Pour les classes d'entités de couverture et les tables INFO, le séparateur entre la table et le nom de champ est le signe deux points (:) au lieu du point.
Pour créer une jointure permanente, utilisez l'outil Champ de jointure. Une autre méthode pour rendre la jointure permanente est d'enregistrer le couche d'entités jointe dans une nouvelle classe d'entités ou la vue tabulaire jointe dans une nouvelle table. Lorsque vous enregistrez les résultats dans une nouvelle classe d'entités ou table, vous pouvez utiliser l'environnement Noms de champ qualifiés pour contrôler si les noms de champs joints en sortie seront qualifiés avec le nom de la table d'origine du champ.
L'indexation des champs dans la couche ou la vue tabulaire en entrée et dans la Table de jointure sur lesquelles la jointure sera basée peut améliorer les performances. Cela peut être fait avec l'outil Ajouter un index attributaire ou en cliquant avec le bouton droit sur l'entrée dans ArcCatalog et en utilisant la boîte de dialogue pour ajouter un index au champ souhaité.
En savoir plus sur les conseils relatifs aux performances des jointures de données
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 de l'outil Générer une couche ou Générer une vue tabulaire, en utilisant le paramètre Informations de champ, ces modifications de champ ne seront pas reportées dans la couche ou la vue tabulaire jointe en sortie.
Le nom de Table de jointure ne peut pas commencer par une valeur numérique.
Pour en savoir plus sur les raisons pour lesquelles les jointures de données peuvent échouer
Syntaxe
AddJoin_management (in_layer_or_view, in_field, join_table, join_field, {join_type})
Paramètre | Explication | Type de données |
in_layer_or_view | La couche ou la vue tabulaire à laquelle la table de jointure sera jointe. | Raster Catalog Layer; 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. | Raster Catalog Layer; 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) | Précise ce qu'il adviendra des enregistrements en entrée qui correspondent à un enregistrement de la table de jointure.
| Boolean |
Exemple de code
Exemple 1 d'utilisation de la fonction AddJoin (fenêtre Python)
Le script de fenêtre Python suivant illustre l'utilisation de la fonction AddJoin en mode immédiat.
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.MakeFeatureLayer_management ( "Habitat_Analysis.gdb/vegtype", "veg_layer")
arcpy.AddJoin_management( "veg_layer", "HOLLAND95", "vegtable.dbf", "HOLLAND95")
arcpy.CopyFeatures_management( "veg_layer", "Habitat_Analysis.gdb/vegjoin")
Exemple 2 d'utilisation de la fonction AddJoin (script autonome)
Ce script autonome illustre la fonction AddJoin dans le cadre d'un workflow permettant de joindre une table à une classe d'entités, puis d'extraire ensuite les entités voulues.
# Name: AttributeSelection.py
# Purpose: Join a table to a featureclass and select the desired attributes
# Import system modules
import arcpy
try:
# Set environment settings
arcpy.env.workspace = "C:/data"
arcpy.env.qualifiedFieldNames = False
# Set local variables
inFeatures = "Habitat_Analysis.gdb/vegtype"
layerName = "veg_layer"
joinTable = "vegtable.dbf"
joinField = "HOLLAND95"
expression = "vegtable.HABITAT = 1"
outFeature = "Habitat_Analysis.gdb/vegjoin"
# Create a feature layer from the vegtype featureclass
arcpy.MakeFeatureLayer_management (inFeatures, layerName)
# Join the feature layer to a table
arcpy.AddJoin_management(layerName, joinField, joinTable, joinField)
# Select desired features from veg_layer
arcpy.SelectLayerByAttribute_management(layerName, "NEW_SELECTION", expression)
# Copy the layer to a new permanent feature class
arcpy.CopyFeatures_management(layerName, outFeature)
except Exception as err:
print(err.args[0])
Environnements
Informations de licence
- ArcGIS Desktop Basic: Oui
- ArcGIS Desktop Standard: Oui
- ArcGIS Desktop Advanced: Oui