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

Printemps des cartes 2024

#1 Tue 18 September 2012 09:40

supernul
Participant actif
Date d'inscription: 31 Jan 2010
Messages: 103

[ARCGIS 10] ModelBuilder : itération sur fichier txt

Bonjour à tous,

je précise tout de suite que j'ai posté la même question sur forumsig ici :

http://www.forumsig.org/showpost.php?p= … ostcount=1

mais je me permets de poste également ici dans l'espoir qu'un membre de Georezo qui n'ait pas vu le sujet sur forumsig aurait une idée.

Je dispose de 800 fichiers .txt qui comportent des coordonnées XY et plutôt que de passer plusieurs mois à faire le même traitement sur chaque, j'ai créé un modèle avec ModelBuilder. Le modèle fonctionne bien si je rentre le nom du fichier en entrée mais je voudrais aller plus loin dans l'automatisation en utilisant un itérateur (itérateur fichier).

Cependant la sortie de cet itérateur ne peut être utiliser que comme condition dans le modèle et pas comme entrée.

Ci-dessous le début de mon modèle :
[img]http://www.forumsig.org/attachment.php?attachmentid=5218&stc=1&thumb=1&d=1347616955[/img]

Merci d'avance.

EDIt modération : fichier image ajouté > il faut être inscrit sur FS pour y accéder.

Dernière modification par Robin (Tue 18 September 2012 10:21)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Tue 18 September 2012 17:14

Squid
Participant actif
Date d'inscription: 2 Apr 2010
Messages: 109

Re: [ARCGIS 10] ModelBuilder : itération sur fichier txt

-Peut être que vous pouvez créer une variable de type fichier texte.
-Passer cette variable en paramètre du modèle
-Puis faire propriété en cliquant gauche dessus. La mettre en valeur multiple.
-Ajouter itérer fichiers
-Relier la première variable multiple au module itérer
-Nommer la sortie "Nom" (du fichier texte lu) par exemple "nom fichier lu"
-Puis dans votre Model builder initial entrer le chemin du dossier où se trouvent les fichiesr suivi du nom de la variable entre %:
Chemin\du\dossier\%nom fichier lu% (ajouter éventuellement l'extention du fichier à la fin)

Dernière modification par Squid (Tue 18 September 2012 17:25)

Hors ligne

 

#3 Wed 19 September 2012 08:51

Nicolas Granier
Participant assidu
Date d'inscription: 19 Apr 2007
Messages: 271

Re: [ARCGIS 10] ModelBuilder : itération sur fichier txt

Bonjour,
perso je procèderai de cette manière. Une fois que le modèle fonctionne bien pour un fichier txt uniquement, je l'exporterai en python.
Dans le script généré, il "suffira" d'écrire une boucle qui pointe vers le dossier contenant tous les fichiers txt, de rajouter une variable pour le nom des fichiers à générer en sortie et le tour est joué (wink).
Pas si simple si on ne connait rien au python, mais je pense qu'il sera beaucoup plus rapide de se mettre à python que de passer les 800 fichiers TXT.

A+

Hors ligne

 

#4 Wed 19 September 2012 17:42

supernul
Participant actif
Date d'inscription: 31 Jan 2010
Messages: 103

Re: [ARCGIS 10] ModelBuilder : itération sur fichier txt

J'ai exploré d'autres pistes, notamment la transformation du fichier txt en shp grâce à python et shapefile. Ceci me donne un résultat inattendu mais un résultat tout de même.

Ce résultat me conduit à la solution de Nicolas : modèle pour un fichier dans Arcgis, export en python et écriture d'une boucle propre.

Merci de vos réponses.

PS : Je ne sais pas comment ils font chez ESRI mais mon script transforme un txt en shp plus rapidement que leur outil "générer une couche tabulaire".

Hors ligne

 

#5 Thu 20 September 2012 08:07

Nicolas Granier
Participant assidu
Date d'inscription: 19 Apr 2007
Messages: 271

Re: [ARCGIS 10] ModelBuilder : itération sur fichier txt

PS : Je ne sais pas comment ils font chez ESRI mais mon script transforme un txt en shp plus rapidement que leur outil "générer une couche tabulaire".


Sur de lourds traitements un script python (utilisant arcpy) exécuté en mode console est bien plus rapide qu'un traitement Arcgis - Model Builder équivalent.
J'ai l'impression que l'environnement Arcgis "bride" le processus, mais avec l'avantage d'apporter une plus grande stabilité.
Mais ça c'est un autre sujet.
A+

Hors ligne

 

#6 Wed 12 November 2014 13:39

Sprumont F
Juste Inscrit !
Date d'inscription: 1 Dec 2009
Messages: 8

Re: [ARCGIS 10] ModelBuilder : itération sur fichier txt

Bonjour,

J'ai le meme probleme (iteration avec des fichiers TXT dans model builder) et je ne connais rien a Python.

J'ai utilisé  model builder pour faire un modèle qui fonctionne avec un fichier (dans ce cas, conversion de plusieurs txt d'un dossier en .lyr).

J'ai fait l'export en python mais je ne sais pas comment creer cette fameuse boucle...

Des infos a me donner ?

Hors ligne

 

#7 Wed 12 November 2014 16:14

Nicolas Granier
Participant assidu
Date d'inscription: 19 Apr 2007
Messages: 271

Re: [ARCGIS 10] ModelBuilder : itération sur fichier txt

Bonjour,
poster l'exemple du script fonctionnant sur un fichier texte et je vous donnerai les lignes à rajouter.
A+
Nicolas GRANIER

Hors ligne

 

#8 Wed 12 November 2014 16:48

Sprumont F
Juste Inscrit !
Date d'inscription: 1 Dec 2009
Messages: 8

Re: [ARCGIS 10] ModelBuilder : itération sur fichier txt

Bonjour,

Merci pour la rapidite de votre reponse.
Ci dessous, le code python apres l'export a partir du model builder.
Les fichiers textes sont dans le dossier "3353301058935391" ("C:\\Users\\francois.sprumont\\Desktop\\paola\\3353301058935391").

Merci pour votre aide.

francois

Code:

# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------
# python.py
# Created on: 2014-11-12 12:36:54.00000
#   (generated by ArcGIS/ModelBuilder)
# Description: 
# ---------------------------------------------------------------------------

# Import arcpy module
import arcpy


# Local variables:
v353301058935391_0_txt = "C:\\Users\\francois.sprumont\\Desktop\\paola\\3353301058935391\\353301058935391_0.txt"
popo = "popo"
popo_lyr = "C:\\Users\\francois.sprumont\\Desktop\\paola\\test\\popo.lyr"

# Process: Make XY Event Layer
arcpy.MakeXYEventLayer_management(v353301058935391_0_txt, "x", "y", popo, "GEOGCS['GCS_WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137.0,298.257223563]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]];-400 -400 1000000000;-100000 10000;-100000 10000;8.98315284119522E-09;0.001;0.001;IsHighPrecision", "")

# Process: Save To Layer File
arcpy.SaveToLayerFile_management(popo, popo_lyr, "", "CURRENT")

Hors ligne

 

#9 Wed 12 November 2014 17:24

Nicolas Granier
Participant assidu
Date d'inscription: 19 Apr 2007
Messages: 271

Re: [ARCGIS 10] ModelBuilder : itération sur fichier txt

Alors voici, je n'ai pas testé mais l'idée est là.

Code:

# -*- coding: utf-8 -*-
import arcpy
import os #import de la librairie de l OS qui permet d acceder a tout un tas de fonctions standarts

dossier = "C:/Users/francois.sprumont/Desktop/paola/3353301058935391" #dans le doute entre \ et / mettre toujours /

#creation de la boucle
compteur=0
for fichierTXT in os.listdir(dossier) : #os.listdir permet de lister tous le contenu du dossier, attention il ne doit y avoir que des txt
    
    #a partir d ici on fait le traitement pour un fichier texte a la fois. il suffit d amenager un peu les variables
    
    #variable en entree
    pathFichierTXT = dossier + "//" + fichierTXT 
    compteur+=1
    print compteur
    print pathFichierTXT
    
    # variable de sortie temporaire 
    popo="popo" + str(compteur)  #le rajout du compteur dans le nom permet de ne pas reprendre toujours le meme nom du fichier temporaire de sortie et evite les problemes
    
    #traitement
    arcpy.MakeXYEventLayer_management(pathFichierTXT, "x", "y", popo, "GEOGCS['GCS_WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137.0,298.257223563]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]];-400 -400 1000000000;-100000 10000;-100000 10000;8.98315284119522E-09;0.001;0.001;IsHighPrecision", "")
    
    #export
    repertoireExport = "C:/Users/francois.sprumont/Desktop/paola/test"
    fichierExport = repertoireExport +"//" + fichierTXT[:len(fichierTXT)-3] +"shp" # on cree un nom de sortie et on remplace l extension txt par shp
    arcpy.CopyFeatures_management (popo,fichierExport) #copyFeature produit un shp, alors que saveToLayerFile produit un lyr, l un ou l'autre doit marcher

A lancer depuis la console ou depuis la fenêtre python d'argis, pour ma part je vous conseillerai d'enregistrer ce script dans un fichier py et de l'executer dans la console

Dernière modification par Nicolas Granier (Wed 12 November 2014 17:27)

Hors ligne

 

#10 Thu 13 November 2014 11:07

Sprumont F
Juste Inscrit !
Date d'inscription: 1 Dec 2009
Messages: 8

Re: [ARCGIS 10] ModelBuilder : itération sur fichier txt

Bonjour,

Ca marche ! Encore merci pour le script et les annotations, c'est super !

Evidemment cette solution me satisfait mais ne me comble pas totalement.

1) a quoi sert le model builder si on est obligé de passer par un script python
2)Comment font ceux qui n'y connaissent rien en Python (entre autre, moi).

Je crois que j'ai pas trop le choix et que je vais devoir m'investir un peu...

Encore merci

Hors ligne

 

#11 Thu 13 November 2014 11:16

Nicolas Granier
Participant assidu
Date d'inscription: 19 Apr 2007
Messages: 271

Re: [ARCGIS 10] ModelBuilder : itération sur fichier txt

Encore merci pour le script et les annotations, c'est super !


Les annotations c'est pour vous lancer vers la solution qui vous comblera totalement.

1) a quoi sert le model builder si on est obligé de passer par un script python


Attention, la solution que je propose ne signifie pas qu'il n'est pas possible de le faire avec le modèle builder, je pense d'ailleurs que c'est possible.
Dans mon utilisation le modèle builder sert à deux choses :
- enchainer des traitements simples (ajout de champ, calcul de champ, réalisation de jointure...)
- Obtenir le nom de l'outil pour l'utiliser dans un script python en exportant le modèle.

Bon courage pour la suite
Nicolas GRANIER

Dernière modification par Nicolas Granier (Thu 13 November 2014 11:16)

Hors ligne

 

#12 Tue 18 November 2014 12:49

Sprumont F
Juste Inscrit !
Date d'inscription: 1 Dec 2009
Messages: 8

Re: [ARCGIS 10] ModelBuilder : itération sur fichier txt

pour ceux que ca intéressent, voici la solution en utilisant le model Builder.

Une des astuces: ne pas utiliser "files iterator" mais plutot "table iterator" et faire attention avec les noms de fichier (voir image).

Cette solution avec model builder est relativement simple et permet de se passer de la console Python.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

Pied de page des forums

Powered by FluxBB