Ajouter une jointure (Gestion des données)
Récapitulatif
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.
-
Si les valeurs du Champ de jointure en sortie ne sont pas uniques, seule la première occurrence de chaque valeur est utilisée.
-
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.
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.
- Dans ArcMap, cliquez avec le bouton droit sur la couche ou la vue tabulaire en entrée ; sélectionnez Données > Exporter des données, spécifiez la classe d'entités, le fichier de formes, la table ou la table dBASE en sortie.
- Si l'entrée est un couche d'entités, utilisez l'outil Copier des entités ; si l'entrée est une vue tabulaire, utilisez l'outil Copier des enregistrements.
-
Cet outil n'est pas limité à ArcMap ; il fonctionne sur les couches et les vues tabulaires dans ArcCatalog et dans les scripts. L'outil Générer une couche crée une couche à partir d'une classe d'entités et l'outil Générer une vue tabulaire crée une vue tabulaire à partir d'une table ou d'une classe d'entités en entrée.
-
La Table de jointure peut être de n'importe quel type parmi les suivants : une table de géodatabase (ArcSDE, fichier ou personnelle), 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.
-
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é.
-
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.
-
Vous pouvez enregistrer les résultats d'Ajouter une jointure dans une nouvelle classe d'entités à l'aide de l'outil Copier des entités ou Copier des enregistrements. Lorsque vous enregistrez ces outils de copie, 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.
-
Les enregistrements de la Table de jointure peuvent être appariés à plusieurs enregistrements dans la couche ou la vue tabulaire en entrée.
-
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.
Syntaxe
Paramètre | Explication | Type de données |
in_layer_or_view |
La couche ou la vue tabulaire à laquelle la table de jointure sera jointe. | Mosaic Layer; Raster Catalog 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 Catalog 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
Le script de fenêtre Python suivant illustre l'utilisation de la fonction AddJoin en mode immédiat.
import arcpy from arcpy import env 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")
Ce script autonome montre la fonction AddJoin dans le cadre d'un workflow pour joindre une table à une classe d'entités et extraire ensuite les entités voulues.
# Name: AttributeSelection.py # Purpose: Join a table to a featureclass and select the desired attributes # Author: ESRI # Import system modules import arcpy from arcpy import env try: # Set environment settings env.workspace = "C:/data" 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, e: # If an error occurred, print line number and error message import traceback, sys tb = sys.exc_info()[2] print "Line %i" % tb.tb_lineno print e.message