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é ?

#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

 

Pied de page des forums

Powered by FluxBB