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

GEODATA DAYS 2024

#1 Thu 13 December 2007 15:13

kariboo
Participant actif
Date d'inscription: 18 Apr 2006
Messages: 53

Traitement à la chaîne dans arcgis/arcinfo

Bonjour à tous,

Lorsque je dois effectuer des traitements "à la chaîne" (autrement dit le même traitement sur une multitude de couches), j'ai pris l'habitude d'utiliser le ModèleBuilder de la toolbox.
Or, à ma connaissance, le modèle n'est pas une automatisation totale du traitement, car il ne peut traiter qu'une couche à la fois. (en gros, il conserve les paramètres de géotraitement, mais il faut toujours rester présent pour changer la couche en entrée du modèle..... et le faire autant de fois qu'il y a de couches à traiter !).

Je cherche à automatiser totalement mes traitements à la chaîne, c'est à dire que je voudrais pouvoir définir à l'avance l'ensemble des couches à traiter, lancer la moulinette, et récupérer l'ensemble des couches traitées en sortie (une boucle quoi). J'ai quelques notions de vba, mais pas suffisamment pour créer toute seule un programme.....
Quelqu'un pourrait-il m'aiguiller pour réaliser ceci, ou me proposer des solutions plus simples ?

Merci d'avance !

Dernière modification par kariboo (Thu 13 December 2007 15:13)

Hors ligne

 

#2 Thu 13 December 2007 15:30

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: Traitement à la chaîne dans arcgis/arcinfo

Hello,

Pour l'instant, et sous Arcview 9.2 :
1. Clic droit sur le modèle dans la Toolbox
2. sélectionner "Par Lot..."

En espérant que ca puisse aider,
Robin.

Hors ligne

 

#3 Thu 13 December 2007 16:29

kariboo
Participant actif
Date d'inscription: 18 Apr 2006
Messages: 53

Re: Traitement à la chaîne dans arcgis/arcinfo

Merci Robin,
Mais quand je fais clic-droit sur le modèle et que je sélectionne "par lot...", la boîte s'affiche et me dit "cet outil n'a pas de paramètre"....
Je ne vois pas trop ce que je dois faire à partir de ça....?

Hors ligne

 

#4 Thu 13 December 2007 16:48

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: Traitement à la chaîne dans arcgis/arcinfo

Nomal, quand tu crée un modele, tu as des entrées et des sorties, ainsi que des tables intermédiaires.

Tes tables en entrée/sortie (et intermédiaires que tu souhaite conserver) doivent être signalées comme paramètres du modèle (éléments variables que tu définis)
Un "P" doit être affiché a côté de la couche dont tu va définir le nom. Pour définir un élément comme paramètre (que tu définis), il faut faire un clic droit sur l'élément et le sélectionner comme paramètre. Quand tu lancera ton modèle par lot, il faudra désigner les emplacements et les noms de tes couches paramétriques (entrée, sortie ou intermédiaire).

Ci dessous une image démonstrative :

[img]http://img212.imageshack.us/img212/4589/exportgraphictk7.jpg[/img]

Hors ligne

 

#5 Fri 14 December 2007 07:39

Wlodaz
Participant occasionnel
Lieu: Nanterre
Date d'inscription: 6 Sep 2005
Messages: 43

Re: Traitement à la chaîne dans arcgis/arcinfo

Bonjour,

Vous trouverez ci-dessous un exemple de script Python qui permet de copier une classe d'entité d'une Géodatabase vers une autre. Ce script se répète autant de fois qu'il y a de couche dans le champ de la table spécifiée en paramètre.

Ce script est à adapter à votre problématique.

Sauf erreur de ma part, la version 9.2 d'ArcGis apporte des fonctions de récursivité ne nécessitant pas (ou peu) de développement.

Code:

# --------------------------------------------------------------------------
# Test.py
# Created on: lun. mars 26 2007 11:55:01 
#   (generated by ArcGIS/ModelBuilder)
# Usage: 
# --------------------------------------------------------------------------

# Import system modules
import sys, string, os, win32com.client

# Create the Geoprocessor object
gp = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1")

# Recuperation des arguments
InputFolder = sys.argv[1]
InputMetier = sys.argv[2]
OutputFolder = sys.argv[3]
OutputGDB = sys.argv[4]
OutputTopologie = sys.argv[5]
InputMCD = sys.argv[6]

# Definition du repertoire en sortie pour la creation des fichiers de couche   
if gp.exists(OutputFolder + "/" + OutputGDB):

    gp.delete(OutputFolder + "/" + OutputGDB)

# Creation d'une géodatabase personnelle...
gp.CreatePersonalGDB(OutputFolder, OutputGDB)

OutputWorkspace = OutputFolder + "\" + OutputGDB + ".mdb"
gp.workspace = OutputWorkspace

# Creation du Jeu de classes d'entites...
gp.CreateFeatureDataset(OutputWorkspace, OutputTopologie)

# Recuperation du nom du premier champ de la table InputImavueMCD
# C'est le champ qui contient la liste des couches geographiques à traiter
fields = gp.ListFields(InputMCD)
field = fields.Next()
fieldName = field.name

rows = gp.SearchCursor(InputMCD)
row = rows.Next()

while row:
    
    value = str(row.GetValue(fieldName))
    gp.AddMessage("Copie de la classe d'entite : " + value)
    gp.FeatureClassToFeatureClass(InputFolder + "/" + InputMetier + "." + value, OutputFolder + "/" + OutputGDB + ".mdb/" + OutputTopologie, value)
    row = rows.Next()

Cordialement,

Christophe WLODAZ
-----------------------------------------------------------------------
Cellule Géomatique
Direction des Systèmes d'Information et Télécommunications
Mairie de NANTERRE
-----------------------------------------------------------------------
88/118 rue du 8 mai 1945
BP 1406 92014 NANTERRE Cedex
Tél : 01 47 29 59 62
Fax : 01 47 29 49 08
christophe.wlodaz@texte-a-enlever.mairie-nanterre.fr
-----------------------------------------------------------------------

Hors ligne

 

Pied de page des forums

Powered by FluxBB