#1 Mon 17 March 2014 07:04
- Laurence Lauvier
- Participant occasionnel
- Date d'inscription: 11 Jan 2012
- Messages: 15
ArcGIS 10.1 : python et AddJoins_management
Bonjour à tous,
Je rencontre un problème avec ArcGis et je ne sais à quoi l'attribuer. Je crée des classes d'entité dans une boucle et je cherche à rapprocher celles-ci au moyen de la fonction AddJoins_management. Lorsque j'utilise cette fonction dans la fenêtre python, cela fonctionne parfaitement. Lorsque je la place dans un script que j'importe j'ai ce message d'erreur:
Traceback (most recent call last):
File "...\programme.py", line 107, in <module>
arcpy.AddJoin_management(base1, champ 1, base2, champ 2, "KEEP_ALL")
File "c:\program files\arcgis\desktop10.1\arcpy\arcpy\management.py", line 5351, in AddJoin
raise e
ExecuteError: Failed to execute. Parameters are not valid.
The value cannot be a feature class
ERROR 000840: The value is not a Raster Layer.
ERROR 000840: The value is not a Raster Catalog Layer.
ERROR 000840: The value is not a Mosaic Layer.
WARNING 000970: The join field champ 1 in the join table table 1 is not indexed. To improve performance, we recommend that an index be created for the join field in the join table.
Failed to execute (AddJoin).
Je précise que la base 2 a un nom variable qui est modifié en bouclant des les valeurs qu'elle peut prendre. Je travaille sous vista 32bits néanmoins je rencontre ce problème aussi sous windows 7 64 bits.
Avez-vous déjà rencontré ce problème ? Savez-vous d'où il vient et comment le résoudre?
En vous remerciant par avance,
Laurence
Hors ligne
#2 Mon 17 March 2014 08:36
Re: ArcGIS 10.1 : python et AddJoins_management
Bonjour,
arcpy.AddJoin_management(base1, champ 1, base2, champ 2, "KEEP_ALL")
Vos identificateurs de champs sont vraiment "champ 1" et "champ 2" ?
Des identificateurs de variables avec des espaces, cela semble bizarre... et des noms de champs avec des espaces, cela est bizarre aussi...
A+
Franck
Hors ligne
#3 Mon 17 March 2014 11:30
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: ArcGIS 10.1 : python et AddJoins_management
Bonjour,
J'ai déjà buté sur cette erreur qui n'est vraiment pas explicite. En fait lorsque l'on travaille sur des données en python, il faut suivant les opérations que l'on réalise, travailler sur une couche temporaire.
je m'explique, il en faut pas faire
Code:
shape1="c:/dossier/monshape1.shp" arcpy.AddJoin_management(shape1,....)
mais
Code:
shape1="c:/dossier/monshape1.shp" var1="unNomAuHazard" arcpy.MakeFeatureLayer_management(shape1,var1) arcpy.AddJoin_management(var1,....)
et si c'est dans une boucle il faut à chaque fois à la fin de la boucle supprimer la couche temporaire (si elle porte le même nom)
Code:
arcpy.Delete_management(var1)
Nicolas GRANIER
Hors ligne
#4 Mon 17 March 2014 22:25
- Laurence Lauvier
- Participant occasionnel
- Date d'inscription: 11 Jan 2012
- Messages: 15
Re: ArcGIS 10.1 : python et AddJoins_management
Bonsoir,
Merci à tous les deux pour ces réponses.
Je ne connais que très peu python aussi j'ai du mal à identifier ce dont Nicolas parle. L'un des fonds de carte est issu d'un FeatureClassToFeatureClass_conversion et l'autre d'un FeatureClassToFeatureClass_conversion (après une jointure JoinField_management entre un fonds de carte et une table).
J'ai du mal à identifier ici quel élément je dois mettre dans shape1, var1 et dans arcpy.AddJoin_management(var1,....). Ai-je donné suffisamment d'élément pour avoir un peu plus de précision sur la façon dont je dois procéder?
Merci d'avance,
Laurence
Hors ligne
#5 Tue 18 March 2014 09:28
- ACJV
- Juste Inscrit !
- Date d'inscription: 18 Mar 2014
- Messages: 5
Re: ArcGIS 10.1 : python et AddJoins_management
Bonjour,
J'ai le même problème en travaillant par contre sur une géodatabase.
Pouvez vous m'expliquer comment je dois procéder (novice en Python) svp?
Amandine
Hors ligne
#6 Wed 19 March 2014 12:44
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: ArcGIS 10.1 : python et AddJoins_management
Bonjour,
Je vais essayer de détailler ce problème.
En passant par un script Python, Arcgis ne peut pas faire de gros traitements en pointant sur un fichier shape (c'est mon analyse et ma conclusion). En fait le problème est assez aléatoire, sur un exercice donné en séance à des élèves, sur certains poste c'est passé sans problème et sur d'autres postes ça affiche le message "erreur raster...". La solution pour que ça marche à chaque coup c'est de passer par une couche temporaire (en lien avec votre shape) et de travailler dessus (comme je l'ai indiqué dans le post précédent).
Concernant votre cas : Dès que votre outil quelqu'il soit (FeatureClassToFeatureClass_conversion, ou JoinField_management ) doit utiliser directement un fichier shape c'est à dire que vous pointer vers c:/mesDossiers/monshape.shp, vous prenez le risque d'avoir le message d'erreur "erreur raster..." Pour cela vous devez passer par une couche temporaire et travailler uniquement avec celle-ci.
Si vous avez la possibilité, postez une partie de votre code, un exemple concret sera toujours plus explicite
Pour ACJV, je n'ai jamais fait l'expérience sur une géodatabase.
Dernière modification par Nicolas Granier (Wed 19 March 2014 12:44)
Hors ligne