Suite

Répéter les étapes basées sur différents champs à l'aide de ModelBuilder ?

Répéter les étapes basées sur différents champs à l'aide de ModelBuilder ?


J'ai construit un modèle pour interpoler la pollution de l'air à partir de 40 stations d'enregistrement en utilisant IDW.

Les résultats sont ensuite exportés vers une moyenne pour les divisions de recensement.

Je dois répéter ce processus des centaines de fois par mois pendant 15 ans pour cinq types différents de pollution de l'air.

J'ai toutes les données par année comme nouveau champ dans le fichier des stations d'enregistrement.

Tableau:

Recording_Station 03jan 03fév 03mar 03avr 03mai 03juin 03juil… 1 26,5 27,5 22,2 32,3 34,5 45,4 55,4 2 19,1 12,2 45,3 33,3 36,6 55,4 65,5 3 11,1 15,6 44,4 34,4 66,6 55,4 44,6

etc.

Comment puis-je réexécuter le modèle pour chaque champ sans les modifier manuellement à chaque fois ?


Il n'y a pas d'outil Itérer les champs dans ModelBuilder.

Je peux penser à deux solutions de contournement possibles:

  1. Modifiez le modèle pour qu'il s'exécute en tant que script Python. Définissez une liste des champs que vous souhaitez utiliser et définissez une boucle pour parcourir chacun d'entre eux et exécuter les fonctions IDW/export.

    J'irais avec celui-ci personnellement, mais ce serait (beaucoup) plus facile avec quelques connaissances en Python.

    Exemple d'itération dans la liste des champs :

    champs = ['03jan', '03feb', '03mar'] # etc. pour le champ dans les champs : # votre code Python IDW existant ici # remplacez toutes les instances du nom de champ spécifique, par ex. "03jan" # avec la variable *champ*

    Une fois que vous êtes convaincu que cela fonctionne, vous pouvez générer automatiquement une liste de tous les champs d'une classe d'entités à l'aide de l'arcpy Champs de liste une fonction. Assurez-vous que vous n'incluez pasStation_enregistrementdans les champs sur lesquels vous effectuez une itération (ce qui provoquerait des résultats étranges et potentiellement un plantage) :

    field = ListFields(yourFeatureClass) fields.remove('Recording_Station') # répétez pour tous les autres champs dont vous n'avez pas besoin pour le champ dans les champs : # votre code Python IDE existant ici [etc.]
  2. Définissez le nom du champ en tant que paramètre de modèle dans votre ModelBuilder. Utilisez le traitement par lots pour exécuter l'outil des centaines de fois automatiquement.

    C'est plus fastidieux, car vous devrez saisir manuellement (des centaines de fois… !) les noms des champs dans les paramètres du lot, mais cela vous permet d'exécuter l'analyse plusieurs fois sans altérer significativement le modèle ou avoir besoin de connaître Python.


Il semble que vous ayez besoin d'imbriquer des itérateurs ; cela ne peut être fait qu'en plaçant un modèle dans un autre. C'est un peu pénible à faire, mais cela peut être fait. Votre modèle interne exécutera l'IDW et résumera. Votre modèle externe alimentera les colonnes sur lesquelles baser l'IDW. Le modèle externe le fera en sélectionnant des noms de colonnes dans une liste que vous créerez, puis en itérant sur cette liste. Vous créez la liste en ouvrant le dbf du fichier de formes, en y copiant les étiquettes de colonne, en copier-coller (transposer) dans Excel. Ensuite, utilisez « éliminer les doublons » dans Excel pour vous assurer que les noms sont tous uniques. Ensuite, enregistrez cet excel au format CSV. Ajoutez ce CSV au modèle de sortie. Ajouter un itérateur-(itérer par liste). Appelez la sortie de cette liste 'fieldname' ou similaire.


Essayez peut-être d'itérer tous les champs à l'aide de l'outil "Itérer le champ" dans Model Builder.

Il effectuera tous les champs d'une classe d'entités.


Vous pouvez explorer en utilisant la fonction de traitement par lots sur le modèle. Faites un clic droit (voir l'image ci-dessous) sur le modèle dans votre boîte à outils et sélectionnez 'Lot'. À partir de là, vous pouvez ajouter plusieurs instances et chacune passera par le modèle. Malheureusement, je ne connais aucun moyen de saisir facilement le contenu dans « Ajouter une ligne ». Ainsi, vous devrez entrer les centaines d'enregistrements pour chaque mois.


Voir la vidéo: modelbuilder arcgis