Quand utiliser ModelBuilder sur un script Python et vice versa?

71

Les scripts Python dans ArcGIS sont nouveaux pour moi, mais pas pour ModelBuilder.

J'aimerais connaître les avantages de Python par rapport à ModelBuilder.

Quand devrions-nous écrire un script Python pour l'automatisation SIG plutôt que d'utiliser ModelBuilder?

Quelles sont les fonctionnalités d'automatisation de Python que nous ne pouvons pas trouver dans ModelBuilder?

BBG_GIS
la source

Réponses:

82

Je pense que l'utilisateur doit clairement définir ses objectifs avant de décider quel ensemble d'outils utiliser. ModelBuilder et les scripts Python excellent dans différentes tâches. Quelques réflexions:

  1. ModelBuilder n'a pas de capacités de mappage, contrairement à arcpy.mapping .
  2. Python peut être utilisé pour optimiser les flux de travail, par exemple avec le package de multitraitement ou avec le traitement en parallèle .
  3. Python autorise les boucles imbriquées et d’autres outils de logique itérative pratiques. Pour obtenir un résultat similaire dans ModelBuilder, vous devez construire des modèles imbriqués complexes et complexes.
  4. La manipulation de texte simple est très facile avec Python et très difficile ou impossible avec ModelBuilder.

    par exemple, renommer une liste de noms de fichiers, par exemple "m_2010_naip_2310345_nw.img" en "2310345nw.img" peut facilement être accompli avec Python à l'aide du os.pathmodule.

D'autre part:

  1. ModelBuilder est très utile pour assembler rapidement des outils communs et éliminer le besoin de scripts de débogage.

  2. ModelBuilder a un itérateur récursif très utile, facile à implémenter pour parcourir en boucle les dossiers et les sous-dossiers.

  3. ModelBuilder excelle dans la description visuelle et intuitive du flux de travail pour des tâches complexes .

  4. ModelBuilder peut incorporer des outils de script Python .

Aaron
la source
5
Décrivez clairement les différences entre Python et Model Builder dans ArcGIS. Merci
BBG_GIS
24
J'ajouterais aussi: 1. vous pouvez exécuter votre script Python en dehors d'ArcMap 2. Vous pouvez utiliser ArcObjects dans Python, 3. Il peut y avoir des différences de vitesse.
Tomek
3
+1 boucles nichées et arcpy.mapping! J'aime la possibilité de faire des calculs dans un script et de les ajouter à des tableaux d'attributs ou, mieux encore, à la présentation de la carte (zone de chaque type de zone humide, par exemple).
Roy
2
J'ai lu les scripts python pour le livre ArcGIS. J'ajoute également quelques fonctionnalités supplémentaires: 1- Les curseurs de script vous permettent de parcourir les enregistrements d'un tableau, de lire les lignes existantes et d'insérer de nouvelles lignes. 2- Les scripts peuvent être utilisés pour envelopper d'autres logiciels, c'est-à-dire pour coller des applications. Par exemple, python peut être utilisé pour accéder à des fonctions dans Microsoft Excel ou dans le package statistique R. 3-A Un script peut être exécuté en tant que script autonome sur un disque en dehors de ArcGIS. Vous n'avez pas besoin d'exécuter ArcMap ou ArcCatalog pour le script. travail. (Scriptage Python pour ArcGIS, Chapitre 2, Page 39)
BBG_GIS le
24

Si vous travaillez uniquement dans les limites d'ArcGIS, voici quelques considérations à prendre en compte lorsque vous tenterez de déterminer l'approche à adopter.

  • Qu'est-ce que vous essayez d'accomplir,
  • Quelles sont vos compétences actuelles,
  • Partagerez-vous votre travail avec les autres pour utiliser, apprendre ou manipuler, et
  • Qui est votre public cible.

Compte tenu de ces considérations:

  1. Il est souvent plus rapide et facile de créer un processus dans ModelBuilder qu'en Python, sauf si une partie de votre processus ne peut pas être répliquée dans ModelBuilder.
  2. Si vous ne connaissez pas Python et que vous n'avez pas l'intention de l'apprendre, ModelBuilder est une excellente option.
  3. Si vous ne connaissez pas Python et que vous souhaitez apprendre à l'intégrer à votre ensemble de compétences, ModelBuilder est un excellent moyen de commencer par créer des modèles simples, puis de les exporter au format Python afin que le squelette de votre processus final soit pré-construit pour vous. . Cette méthode a un coût, car de nombreuses informations et variables superflues sont généralement créées au cours du processus de conversion, mais il s'agit toujours d'un excellent moyen de commencer à apprendre.
  4. Si vous construisez des outils à usage personnel, utilisez la méthode qui vous convient le mieux. Personnellement, j'utilise les deux, selon mes besoins.
  5. Si vous envisagez de partager votre analyse avec d'autres et si vous souhaitez partager votre modèle / script avec d'autres personnes faisant partie de la documentation de votre processus, un modèle est généralement beaucoup plus facile à suivre et à comprendre pour les personnes non techniques.

Il n’ya probablement pas de réponse à la question "qui est le meilleur" pour un usage personnel, mais si vous recherchez des possibilités d’emploi à long terme, en apprenant Python, vous vous démarquerez de ceux qui savent seulement utiliser les outils préprogrammés, ou Il suffit de savoir comment utiliser ModelBuilder. Vous vous donnez également la possibilité d'aller au-delà des limites de Python pour ArcGIS (ArcPy) et de commencer à automatiser beaucoup plus de tâches et de projets en utilisant d'autres bibliothèques SIG propriétaires et à code source ouvert, ainsi que de nombreuses bibliothèques non SIG (base de données). , manipulation d'images, statistiques, etc.).

RyanDalton
la source
20

Model Builder est un langage de programmation visuel très facile à apprendre et une bonne entrée dans la programmation SIG en général. Mais dans certains cas, le python peut faire plus.

Un exemple est l'intégration de bibliothèques SIG non ESRI. Presque tous les SIG Open Source peuvent également être adressés via Python (par exemple, GRASS , Sextante , QGIS , SAGA ). Cela m'a beaucoup aidé, car je n'ai qu'une licence ArcView. Ainsi, chaque fois que je ne peux pas utiliser un certain outil de géotraitement dans ArcGIS, je regarde quelles autres options sont disponibles dans les SIG Open Source. Je prends ensuite ces outils OpenSource et les combine avec des outils ArcGIS dans un script python plus volumineux ou les intègre dans ModelBuilder via un script python plus petit.

Je suis sûr que les autres membres peuvent nommer plus d'avantages.

Martin
la source
9

Lorsque vous utilisez Python et ArcGIS, vous bénéficiez de toutes les fonctionnalités de Python, en plus de celles que vous possédiez déjà dans ArcGIS. Si vous avez besoin de ce type de puissance et de flexibilité, cela dépend de vos souhaits. En outre, il faut du temps pour connaître et utiliser réellement un langage de programmation tel que Python. Si cet investissement en vaut la peine, c'est à vous de décider. Cependant, pour le traitement de données sérieuses, un vrai langage de script est un très bon ajout à votre arsenal.

En dehors de toute fonctionnalité que ModelBuilder pourrait manquer, une discussion plus fondamentale est également en cours. En général, les scripts sont beaucoup plus appropriés pour créer des flux de travail complexes. Le code est traité de haut en bas et les tâches complexes peuvent être subdivisées en tâches plus petites en utilisant, par exemple, des fonctions. ou des objets. Un outil graphique tel que le constructeur du modèle a tendance à devenir un gros spaghetti.

Paul Hiemstra
la source
7

Je suis partisan de la création de scripts Python. C'est plus amusant d'écrire du code que de perdre son temps avec les lignes de connexion aux boîtes, etc., du moins pour moi.

Ce qui est vraiment génial avec les scripts Python, c'est que vous pouvez planifier l'exécution de vos scripts à une heure qui vous convient. Si vous avez un script qui prend un certain temps à compléter ou qui doit être exécuté en dehors des heures de bureau, cela est vraiment pratique. Vous pouvez voir un exemple de planification d'un script ici .

Et comme le mentionne @Aaron, vous pouvez facilement configurer une boucle dans un script Python.

Si vous commencez à utiliser des scripts Python, vous pouvez créer un modèle avec Model Builder et l'exporter en tant que script Python. Je le fais parfois si j'ai du mal à comprendre comment utiliser plusieurs outils dans un script. Cela pourrait vous aider à comprendre comment assembler des scripts.

Patty Jula
la source
5

J'ai constaté qu'il me semblait que je ne trouvais plus de solution avec le constructeur de modèle qu'avec les scripts Python. La nature un peu "boîte noire" du constructeur de modèle rend pour moi plus difficile de localiser le problème.

J'ai également constaté que je pouvais trouver beaucoup plus d'aide sur python. J'ai tendance à trouver beaucoup de discussions et de sujets sans issue sur le constructeur de modèle. Il existe également moins d’exemples où, comme pour Python, vous pouvez probablement trouver de petits fragments de la plupart des scripts que vous écrivez.

Rex
la source