1 votos

La iteración exitosa como variable

En ArcGIS ModelBuilder, ¿es posible crear una variable (que pueda utilizarse como condición previa para las herramientas siguientes) que indique si una iteración ha finalizado?

Ejemplo: Un iterador almacena en el búfer todas las clases de características de una base de datos de archivos y crea una salida para cada una de esas clases de características. Después de que todas las clases de características se hayan almacenado en el búfer, quiero ejecutar una nueva herramienta.

¿Cómo puedo establecer la iteración completada como condición previa para esa herramienta?

No domino el python.

enter image description here

enter image description here

2voto

John Kramlich Puntos 286

Mi respuesta/comentario en su pregunta original ( ¿Acción después de la iteración en ArcGIS ModelBuilder? ) sigue en pie, un trozo de código python bastante sencillo resolverá esto que devuelve un valor Verdadero o Falso que podrías usar como precondición.

Un ejemplo sería:

Mode

La herramienta Calcular Valor se configuraría como:

calculate Value tool

Se trata simplemente de comprobar que el número de clases de características en el espacio de trabajo de salida coincide con el número del espacio de trabajo de entrada.

El bloque de código python completo es este:

import arcpy
def test(inws,outws):
  # Count input featureclasses
  arcpy.env.workspace = inws
  infcl = arcpy.ListFeatureClasses()

  # Count output featureclasses
  arcpy.env.workspace = outws
  outfcl = arcpy.ListFeatureClasses()
  if len(outfcl) == len(infcl):
    return True
  else:
    return False

En mi ejemplo estoy enviando los búferes al espacio de trabajo IN_MEMORY, tendrías que cambiar eso a donde va tu salida. Hágalo cambiando el texto en el cuadro de expresión.

0 votos

Hasta ahora funciona, pero ha surgido un problema: La última clase de característica que está siendo iterado no está siendo almacenado en búfer. ArcGIS dice que está siendo almacenada en búfer con éxito, pero extrañamente no aparece ninguna salida. Todas las demás clases de características se almacenan en la memoria intermedia sin problemas. Esto siempre sucede a la última clase de características (he intentado varios conjuntos de clases de características, definitivamente no es un problema con el shapefile).

0 votos

Parece el comportamiento de impar, ¿qué versión de ArcGIS utiliza? ¿Intenta reiniciar el equipo?

0 votos

Estoy ejecutando ArcMap 10.3.1 Advanced. Reiniciar no hizo nada. Quiero decir, puedo trabajar mi manera alrededor de esto, pero todavía es extraño comportamiento.

1voto

rg255 Puntos 111

Se puede conseguir integrando un modelo dentro de otro. https://desktop.arcgis.com/en/arcmap/latest/analyze/modelbuilder/integrating-model-within-a-model.htm

no es realmente una condición previa lo que estás diagramando sino un modelo anidado dentro de otro modelo. A menudo se denomina submodelo. En este caso, la caja roja (dentro) es un submodelo. Su diagrama es un poco difícil de ver la interacción entre los modelos, pero parece que necesita recoger los valores de la zona superior fuera de la caja roja.

Este es un buen indicador Problemas para integrar el submodelo en el modelo maestro

0 votos

Sé que lo que hay dentro del recuadro rojo es un submodelo anidado en otro modelo. Mi problema es que ese submodelo no crea ningún valor que me diga si ha terminado de almacenar todas las feature-classes. Pero la "Nueva Herramienta" no se ejecutará antes de que todas las feature classes hayan sido almacenadas en el buffer.

0 votos

He añadido otra captura de pantalla que espero lo aclare.

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