#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


