#1 Fri 19 April 2019 21:37
- louloupzh18
- Participant occasionnel
- Lieu: Le Mans
- Date d'inscription: 9 Apr 2015
- Messages: 11
[ArcGIS] - Script jointure CSV/Shapes
Bonjour à tous,
J'essaye actuellement de créer un script dans ArCatalog qui me permettra d'importer des shapes ainsi que des CSV, pour pouvoir faire une jointure entre les deux. Or, je ne comprend pas bien comment paramétrer tout ca :
Données de base :
- 3 fichiers .csv
- 3 fichiers shapes
Voici le code que j'utilise :
Code:
import arcpy repertoire = arcpy.GetParameterAsText(0) destination = arcpy.GetParameterAsText(1) csvfile1 = arcpy.GetParameterAsText(2) csvfile2 = arcpy.GetParameterAsText(3) csvfile3 = arcpy.GetParameterAsText(4) Shape1 = destination + "\\Shape1_shp.shp" Shape2 = destination + "\\Shape2_shp.shp" Shape3 = destination + "\\Shape3_shp.shp" # Process: Ajouter une jointure arcpy.AddJoin_management("Shape3", "OBJECTID", csvfile1, "OBJECTID", "KEEP_ALL") arcpy.AddJoin_management("Shape2", "OBJECTID", csvfile2, "OBJECTID", "KEEP_ALL") arcpy.AddJoin_management("Shape1", "REFERENCE", csvfile3, "REFERENCE", "KEEP_ALL") Shape3_shp = destination + "\\Shape3_shp_shp.shp" Shape2_shp = destination + "\\Shape2_shp_shp.shp" Shape1_shp = destination + "\\Shape1_shp_shp.shp"
Pourtant, a chaque fois que je lance le script dans ArcCatalog, une erreur m'est remontée :
Traceback (most recent call last):
File "code.py", line 26, in <module>
arcpy.AddJoin_management(shape1, "OBJECTID", csvfile1, "OBJECTID", "KEEP_ALL")
File "c:\program files (x86)\arcgis\desktop10.2\arcpy\arcpy\management.py", line 5632, in AddJoin
raise e
ExecuteError: Échec de l’exécution. Les paramètres ne sont pas valides.
The value cannot be a feature class
ERROR 000840: La valeur ne correspond pas à un Couche raster.
ERROR 000840: La valeur ne correspond pas à un Couche du catalogue d’images.
ERROR 000840: La valeur ne correspond pas à un Couche de mosaïque.
WARNING 000970: Le champ de jointure OBJECTID dans la table de jointure shape1 n’est pas indexé. Pour améliorer les performances, nous vous recommandons de créer un index pour le champ de jointure dans la table de jointure.
ERROR 000728: Le champ OBJECTID n’existe pas dans la table
Échec de l’exécution de (AddJoin).
Échec de l’exécution de (code).
Avez-vous une idée de comment je dois procéder ? Savez-vous pourquoi ce type d'erreur m'est remonté à chaque fois ? Car finalement ca ne dit pas que mon code est faux mais plutôt que ce n'est pas supporté ...
J'oubliais, que doit-on changer dans les paramètres du script pour importer un CSV ? J'ai tenté pas mal de chose en pensant que ca venait de là mais j'obtient toujours cette même erreur . Vous trouverez en PJ les paramètres que j'ai choisis pour le moment...
Merci d'avance pour votre aide,
Louloupzh18
Hors ligne
#2 Tue 23 April 2019 09:17
- Arnaud_D
- Membre
- Date d'inscription: 9 Mar 2009
- Messages: 88
Re: [ArcGIS] - Script jointure CSV/Shapes
Bonjour,
Le problème de ton script c'est que tu utilise directement un shape ce qui n'est pas possible.
L'entrée doit être une couche d'entités, une vue tabulaire ou une couche raster possédant une table attributaire ; ce ne peut pas être une classe d'entités ou une table.
Regarde l'aide en ligne tu trouveras un exemple de code que tu pourras adapter:
http://desktop.arcgis.com/fr/arcmap/10. … d-join.htm
Arnaud DESSENT
Hors ligne