Wednesday, 17 June 2015

Using ArcGIS ModelBuilder with a "While" Iterator


I am struggling to get the ArcGIS ModelBuilder "While" Iterator to work as I would expect it. I have a hunch it's user error, but even reading the help hasn't seemed to get it working for me.


I have a simple model that calls a Python script that simple does a time.sleep(15) and then sends back the conditional parameter of "TRUE" or "FALSE" using arcpy.SetParameterAsText(1, "FALSE") or similar for True statements in an if/else statement. I've also tried every combination of TRUE, True, and true, as outputs from my Python script without success.


Model with WHILE Iterator


I can see in the results that my conditions are being set correctly:


Executing (While): IterateCondition FALSE TRUE

Start Time: Tue Nov 20 16:10:06 2012
Succeeded at Tue Nov 20 16:10:06 2012 (Elapsed Time: 0.00 seconds)

and


Executing (While): IterateCondition TRUE TRUE
Start Time: Tue Nov 20 16:26:41 2012
Succeeded at Tue Nov 20 16:26:41 2012 (Elapsed Time: 0.00 seconds)

but the WHILE Iterator continues to fire the sleep script, even if I change the output parameter of my script. Any ideas on why I cannot seem to get the sleep script to stop firing? What should I be passing from my SetParametersAsText() in order to get the While Iterator to stop firing the Sleep script?



Answer




The input of the While loop should be of boolean data type.


I recreated your model and script and called arcpy.SetParameterAsText(1, "FALSE") in the script. For the script output, I used a boolean. ModelBuilder automatically converts the output string "FALSE" to boolean false. The boolean false can be evaluated by the While loop.


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...