#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
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
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@ mairie-nanterre.fr
-----------------------------------------------------------------------
Hors ligne