¿Cuándo usar ModelBuilder sobre los scripts de Python y viceversa?

67

Soy nuevo en las secuencias de comandos de Python en ArcGIS pero no soy nuevo en ModelBuilder.

Me gustaría conocer los beneficios de Python vs ModelBuilder.

¿Cuándo deberíamos escribir el script Python para la automatización de SIG en lugar de utilizar ModelBuilder?

¿Cuáles son las capacidades de automatización de Python que no podemos encontrar en ModelBuilder?

    
pregunta wetland 07.04.2013 - 18:39

6 respuestas

79

Creo que el usuario debe definir claramente sus objetivos antes de decidir qué conjunto de herramientas usar. ModelBuilder y Python scripting sobresalen en diferentes tareas. Algunos pensamientos:

  1. ModelBuilder no tiene capacidades de mapeo, mientras que arcpy.mapping hace.
  2. Python se puede usar para optimizar flujos de trabajo, como con el paquete de multiprocesamiento o con procesamiento paralelo .
  3. Python permite bucles anidados y otra lógica iterativa práctica herramientas. Para lograr un resultado similar en ModelBuilder, deberías tienen que construir modelos complejos e intrincados y anidados.
  4. La manipulación de texto simple es muy fácil con Python y muy Difícil o imposible con ModelBuilder.

    por ejemplo para cambiar el nombre de una lista de nombres de archivos, por ejemplo, "m_2010_naip_2310345_nw.img" a "2310345nw.img" se puede lograr fácilmente con Python usando os.path módulo.

Por otro lado:

  1. ModelBuilder es muy útil para armar rápidamente herramientas comunes y eliminar la necesidad de depurar scripts.

  2. ModelBuilder tiene un iterador muy útil recursivo es fácil de implementar para recorrer en bucle carpetas y subcarpetas.

  3. ModelBuilder se destaca en la representación visual e intuitiva del flujo de trabajo para tareas complicadas .

  4. ModelBuilder puede incorporar Python herramientas de script .

respondido por el Aaron 07.04.2013 - 19:26
22

Si está trabajando únicamente dentro de los límites de ArcGIS, hay algunas consideraciones que consideraría al intentar determinar el enfoque a seguir.

  • ¿Qué estás tratando de lograr,
  • ¿Cuáles son tus habilidades actuales,
  • ¿Compartirá su trabajo con otros para usar, aprender o manipular, y
  • ¿Quién es tu público objetivo?

Teniendo en cuenta esas consideraciones:

  1. A menudo es más rápido y más fácil construir un proceso en ModelBuilder que en Python, a menos que parte de su proceso no se pueda replicar en ModelBuilder.
  2. Si no conoce Python & No tengo intención de aprenderlo, ModelBuilder es una gran opción.
  3. Si no conoce Python & Para aprender a incorporarlo a su conjunto de habilidades, ModelBuilder es una excelente manera de comenzar por crear modelos simples y luego exportarlos a Python para que tenga el esqueleto de su proceso final pre-construido para usted. Este método tiene un costo, ya que hay mucha información extraña & variables que generalmente se crean durante el proceso de conversión, pero todavía es una excelente manera de comenzar a aprender.
  4. Si está construyendo herramientas para uso personal, el método a seguir es utilizar el método con el que se sienta más cómodo. Personalmente uso ambos, dependiendo de mis necesidades.
  5. Si planea compartir su análisis con otros, y desea compartir su modelo / script con otros como parte de la documentación de su proceso, un modelo generalmente es mucho más fácil de seguir y comprender para personas no técnicas.

Probablemente no haya respuesta a "cuál es mejor" para uso personal, pero si está buscando posibilidades de empleo a largo plazo, al aprender Python se diferenciará de aquellos que solo saben usar el preprogramado. herramientas, o simplemente saber cómo usar ModelBuilder. También te das la posibilidad de salir de los confines de Python para ArcGIS (ArcPy) y comenzar a automatizar muchas más tareas y proyectos mediante el uso de otras bibliotecas GIS de código abierto y propias, así como muchas bibliotecas que no son GIS , manipulación de imágenes, estadísticas, etc).

    
respondido por el RyanDalton 07.04.2013 - 20:58
19

Model Builder es un lenguaje de programación visual excelente y fácil de aprender y una buena entrada a la programación GIS en general. Pero en algunas cosas el pitón puede hacer más.

Un ejemplo es la integración de bibliotecas GIS no ESRI. Casi todos los SIG de código abierto también pueden dirigirse a través de python (por ejemplo, GRASS , Sextante , QGIS , SAGA ). Esto me ayudó mucho, porque solo tengo una licencia ArcView. Entonces, cada vez que no puedo usar una determinada herramienta de geoprocesamiento en ArcGIS, veo qué otras opciones están disponibles en el SIG de código abierto. Luego tomo estas herramientas OpenSource y las combino con las herramientas de ArcGIS en un script Python más grande o las integro en ModelBuilder a través de un script Python más pequeño.

Estoy seguro de que otros miembros pueden nombrar más ventajas.

    
respondido por el Martin 07.04.2013 - 19:21
9

Al utilizar Python y ArcGIS, obtiene la funcionalidad completa de Python además de lo que ya tenía en ArcGIS. Si necesita este tipo de poder y flexibilidad depende de sus deseos. Además, conocer y aprovechar realmente un lenguaje de programación como Python requiere tiempo. Si esta inversión vale la pena para ti depende de ti. Sin embargo, para el procesamiento serio de datos, un lenguaje de scripting real es una muy buena adición en su arsenal.

Aparte de cualquier funcionalidad que el ModelBuilder pueda pasar por alto, también hay una discusión más fundamental. En general, los scripts son mucho más adecuados para crear flujos de trabajo complejos. El código se procesa de arriba a abajo, y las tareas complejas se pueden subdividir en sub tareas más pequeñas, por ejemplo. funciones u objetos. Una herramienta gráfica como el constructor de modelos tiende a convertirse en un gran espagueti.

    
respondido por el Paul Hiemstra 07.04.2013 - 22:12
7

Soy parcial en la creación de scripts de Python. Es más divertido escribir código que perder el tiempo conectando líneas a cuadros y eso, al menos para mí.

Lo realmente genial de las secuencias de comandos de Python es que puedes programar tus secuencias de comandos para que se ejecuten en un momento que sea conveniente para ti. Si tiene un script que tarda en completarse o necesita ejecutarse fuera del horario comercial, esto es realmente conveniente. Puede ver un ejemplo de cómo programar un script aquí .

Y como lo menciona @Aaron, puedes configurar fácilmente el bucle en un script de Python.

Si solo está estableciendo con las secuencias de comandos de Python, es posible que desee crear un modelo con Model Builder y exportarlo como una secuencia de comandos de Python. A veces hago esto si tengo problemas para entender cómo usar varias herramientas en un script. Podría ayudarlo a tener una idea de cómo reunir los scripts.

    
respondido por el Patty Jula 07.04.2013 - 20:25
5

Descubrí que parece que me quedo sin solución más con el generador de modelos que con las secuencias de comandos de Python. La naturaleza un tanto "negra" del creador de modelos para mí hace que sea más difícil encontrar dónde se encuentra el problema.

También encontré que puedo encontrar mucha más ayuda con python. Tiendo a encontrar un montón de hilos sin fin y temas sobre el creador de modelos. También hay pocos ejemplos para pasar, donde, como con Python, es probable que pueda encontrar pequeños fragmentos de la mayoría de las partes de cualquier script que esté escribiendo.

    
respondido por el Rex 11.12.2013 - 22:01

Lea otras preguntas en las etiquetas