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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 12 November 2008 12:22

Julie P
Participant actif
Lieu: Pessac
Date d'inscription: 4 Oct 2006
Messages: 107
Site web

[Script] Intersect en Python

Bonjour,

J'essaye d'utiliser la fonction intersect dans un script python, mais je n'arrive pas à la faire faire fonctionner.

Voici mon script :

Code:

# Import system modules
import sys, string, os, arcgisscripting

# Create the Geoprocessor object
gp = arcgisscripting.create()

# Load required toolboxes...
gp.AddToolbox("C:\Program Files\ArcGIS\ArcToolbox\Toolboxes\Analysis Tools.tbx")

gp.workspace = "D:\Travail\Julie\ArcGIS\python\script_tdc\intersection"

gp.addmessage("pret...")
gp.intersect_analysis("tco_tampons ; tc1", "intersection")
gp.addmessage("intersection ok")

Le message "pret..." s'affiche puis j'obtiens un message d 'erreur ("echec de l'exécution").
Lorsque j'utilise l'outil Intersecter dans ArcToolbox avec les mêmes couches, tout fonctionne bien.

J'utilise ArcGis 9.2, licence ArcInfo.
Quelqu'un saurait-il d'où vient le problème?

Merci!

Julie.

Hors ligne

 

#2 Wed 12 November 2008 13:07

freesnowpetrel
Participant assidu
Lieu: Pretoria, Afrique du Sud
Date d'inscription: 1 Mar 2007
Messages: 222

Re: [Script] Intersect en Python

Bonjour,

Une question toute bete : tes 2 couches tco_tampons et tc1 sont bien situees dans ton espace de travail "D:\Travail\Julie\ArcGIS\python\script_tdc\intersection" ?
Essaye de remplacer tes \ par des / ou des \\ dans tes chemins d'acces, ca pause parfois des problemes.
Tu peux aussi ajouter ca ci dessous, tu auras peut-etre un message plus parlant.

Code:

# Import system modules
import sys, string, os, arcgisscripting

try:
    # Create the Geoprocessor object
    gp = arcgisscripting.create()

    # Load required toolboxes...
    gp.AddToolbox("C:\\Program Files\\ArcGIS\\ArcToolbox\\Toolboxes\\Analysis Tools.tbx")

    gp.Workspace = "D:\\Travail\\Julie\\ArcGIS\\python\\script_tdc\\intersection"

    gp.addmessage("pret...")
    gp.Intersect_analysis("tco_tampons ; tc1", "intersection")
    gp.addmessage("intersection ok")

except:
    # If an error occurred while running a tool print the messages
    print gp.GetMessages()

Dans ce cas quel est ton message d'erreur

A+

Rodolphe

Hors ligne

 

#3 Wed 12 November 2008 13:12

Tnarbiv
Participant assidu
Lieu: Véretz
Date d'inscription: 5 Sep 2005
Messages: 392

Re: [Script] Intersect en Python

Bonjour,
voici mes remarques sur ton script :

Code:

# Load required toolboxes...
gp.AddToolbox("C:\Program Files\ArcGIS\ArcToolbox\Toolboxes\Analysis Tools.tbx")

gp.workspace = "D:\Travail\Julie\ArcGIS\python\script_tdc\intersection"

* 1) Normalement la première ligne n'est pas nécessaire car la boîte à outils Analysis Tools est une boîte à outils système donc automatiquement reconnue par ArcGIS. Cette ligne n'est utile à mon sens que lorsque tu créés tes propres boîtes à outils et que tu ne les enregistres pas sous ce répertoire "C:\Program Files\ArcGIS\ArcToolbox\Toolboxes"

* 2) sur ta deuxième ligne concernant le workspace sache que python ne reconnait pas cette syntaxe "\"
il faut soit utiliser "\\" ou "/" ou alors mettre un r devant
ex:

gp.workspace = "D:\\Travail\\Julie\\ArcGIS\\python\\script_tdc\\intersection"
ou
gp.workspace = "D:/Travail/Julie/ArcGIS/python/script_tdc/intersection"
ou
gp.workspace = r"D:\Travail\Julie\ArcGIS\python\script_tdc\intersection"

si tu predns l'exemple de ton script, le chemin d'accès de ta toolbox doit suivre les même règles
gp.AddToolbox("C:\\Program Files\\ArcGIS\\ArcToolbox\\Toolboxes\\Analysis Tools.tbx")
ou
gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Analysis Tools.tbx")
ou
gp.AddToolbox(r"C:\Program Files\ArcGIS\ArcToolbox\Toolboxes\Analysis Tools.tbx")

j'espère que cela t'aidera


Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.

Hors ligne

 

#4 Wed 12 November 2008 13:56

Julie P
Participant actif
Lieu: Pessac
Date d'inscription: 4 Oct 2006
Messages: 107
Site web

Re: [Script] Intersect en Python

Bonjour,

Merci pour vos réponses.

freesnowpetrel :
mes 2 couches sont bien situées dans le bon répertoire.

J'ai modifié mon code suivant vos suggestions :

Code:

# Import system modules
import sys, string, os, arcgisscripting

try:
    # Create the Geoprocessor object
    gp = arcgisscripting.create()
    gp.workspace = "D:\\Travail\\Julie\\ArcGIS\\python\\script_tdc\\intersection"

    gp.addmessage("pret...")
    gp.intersect_analysis("tco_tampons ; tc1", "intersection")
    gp.addmessage("intersection ok")

except:
    # If an error occurred while running a tool print the messages
    print gp.GetMessages()

Dans la fenêtre d'exécution du script, je lis "pret..." puis l'exécution s'arrête, sans message d'erreur. Aucune couche n'est créée dans le répertoire de travail.

Avez-vous des idées?

Encore merci,

Julie.

Hors ligne

 

#5 Wed 12 November 2008 14:05

Tnarbiv
Participant assidu
Lieu: Véretz
Date d'inscription: 5 Sep 2005
Messages: 392

Re: [Script] Intersect en Python

si tu remplaces

Code:

gp.intersect_analysis("tco_tampons ; tc1", "intersection")

par

Code:

gp.intersect_analysis("tco_tampons ; tc1", "intersection.shp")

ça donne quoi ?


Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.

Hors ligne

 

#6 Wed 12 November 2008 14:52

Julie P
Participant actif
Lieu: Pessac
Date d'inscription: 4 Oct 2006
Messages: 107
Site web

Re: [Script] Intersect en Python

Ca donne la même chose.
J'ai aussi essayé de rajouter .shp aux couches de départ, idem.

Sur le site d'ESRI je suis tombée sur des messages de personnes ayant le même problème avec intersect, sans solution ou alors qui ne marche pas chez moi.

Bizarre...

Hors ligne

 

#7 Wed 12 November 2008 15:06

Tnarbiv
Participant assidu
Lieu: Véretz
Date d'inscription: 5 Sep 2005
Messages: 392

Re: [Script] Intersect en Python

as tu pensé à installer les services packs de la version 9.2 ?


Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.

Hors ligne

 

#8 Wed 12 November 2008 15:22

vagvince
Juste Inscrit !
Lieu: Savigny
Date d'inscription: 26 Sep 2007
Messages: 6
Site web

Re: [Script] Intersect en Python

Salut,
Essaie de modifier ton script de cette manière:

Code:

gp.intersect_analysis("tco_tampons.shp;tc1.shp", "intersection.shp")

C'est à dire de rajouter les .shp et d'enlever les espaces entre tes deux couches de départ et le symbole ";", sinon python va croire que ces espaces font partie du nom des couches (et ne pas les trouver dans ton workspace)

Salutation
Vincent

edit : Après une rapide vérification, les espaces ne provoquent pas d'erreurs dans ce cas, désolé

Dernière modification par vagvince (Wed 12 November 2008 15:31)

Hors ligne

 

#9 Wed 12 November 2008 15:33

Julie P
Participant actif
Lieu: Pessac
Date d'inscription: 4 Oct 2006
Messages: 107
Site web

Re: [Script] Intersect en Python

Tnarbiv :
J'ai le service pack 4 d'installé, je vais télécharger le 6. Merci du conseil!

vagvince :
Je viens de tester avec tes modifs, mais le résultat est le même. Merci quand même!

Julie.

Hors ligne

 

#10 Wed 12 November 2008 15:43

Marie S.
Participant actif
Lieu: Paris
Date d'inscription: 30 Nov 2005
Messages: 88

Re: [Script] Intersect en Python

Bonjour
Personnellement je n'utilise pas les workspace vu que mes couches sont toujours à des endroits différents. Donc je crée des variables avec le chemin complet vers les couches et voila un exemple bidon de ce que j'utilise pour réaliser des intersections :

Code:

        
        input = "D:\\bv\\hydro_bv.shp ; D:\\clc\\landuse.shp"
        output = "D:\\result\\hydro_bv_landuse.shp"

        gp.Intersect_analysis(input, output , "ALL", "", "INPUT")

Je te conseillerais donc d'essayer avec les chemins complets dans un premier temps.

Hors ligne

 

#11 Wed 12 November 2008 15:51

vagvince
Juste Inscrit !
Lieu: Savigny
Date d'inscription: 26 Sep 2007
Messages: 6
Site web

Re: [Script] Intersect en Python

Est-ce que tu as essayé de taper ton script directement dans le shell de python en mode interactif ? Parfois ça permet de mettre en lumière certaines erreurs.

Hors ligne

 

#12 Wed 12 November 2008 16:02

Julie P
Participant actif
Lieu: Pessac
Date d'inscription: 4 Oct 2006
Messages: 107
Site web

Re: [Script] Intersect en Python

Bonjour,

Marie S. :
J'ai aussi utilisé cette méthode, sans plus de résultat.
La syntaxe de la commande intersect étant la suivante :
gp.intersect_analysis(couche1;couche2, resultat)
couche1 et couche2 étant les 2 couches en entrée, à séparer par un point virgule.
J'ai donc utilisé le code suivant :

Code:

# Import system modules
import sys, string, os, arcgisscripting

try:
    # Create the Geoprocessor object
    gp = arcgisscripting.create()
    couche1 = "D:\\Travail\\Julie\\ArcGIS\\python\\script_tdc\\intersection\\tco_tampons.shp"
    couche2 = "D:\\Travail\\Julie\\ArcGIS\\python\\script_tdc\\intersection\\tc1.shp"
    couches_entree = couche1 + ";" + couche2
    resultat = "D:\\Travail\\Julie\\ArcGIS\\python\\script_tdc\\intersection\\res.shp"
    
    gp.addmessage("pret...")
    gp.intersect_analysis(couches_entree, resultat)
    gp.addmessage("intersection ok")

except:
    # If an error occurred while running a tool print the messages
    print gp.GetMessages()

J'ai aussi tenté avec 2 paramètres couche1 et couche2 choisis par l'utilisateur, pour vérifier qu'il n'y ait pas de faute dans les chemins d'accès, mais là encore ça n'a pas marché...

vagvince :
Comment fait-on pour taper en mode interactif? Je n'ai jamais essayé cette méthode.

Merci pour votre aide!

Julie.

Hors ligne

 

#13 Wed 12 November 2008 16:07

freesnowpetrel
Participant assidu
Lieu: Pretoria, Afrique du Sud
Date d'inscription: 1 Mar 2007
Messages: 222

Re: [Script] Intersect en Python

Pour ouvrir la fenetre Python :
Demarrer->Programmes->Python2.4->IDLE (Python GUI)
Ensuite tu peux taper ou copier ton script en l'executant ligne apres ligne.

Rodolphe

Hors ligne

 

#14 Wed 12 November 2008 16:27

vagvince
Juste Inscrit !
Lieu: Savigny
Date d'inscription: 26 Sep 2007
Messages: 6
Site web

Re: [Script] Intersect en Python

Pour compléter Rodolphe. Si tu n'as pas ce dossier, double-cliques sur le fichier python.exe qui se trouve normalement sous  c:\\python24
tape ton code ligne par ligne en omettant le  "try:" et le "except:"

Hors ligne

 

#15 Wed 12 November 2008 17:25

Julie P
Participant actif
Lieu: Pessac
Date d'inscription: 4 Oct 2006
Messages: 107
Site web

Re: [Script] Intersect en Python

Victoire!!
J'ai essayé avec le service pack 6 et cette fois-ci ça marche!
Un grand merci à tous pour votre aide et votre rapidité.
Merci aussi pour m'avoir indiqué comment taper en mode interactif. Je sens que ça va m'être utile pour la suite...

Julie.

Hors ligne

 

Pied de page des forums

Powered by FluxBB