Bienvenue! Inscrivez-vous et rejoignez notre communauté :)
  • Login:

Bienvenue sur Forum SIG - Systèmes d'Information Géographique et Géomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre première visite, assurez vous de faire une recherche préalable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des résultats 1 à 4 sur 4
  1. #1

    Date d'inscription
    août 2009
    Messages
    99

    Par défaut Non Résolu : ModelBuilder : itération sur classe d'entités

    Bonjour,

    J'ai réussi à réaliser un script python qui transforme un fichier .txt en .shp. Ce qui me permet de faire une itération fonctionnelle dans ModelBuilder à une "erreur" prêt .

    RAPPEL du fonctionnement d'un itérateur chez ESRI (voir ici). Mais apparemment l'expression "comme modèle" pour signifie utiliser en permanence la première classe d'entité listée pour tous les processus car en résultat j'obtiens bien des classes d'entités de buffers dont le nom reprend bien celui de toutes les classes d'entités présentes dans mon espace de travail mais les données de ces classes d'entités de sortie (%Nom%_Buffer) sont celles de la première classe d'entités listée.

    Je suppose que j'ai raté quelque chose car je ne pense que le développeur d'ESRI soient c**s à ne créer une itération que sur les noms des classes et par sur leur contenu.

    Merci d'avance pour votre aide car cela fait 1 semaine que je tente de résoudre ce problème.
    Miniatures attachées Miniatures attachées MBitération.jpg‎  

  2. #2

    Date d'inscription
    août 2009
    Messages
    99

    Par défaut

    Finalement voici la solution :

    Code:
    # ---------------------------------------------------------------------------
    # CRI_ZT.py
    # Created on: 2012-09-20 08:59:18.00000
    #   (generated by ArcGIS/ModelBuilder)
    # Description: 
    # ---------------------------------------------------------------------------
    
    # Import arcpy module
    import arcpy
    import os
    
    Input_Folder = arcpy.GetParameterAsText (0)
    Output_Folder = arcpy.GetParameterAsText (1)
    Input_Data = os.listdir(Input_Folder)
    #print (Input_Data)
    
    for i, Data in enumerate(Input_Data):
        if Data [-3:] == "shp":
            Entry = str(Input_Folder + os.sep + Data)
            arcpy.DefineProjection_management(Entry, "PROJCS['RGF93_Lambert_93',GEOGCS['GCS_RGF_1993',DATUM['D_RGF_1993',SPHEROID['GRS_1980',6378137.0,298.257222101]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Lambert_Conformal_Conic'],PARAMETER['False_Easting',700000.0],PARAMETER['False_Northing',6600000.0],PARAMETER['Central_Meridian',3.0],PARAMETER['Standard_Parallel_1',44.0],PARAMETER['Standard_Parallel_2',49.0],PARAMETER['Latitude_Of_Origin',46.5],UNIT['Meter',1.0]]")
            arcpy.AddField_management(Entry, "Classe", "SHORT", "", "", "", "", "NON_NULLABLE", "NON_REQUIRED", "")
            arcpy.CalculateField_management(Entry, "Classe", "math.ceil( !M!/3 )", "PYTHON", "")
            Entry_LessType = Data.split(".")
            #print(Entry_LessType[0])
            arcpy.Buffer_analysis(Entry, str(Output_Folder + os.sep + Entry_LessType[0]+"_Buffer"), "2 Meters", "FULL", "ROUND", "NONE", "")
            #print(str(Output_Folder + os.sep + Entry_LessType[0]+"_Buffer"))
    PS : les print ne servent à rien d'autre que verifier les résultats pour trouver les erreurs lorsque je code.

  3. #3
    Admin' Portail
    Date d'inscription
    mars 2005
    Localisation
    Messanges
    Emploi
    Géomaticien
    Organisme
    MSH Dijon
    Âge
    34
    Messages
    4 267

    Par défaut

    Juste un truc, gene t'as expliqué comment utiliser un iterateur http://www.forumsig.org/showpost.php...30&postcount=5 mais cela n'est pas obligatoire si tu n'as pas besoin de i ... en jetant un œil rapide c'est ce qu'il m'a semblé et donc un
    for Data in Input_Data:
    ....
    suffirait.
    "comme j' dis toujours C'est pas parce que c'est sérieux que ça doit être lugubre..." Phyto
    --------------
    Vous avez le droit de poster sur différents forums mais prévenez nous qu'on ne perde pas de temps à faire les mêmes réponses !
    --------------
    Merci de respecter les règles du forum
    Un avis, une remarque sur la nouvelle version du PortailSIG, cliquez ici
    Vous souhaitez devenir rédacteur du PortailSIG, contactez moi

  4. #4

    Date d'inscription
    août 2009
    Messages
    99

    Par défaut

    J'ai retiré quelques lignes de vérification dont une emploie i pour savoir sur quelle donnée il y a une erreur au cas où. Mais je suis d'accord, avec le code ci-dessus, enumerate n'est pas utile.

 

 

Discussions similaires

  1. [ArcGIS 10.x] Classe d'entites vers shp
    Par mathilde dans le forum Assistance Technique
    Réponses: 12
    Dernier message: 01/03/2013, 09h56
  2. [ArcGIS 10.x] ModelBuilder : itération sur fichiers d'entrée et nom de sortie en fonction de l'entr
    Par Supernul dans le forum Assistance Technique
    Réponses: 4
    Dernier message: 17/09/2012, 09h09
  3. [ArcGIS 9.x] ModelBuilder : récupérer nombre d'entités et l'ajouter à une table
    Par Guts dans le forum Programmation
    Réponses: 0
    Dernier message: 23/08/2011, 22h07
  4. [ArcGIS 10.x] Modelbuilder itération
    Par electron dans le forum Assistance Technique
    Réponses: 0
    Dernier message: 13/04/2011, 10h15
  5. [ArcGIS 9.x] Modelbuilder-Itération sur les valeurs de champ
    Par electron dans le forum Assistance Technique
    Réponses: 5
    Dernier message: 01/03/2011, 15h32

Les tags pour cette discussion

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •