ArcGIS ModelBuilder peut-il ouvrir un fichier Excel pour une édition manuelle, puis réintroduire ces modifications dans le modèle?

10

J'ai été chargé de créer un modèle à l'aide d'ArcGIS ModelBuilder, qui exécute initialement quelques tâches de géotraitement, avant de joindre ensuite un tableau Excel au résultat de ces géotraitements. Cependant, le modèle doit réellement ouvrir le fichier Excel en premier, pour que l'utilisateur le modifie manuellement, avant que l'utilisateur enregistre ensuite ses modifications et ferme le fichier. Il est alors prévu que le modèle joigne ce fichier Excel à la table attributaire d'un ensemble de données (qui fait toujours partie du modèle) avant que le modèle ne continue avec un certain nombre d'autres tâches de géotraitement.

J'inclus un schéma de haut niveau ci-dessous pour aider à illustrer le point (je comprends que cela pourrait ne pas avoir beaucoup de sens pour commencer).

Le modèle se mettrait en pause pendant la modification du fichier Excel, puis reprendrait une fois enregistré et fermé

Ainsi, le modèle s'exécuterait, effectuerait quelques tâches de géotraitement, ferait une pause pour ouvrir un fichier Excel, attendrait que l'utilisateur le modifie, l'enregistre et le ferme, avant de reprendre pour joindre ce fichier Excel à une table attributaire, puis d'exécuter un nombre d'autres tâches de géotraitement.

Je devrais imaginer que cela nécessiterait d'incorporer un script Python ou deux dans le modèle. Actuellement, je souhaite simplement savoir si le concept est réellement possible ou non.

the_bonze
la source
1
Je suis presque sûr qu'avec les outils de création de modèle standard, vous ne pourrez pas le faire car il n'y a aucun moyen de suspendre le modèle, vous auriez également besoin d'une sorte de déclencheur pour déclencher pour dire que l'utilisateur a fermé Excel pour redémarrer le modèle. Vous pourrez peut-être y parvenir avec une sorte de script envoyé dans une boucle infinie en regardant un indicateur dans un fichier texte après avoir engendré un processus distinct (Excel)? Je n'ai jamais fait ça et je ne sais pas quels sont les pièges. Si vous voulez le garder dans modelbuilder, je ferais d'abord les modifications Excel, puis exécuterai le modèle.
Hornbydd
Merci @Hornbydd - J'ai eu les mêmes pensées. Modifier le fichier d'abord, puis exécuter le modèle, c'est ce que j'ai suggéré, mais on m'a dit que cela devait être un modèle intégré ...
the_bonze
1
Je pense qu'un script pourrait regarder la date et l'heure d'un fichier pour savoir s'il a été modifié, puis reprendre le modèle à partir de là? Le suspendre est le problème, je pense.
the_bonze
Oui, le constructeur de modèles est conçu pour automatiser un flux de travail pour accélérer le traitement sans avoir de pause indéterminée au milieu, que se passe-t-il si cet utilisateur part pour le déjeuner par exemple? :) Comme moi maintenant!
Hornbydd

Réponses:

1

Il semble que vous ayez besoin de développer davantage un outil Python personnalisé qu'un modèle dans ModelBuilder. xlwtou xlutilsà http://www.python-excel.org/ vous permettra d'écrire dans votre fichier Excel ( XlsxWritergérera les fichiers xlsx). Si les modifications sont mineures, vous pouvez probablement l'incorporer dans un outil ArcToolbox standard (avec un peu de créativité). Si vous utilisez 10.1+, vous pouvez créer un complément Python ou une boîte à outils Python pour faire également fonctionner l'interface graphique.

Chad Cooper
la source
Les compléments Python fournissent-ils déjà des options GUI sophistiquées dans 10.1+? Je pensais que seuls les compléments .NET et Java fournissaient ces ... Python ne propose que des compléments sans interface graphique (commandes, outils).
Jürgen Zornig
1
@ JürgenZornig Ce n'est pas facile: anothergisblog.blogspot.com/2013/07/…
Chad Cooper
Merci @ChadCooper. Je dois garder le modèle dans le générateur de modèles, donc les compléments Python sont bien, mais le modèle en tant qu'entité doit être dans le générateur de modèles plutôt qu'un outil Python complet.
the_bonze
@Chad Merci quand même pour ce joli tutoriel de démarrage rapide ArcPy / Tkinter ... vous devez l'essayer!
Jürgen Zornig
1

J'y ai réfléchi et il est possible que j'aie trouvé une nouvelle solution. Vous configurez un script python dans une boîte à outils avec deux paramètres utilisateur, tout d'abord l'emplacement de l'EXE Excel. Cela pourrait même être codé intelligemment pour vérifier une liste d'emplacements de chemin de fichier probables en code dur (Office12, Office13, etc.).

Utilisez ensuite la fonction subprocess.call. Il y a des choses vraiment intéressantes à utiliser cette méthode:

  1. Il ne nécessite aucune bibliothèque externe
  2. la fonction d'appel ne permet pas la poursuite du script jusqu'à ce qu'il soit fermé
  3. Vous pouvez spécifier le document Excel comme deuxième argument
  4. C'est une ligne de code!

    import subprocess subprocess.call(["C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE", "Test.xlsx"]) #Replace args with user inputs (sys.argv[1], sys.argv[2] respectively)

La seule chose est que je ne suis pas sûr à 100% si cela fonctionnera dans le générateur de modèles, cela devra être testé, mais je ne vois pas pourquoi ce ne serait pas le cas, mais comme je suis sûr que vous savez que Arc est une bête capricieuse.

James Milner
la source