Suite

Créer des géodatabases fichier dans plusieurs dossiers à l'aide de l'itérateur ?


Spécifications du logiciel : Licence avancée ArcMap 10.2.1.

J'ai un seul dossier, appelons-le "Traitement". Dans ce dossier se trouvent 15 dossiers vides. Appelons ces "Output_1" jusqu'à "Output_15". Il n'y a rien d'autre dans le dossier "Traitement".

J'essaie d'utiliser ModelBuilder pour créer une géodatabase fichier vide dans chaque dossier de sortie portant le même nom que le dossier. c'est-à-dire que dans le dossier "Output_1", le fichier gdb s'appellera "Output_1.gdb".

Je pensais que ce serait très simple en utilisant un itérateur "Itérer l'espace de travail", où l'entrée est le dossier "Traitement".

Je pourrais ensuite utiliser l'espace de travail de sortie de l'itérateur comme emplacement du fichier gdb dans l'outil "Créer un fichier gdb", et le %Name% de l'itérateur comme nom du fichier dgb.

Cependant, l'outil "Créer un fichier GDB" n'acceptera pas la sortie de l'espace de travail de l'itérateur comme emplacement du fichier gdb.

J'ai essayé de modifier les paramètres de l'itérateur afin que le type d'espace de travail qu'il recherche ne soit que des dossiers, mais cela ne résout pas ce problème.

J'ai également essayé de changer la variable d'entrée (appelée "Traitement") entre un "dossier" et un "espace de travail". Cela ne fait aucune différence.

Y a-t-il quelque chose de fondamental qui me manque ? Ou est-ce un bug ?

Si j'exécute d'abord uniquement la partie itérateur du modèle, je suis alors en mesure de connecter la sortie "wokspace" comme emplacement d'entrée pour l'outil "Créer un fichier gdb". Je peux ensuite exécuter uniquement l'outil "Créer un fichier gdb", mais cela ne fonctionne évidemment que pour le dernier dossier lu par l'itérateur.


J'ai réussi à le faire fonctionner en :

  1. en précisant que Espace de travail est un Condition préalable à Créer un fichier GDB
  2. En utilisant %Name%\%Name% comme nom de fichier GDB, ne pas dans le cadre de l'emplacement

Cela donne le résultat souhaité :


C'est ainsi que j'ai fini par le faire, en utilisant une variable de liste pour les 15 dossiers comme entrée. Et le type Parse pour renvoyer le "Nom".


Voir la vidéo: What is the Difference Between a Pointer and a Reference C++ (Octobre 2021).