Kurzer Überblick über die Verwendung von Iteratoren für die Iteration – (Wiederholung)
Iteration, häufig auch Wiederholung genannt, bedeutet, dass ein Prozess immer wieder wiederholt wird, wobei ein gewisser Grad an Automatisierung zum Einsatz kommt. Die Iteration ist sehr wichtig, da durch die Automatisierung von wiederkehrenden Tasks weniger Zeit und Aufwand erforderlich ist, um die Tasks auszuführen. Mit der Iteration in ModelBuilder kann ein Prozess immer wieder ausgeführt werden, wobei in jeder Iteration andere Einstellungen oder Daten verwendet werden. ModelBuilder ermöglicht auch eine flexible Iteration, da ein gesamtes Modell oder nur ein einzelnes Werkzeug oder ein Prozess immer wieder ausgeführt werden kann.
Iterator |
Beschreibung |
---|---|
Durchläuft einen Start- und Endwert nach einem angegebenen Wert. For funktioniert hier genau so wie in jeder Skript-/Programmiersprache und wird durch eine festgelegte Anzahl von Elementen ausgeführt. |
|
Funktioniert genau wie "While" in jeder Skripterstellungs-/Programmiersprache und wird ausgeführt, solange eine Bedingung für die Eingabe oder den Satz von Eingaben wahr oder falsch ist. |
|
Durchläuft Features in einer Feature-Class. |
|
Durchläuft Zeilen in einer Tabelle. |
|
Durchläuft jeden Wert in einem Feld. |
|
Durchläuft eine Liste von Werten. |
|
Durchläuft Datasets in einem Workspace oder einem Feature-Dataset. |
|
Durchläuft Feature-Classes in einem Workspace oder einem Feature-Dataset. |
|
Durchläuft Dateien in einem Ordner. |
|
Durchläuft Raster in einem Workspace oder einem Raster-Katalog. |
|
Durchläuft Tabellen in einem Workspace. |
|
Durchläuft Workspaces in einem Ordner. |
Iteratoren
Jeder Iterator verfügt über einen Satz von Parametern, der sich möglicherweise von den anderen Iteratoren unterscheidet, die Gesamtstruktur aller Iteratorwerkzeuge ist jedoch sehr ähnlich. Ein häufig verwendeter Iterator namens Feature-Classes iterieren wird unten erläutert.
Für Feature-Classes iterieren ist ein Eingabe-Workspace erforderlich, in dem alle Feature-Classes, die zu durchlaufen sind, gespeichert werden. Mit zwei zusätzlichen Parametern namens Platzhalter und Feature-Typ wird eingeschränkt, welche Feature-Classes im Workspace durchlaufen werden:
- "Platzhalter" schränkt die Feature-Classes über den Namen ein.
- "Feature-Typ" beschränkt die Feature-Classes nach Feature-Typ: Annotation, Arc, Bemaßung, Kante, Beschriftung, Linie, Knoten, Punkt, Polygon, Region, Route oder TIC.
Der Parameter Rekursiv wird verwendet, um die Iteration über Feature-Classes in Unterordnern im Workspace zu steuern.
Feature-Classes iterieren verfügt über zwei Ausgabevariablen: die Ausgabe-Feature-Class und der Name der Feature-Class. Die Ausgabe-Feature-Class kann mit dem nächsten Werkzeug zu weiteren Verarbeitung verbunden werden, und die Variable Name zur Inline-Variablenersetzung verwendet werden. Wenn beispielsweise das Werkzeug Puffer dem Modell hinzugefügt und die Variable Feature Class mit dem Werkzeug verbunden wurde, dann würde jede Feature-Class im Modell gepuffert.
Iteratoreingabe und -ausgabe
Es folgt ist eine Liste von Iteratoren und deren Eingabe und Ausgaben. Einige Iteratoren haben als zweite Ausgabe einen Wert oder Namen, der zur direkten Variablenersetzung verwendet werden kann.
Iterator |
Eingabe |
Ausgabe 1 |
Ausgabe 2 |
---|---|---|---|
Werte |
Wert |
- |
|
Werte |
Boolesch – Wert "True" oder "False" |
- |
|
Features |
Feature |
Wert |
|
Tabelle |
Aufnehmen |
Wert |
|
Tabelle |
Feldwert |
- |
|
Werte |
Wert |
- |
|
Workspace oder Feature-Dataset |
Dataset |
Name |
|
Workspace oder Feature-Dataset |
Feature-Class |
Name |
|
Ordner |
Datei |
Name |
|
Workspace oder Raster-Katalog |
Raster-Dataset |
Name |
|
Workspace |
Tabelle |
Name |
|
Ordner |
Workspace |
Name |
- Pro Modell kann nur ein Iterator verwendet werden. Die Optionen zum Hinzufügen eines anderen Iterators werden deaktiviert, wenn ein Iterator im Modell vorhanden ist.
- Wenn einem Modell ein Iterator hinzugefügt wird, durchlaufen alle Werkzeuge im Modell jeden Wert im Iterator. Wenn Sie nicht jedes Werkzeug im Modell für jeden durchlaufenen Wert ausführen möchten, erstellen Sie ein untergeordnetes Modell/Modell im Modell/verschachteltes Modell, das nur den Iterator enthält, und fügen Sie es als Modellwerkzeug zum Hauptmodell hinzu.
- Wenn ein Modell, das einen Iterator enthält, in ein Python-Skript exportiert wird, enthält das Skript die Iterationslogik nicht. Dem Skript kann Python-Auflistungslogik hinzugefügt werden, um einen ähnlichen Effekt zu erzielen.
- Wenn in einem Modell ein Iterator verwendet wird, wird in den Iterationsoptionen in den Modelleigenschaften der Standardwert -1 festgelegt. Das bedeutet einfach, dass das Modell unendlich oft oder auf Grundlage der Anzahl von Eingaben in einen Iterator ausgeführt wird und nicht eine festgelegte Anzahl von Malen.
- Die Ausgabe jedes mit dem Iterator verbundenen Werkzeugs kann (falls erforderlich) über einen eindeutigen Namen für jede Iteration verfügen, um ein Überschreiben zu verhindern. Hierzu gibt es folgende Möglichkeiten:
- Verwenden der Systemvariablen %n%, z. B. C:\Sctatch\scratch.gdb\output_%n%.
- Verwenden der im Modell verwendeten "Name"- oder "Value"-Ausgabe des Iterators als direkte Variable, z. B. C:\Sctatch\scratch.gdb\output_%Name%, C:\Sctatch\scratch.gdb\output_%Value%.
- Verwenden einer anderen Variablen im Modell als direkte Variable, bei der Variablen "XYZ" kann der Name der Ausgabe z. B. C:\Scratch\scratch.gdb\output_%XYZ% lauten. (Für diese Variable sollte kein konstanter Wert verwendet werden.)
- Werkzeugausgaben mit einem Häkchen neben Zur Anzeige hinzufügen werden der Anzeige in ArcMap unter Verwendung des Variablennamens hinzugefügt. Wenn die Ausgaben aller Iterationen der Anzeige in ArcMap mit dem eigentlichen eindeutigen Ausgabenamen anstelle des Namens der Variable hinzugefügt werden sollen, verbinden Sie die anzuzeigende Ausgabe mit dem Werkzeug Werte erfassen, und klicken Sie dann mit der rechten Maustaste auf die Ausgabe von Werte erfassen, um die Option Zur Anzeige hinzufügen auszuwählen. Wenn das Modell über das Modellwerkzeugdialogfeld ausgeführt wird, legen Sie die Ausgabe von Werte erfassen als Modellparameter fest, da nur die Ausgabemodellparameter der Anzeige hinzugefügt werden.
Iteratoren ersetzen die Reihenoption in den Modelleigenschaften, die in ArcGIS-Versionen vor 10 verfügbar war.