HOW TO

Einschränken der Feature-Erstellung bei der Verwendung von Feature-Sets in ModelBuilder

Last Published: April 25, 2020

Zusammenfassung

In einigen Fällen ist es erforderlich, vom Benutzer erstellte interaktive Features einzugeben, wenn ein Modell mit Feature-Sets ausgeführt wird. Das Problem ist, dass der Ersteller des Modells häufig vermeiden möchte, dass der Benutzer mehr als die erforderliche Anzahl der Mindest- oder Höchsteingaben eingibt.

Bei dieser Lösung wird der Benutzer nicht in Form eines Fehler-Pop-ups oder einer Warnung daran gehindert, mehr als die erforderliche Anzahl der Mindest- oder Höchsteingaben auszuwählen. Stattdessen wird das Modell ohne eine Ausgabe ausgeführt.

Vorgehensweise

In einem Beispielszenario verfügt der Benutzer bereits über ein Modell mit Feature-Sets, das eine Feature-Class "School" (vorhandene Schulen) anhängt, indem mit den interaktiven Funktionen der Feature-Sets Standorte hinzugefügt werden (neue Schulstandorte). Gleichzeitig möchte der Modellersteller verhindern, dass der Modellbenutzer mehr als zwei Punkte gleichzeitig eingibt.

Im Folgenden ist das fertige Modell abgebildet. Es verwendet Beispieldaten als Szenario. Alles, was benötigt wird, ist der Teil "Anzahl erhalten" und "Wert berechnen".

Da das Feature-Set (da es eine Eingabe in ein Werkzeug ist) bereits Teil des zu ändernden Modells ist, gehen Sie wie folgt vor:

  1. Fügen Sie das Werkzeug Anzahl erhalten als Vorbedingung in das Werkzeug "Wert berechnen" ein.
  2. Fügen Sie das Werkzeug Wert berechnen als Vorbedingung in das Werkzeug ein, zu dem das Feature-Set im ursprünglichen Modell eine Verbindung herstellen würde – in diesem Fall das Werkzeug Anhängen.
  3. Fügen Sie das Werkzeug Anzahl erhalten mit dem Feature-Set als Eingabe hinzu. Stellen Sie dabei sicher, dass Sie die Ausgabevariable in rowcount umbenennen (dies ist wichtig, weil diese Ausgabe im Ausdruck/Code-Block Wert berechnen verwendet wird).
  4. Fügen Sie das Werkzeug Wert berechnen (dies ist ein Werkzeug nur für ModelBuilder), in ModelBuilder > Einfügen > Nur Modellwerkzeuge > Wert berechnen. Legen Sie die Ausgabe Anzahl erhalten als Vorbedingung für Wert berechnen fest, da wir das Werkzeug Anzahl erhalten zuerst ausführen müssen, um die Anzahl der Features zu ermitteln, die der In-Memory-Tabelle hinzugefügt werden.
  5. Klicken Sie mit der rechten Maustaste, und öffnen Sie das Werkzeug Wert berechnen, um den Ausdruck und den Code-Block zu ändern. Dies ist der Code:

Ausdruck:

countRows("%rowcount%")

Code Block (optional):

def countRows(RowCount):
    import arcpy
    if %RowCount% == 2: # feature restriction number
        return "true"
else:
       return "false"

Kurz gesagt, bezieht sich dieser Code auf die Ausgabe des Werkzeugs "Anzahl erhalten" (die zur In-Memory-Tabelle hinzugefügten Zeilen; wenn Sie ein Feature hinzufügen, ist es eine Zeile, bei zwei Features sind es zwei Zeilen usw.) Für unser Szenario verwenden wir den Wert "2", sodass das Werkzeug zwei Features in der In-Memory-Tabelle erstellt, wenn der Modellbenutzer auf zwei neue Schulstandorte klickt. (Dies kann unterschiedlich sein, da Ihre Umgebung, Ihre Modellparameter usw. andere Anforderungen haben können. Dieses Modell verwendet Punkt-Features, und Sie verwenden vielleicht Linien-Features.)

  1. Legen Sie die Ausgabe des Werkzeugs Wert berechnen als Vorbedingung für das erste Werkzeug des aktuellen Modells fest (in unserem Szenario war das Feature-Set als Eingabe mit dem Werkzeug Anhängen verbunden).

Bei der Ausführung funktioniert das Werkzeug nur, wenn zwei Punkte ausgewählt sind. Andernfalls gibt das Werkzeug die folgende informative Meldung aus: "Der Prozess wurde nicht ausgeführt, weil die Bedingung falsch ist."
Die falsche Vorbedingung wird erstellt, weil die IF-Anweisung des Werkzeugs "Wert berechnen" nicht erfüllt wurde, also die Eingabe nicht aus zwei Punkten bestand.

Das Modell wird unabhängig davon, ob der Benutzer die gewünschte Anzahl an Eingaben auswählt oder nicht, als "Abgeschlossen" ausgeführt, weil das Werkzeug "Wert berechnen" einen booleschen Wert ausgibt, der nur zwischen "true" und "false" unterscheidet.

Artikel-ID:000019731

Hilfe von ArcGIS-Expert*innen erhalten

Technischen Support kontaktieren

Die Esri Support-App herunterladen

Zu den Download-Optionen

Weitere Informationen zu diesem Thema erkunden