Suite

Création d'un script de jointure simple en Python

Création d'un script de jointure simple en Python


J'essaie de créer un script de jointure simple en python à partir d'un modèle arcgis, où les seules étapes consistent à joindre une carte à une table pour produire une carte avec les propriétés de la table. Les attributs réunis sont "CNTYFPID" du shapefile map et "fips" du textfile. J'ai essayé de modifier le script produit par arcgis, mais cela ne fonctionne pas. Où vais-je mal?

# Importer le module arcpy import arcpy arcpy.env.workspace = "C:/Users/Documents/ArcGIS/Testing123.mdb" arcpy.env.overwriteOutput = True # Arguments du script Map = arcpy.GetParameterAsText(0) if Map == 'tl_2009_us_county_albers_USGS .shp' ou non Map : Map = "C:/Users/Documents/ArcGIS/Python/tl_2009_us_county_albers_USGS.shp" #fournit une valeur par défaut si non spécifié Crosswalk = arcpy.GetParameterAsText(1) if Crosswalk == '#' ou non Crosswalk : Crosswalk = "C:UsersDocumentsArcGISTesting123.mdbcao_fips_crosswalk_for_gis" # fournir une valeur par défaut si non spécifié) # Variables locales : Map = "C:UsersDocumentsArcGIS geography	l_2009_us_county	l_2009_us_county_albers_USGS.shp" Final = Carte arcpy.MakeTableView_management(Crosswalk, "fips") #Process: Join Field arcpy.AddMessage("Exécution du champ de jonction") arcpy.JoinField_management(FP", "CNTYID") Passage pour piétons, "fips", "")

La version python que j'utilise est 2.7 et la version arcgis est 10.2. Voici à quoi cela ressemble dans modelbuilder

Message d'erreur : "Traceback (appel le plus récent en dernier) : Fichier "C:/Users/Documents/ArcGIS/Yo2.py", ligne 28, dans arcpy.MakeTableView_management(Crosswalk, "fips") Fichier "C:Program Files ( x86)ArcGISDesktop10.2arcpyarcpymanagement.py", ligne 6306, dans MakeTableView raise e ExecuteError : Échec de l'exécution. Les paramètres ne sont pas valides. ERREUR 000732 : Table d'entrée : Ensemble de données C:UsersDocuments ArcGISTesting123.mdbcao_fips_crosswalk_for_gis n'existe pas ou n'est pas pris en charge Échec de l'exécution (MakeTableView)."


Je n'ai pas utilisé JoinField_management. Chaque fois que je veux rejoindre, j'ai utilisé AddJoin_management. Ils semblent faire des choses très similaires, il est donc possible que l'ajout de jointure fonctionne pour vous.

Je pense que le problème avec votre script est que les données de jointure sont de type Classe d'entités, non pas que Python ait des types forts, mais les deux outils demandent spécifiquement couche ou vue tabulaire. La bonne nouvelle est que c'est facile à faire… utilisez MakeFeatureLayer_Management pour créer un calque.

arcpy.AddMessage("Exécution du champ de jointure") arcpy.MakeFeatureLayer_Management(Map,"Map_Layer") arcpy.JoinField_management("Map_Layer", "CNTYIDFP", Crosswalk, "fips", "")