Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#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

Franck B
Membre
Lieu: PACA
Date d'inscription: 6 Sep 2005
Messages: 1382
Site web

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

 

Pied de page des forums

Powered by FluxBB