71 votos

¿Cuándo usar ModelBuilder sobre la escritura en Python y viceversa?

Soy nuevo en la programación Python en ArcGIS pero no soy nuevo en ModelBuilder.

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

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

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

83voto

Aaron Puntos 25882

Creo que el usuario debe definir claramente sus objetivos antes de decidir qué conjunto de herramientas utilizar. El ModelBuilder y el script Python sobresalen en diferentes tareas. Algunas ideas:

  1. ModelBuilder no tiene capacidades de mapeo, mientras que arcpy.mapping lo hace.
  2. Python puede ser usado para optimizar los flujos de trabajo, como con el paquete de multiprocesamiento o con procesamiento en paralelo .
  3. Python permite bucles anidados y otra lógica iterativa muy útil herramientas. Para lograr un resultado similar en ModelBuilder, usted tienen que construir intrincados y complicados modelos anidados.
  4. La simple manipulación de texto es muy fácil con Python y difícil o no posible con ModelBuilder.

    por ejemplo, para renombrar una lista de nombres de archivos de, por ejemplo "m_2010_naip_2310345_nw.img" a "2310345nw.img" puede lograrse fácilmente con Python utilizando el os.path módulo.

Por otro lado:

  1. ModelBuilder es muy útil para reunir rápidamente herramientas comunes y eliminando la necesidad de depurar los guiones.

  2. ModelBuilder tiene un recursivo muy útil iterador que es fácil de implementar con el fin de hacer un bucle a través de las carpetas y subcarpetas.

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

  4. ModelBuilder puede incorporar Python script herramientas .

25voto

aditya Puntos 111

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

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

Dadas esas consideraciones:

  1. A menudo es más rápido y fácil construir un proceso en ModelBuilder que en Python, a menos que parte de su proceso no pueda ser replicado en ModelBuilder.
  2. Si no conoces Python y no tienes intención de aprenderlo, ModelBuilder es una gran opción.
  3. Si no conoces Python y quieres aprender a incorporarlo a tu conjunto de habilidades, ModelBuilder es una gran manera de empezar creando modelos simples, y luego exportándolos a Python para que tengas el esqueleto de tu proceso final pre-construido para ti. Este método tiene un costo, ya que hay mucha información y variables extrañas que normalmente se crean durante el proceso de conversión, pero sigue siendo una gran manera de empezar a aprender.
  4. Si estás construyendo herramientas para uso personal, usar el método con el que te sientas más cómodo suele ser el camino a seguir. Personalmente uso ambos, dependiendo de mis necesidades.
  5. Si está planeando compartir su análisis con otros, y quiere compartir su modelo/script con otros son parte de su documentación de proceso, un modelo es generalmente mucho más fácil de seguir y entender para personas no técnicas.

Probablemente no hay respuesta al "qué es mejor" para el uso personal, pero si usted está buscando posibilidades de empleo a largo plazo, al aprender Python se diferenciará de aquellos que sólo saben utilizar las herramientas preprogramadas, o simplemente saben cómo utilizar 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 usando otras librerías SIG propietarias y de código abierto, así como muchas librerías no SIG (es decir, base de datos, manipulación de imágenes, estadísticas, etc.).

20voto

Martin Woodward Puntos 9972

El Constructor de Modelos es un gran y fácil de aprender el lenguaje de programación visual y una buena entrada a la programación GIS en general. Pero en algunas cosas Python puede hacer más.

Un ejemplo es la integración de las bibliotecas SIG que no son del tipo ERS. Casi todos los SIG de código abierto pueden ser direccionados a través de python también (por ejemplo. CÉSPED , Sextante , QGIS , SAGA ). Esto me ayudó mucho, porque sólo tengo una licencia de ArcView. Así que cada vez que no puedo usar una cierta herramienta de geoprocesamiento en ArcGIS, miro qué otras opciones están disponibles en el SIG de código abierto. Entonces tomo estas herramientas de código abierto y las combino con las herramientas de ArcGIS ya sea en una pitón más grande script o las integro en ModelBuilder a través de una pitón más pequeña script.

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

9voto

Richard C. McGuire Puntos 3345

Al usar Python y ArcGIS, obtienes toda la funcionalidad de Python además de lo que ya tenías en ArcGIS. Si necesitas este tipo de poder y flexibilidad depende de tus deseos. Además, conocer y aprovechar realmente un lenguaje de programación como Python lleva tiempo. Si esta inversión vale la pena para ti, depende de ti. Sin embargo, para el procesamiento serio de datos un verdadero lenguaje de programación es una muy buena adición en tu arsenal.

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

7voto

Dan Williams Puntos 2641

Soy parcial en la creación de guiones para Python. Es más divertido escribir código que jugar con las líneas de conexión a las cajas y demás, al menos para mí.

Lo que es realmente genial de los guiones en Python es que puedes programar tus guiones para que se ejecuten en el momento que te convenga. Si tienes un script que tarda un tiempo en completarse, o necesita ejecutarse fuera de las horas normales de trabajo, esto es realmente conveniente. Puedes ver un ejemplo de cómo programar un script aquí .

Y como @Aaron menciona, se puede configurar fácilmente un bucle en un script Python script.

Si estás empezando con el scripting en Python, quizás quieras crear un modelo con el Model Builder y exportarlo como un script en Python script. A veces hago esto si tengo problemas para entender cómo usar varias herramientas en un script. Podría ayudarte a entender cómo armar los guiones.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X