#1 Fri 19 February 2010 22:40
- CharlesR
- Participant occasionnel
- Date d'inscription: 3 Aug 2007
- Messages: 19
Script python de 9.2 à 9.3
Bonjour à tous,
J'Ai un petit problème avec mes scripts depuis que nous avons changer de la version de 9.2 à 9.3.
J'ai corrigé les scripts sachant que la méthose gp.listfeature de la version 9.3 ne fonctionne pas exactement comme dans la version 9.2.
Voici un exemple de l'un de mes scripts:
Quand j'exécute le script, le type d'erreur et NameError sur la variable gdbpath (précisant que cette variable est pas définie)
Code:
#Import COM Dispatch module import arcgisscripting, os #Create the geoprocessor objet gp = arcgisscripting.create() #Set the workspace. gp.Workspace = "U:\Travaux_en_cours\Stephane_Morneau\Projet_GPS\Fichiers_references\Feuillets" if not gp.exists (gp.Workspace): gp.AddError ("Workspace absent") else: try: # Liste des shapefiles représentant les feuilletss fcs = gp.ListFeatureClasses("*","all") gp.AddMessage("Tout va bien jusqu'ici") u = 0 for fc in fcs: u = u + 1 gdbpath = r"U:\Travaux_en_cours\Stephane_Morneau\Projet_GPS\Contrats_Mandats" outfc = gdbpath + "/" + fc gp.addmessage(outfc) try: gp.MakeFeatureLayer(fc, "fc_layer" + str(u)) gp.MakeFeatureLayer("U:\Travaux_en_cours\Stephane_Morneau\Projet_GPS\Fichiers_references\Morcelle\2010\morcelletotal_2010.shp","morcelle_lyr" + str(u)) gp.SelectLayerByLocation("morcelle_lyr" + str(u), "intersect", "fc_layer" + str(u)) gp.CopyFeatures("morcelle_lyr" + str(u), outfc) except: gp.addmessage("Ca ne fonctionne pas") fc = fcs.next() except: gp.AddError ("Rien ne marche") gp.RefreshCatalog(gdbpath)
Est-ce que quelqu'un pourrait m'aider?
Merci beaucoup!
Dernière modification par CharlesR (Sat 20 February 2010 02:33)
Hors ligne
#2 Sun 21 February 2010 19:09
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: Script python de 9.2 à 9.3
Bonsoir,
Je pense à deux pistes :
- la plus probable -> la dernière ligne de commande de votre programme est
gp.RefreshCatalog(gdbpath). Cette commande est hors de la boucle else. c'est à dire que votre variable gdbpath est définie dans la boucle else et donc à l'interprétation du code python, le gdbpath n'a pas de valeur défnie. 2 façons pour que ce code fonctionne: soit lancer la fonction dans la boucle else (pas optimal je pense) soit défiir la variable gdbpath à l'extérieur de la boucle.
- la moins probable : il me semble qu'en version 9.3, la fonction arcgisscripting.create() prend 1 paramètre qui est la version d'Arcgis ->arcgisscripting.create(9.3)
En espérant que cela vous aide
A+
Hors ligne