Variable vom ArcPy-Skript an ModelBuilder übergeben?


9

Ich habe ein Modell, das eine Variable an ein Python-Skript übergibt. Das Skript verwendet diese Variable, um einige Verzeichnisse abzufragen und eine Liste von Pfaden zurückzugeben. Was ich wissen möchte ist:

  • Wie kann ich dann jeden dieser Pfade als Parameter in einer nachfolgenden Operation verwenden?
  • Ist die Brücke zwischen Python und ModelBuilder eine Einbahnstraße?

Antworten:


8

Ich gehe davon aus, dass Sie das Python-Skript zum Modell hinzugefügt haben, indem Sie zuerst das Python-Skript zur Toolbox hinzugefügt und die Skripteingabe über die Registerkarte Parameter festgelegt haben.

Auf der Registerkarte Parameter können Sie neue Parameter für die Skriptausgabe hinzufügen. Um dies zu tun, ändern Sie einfach:

  • die Directionin den Parametereigenschaften zu Output;
  • das Data Typehängt davon ab, wie die Python-Ausgabe aussehen wird (wahrscheinlich eine Zeichenfolge oder eine Ganzzahl, aber möglicherweise eine Feature-Class);
  • und dann die Typein den Parametereigenschaften zu Derived(obwohl fair, Requiredund Optionalwird je nach Datentyp funktionieren, aber ich werde das unten beschreiben)

Dann können wir einfach arcpy.SetParametervon Ihrem Python-Skript zurück zum Modell ausgeben.

Ein paar Anmerkungen:

  • Wenn Sie den Ausgabeparameter auf eingestellt haben Requiredoder eine OptionalEingabe für Ihr Skript bereitstellen können, indem Sie Standardwerte angeben, die Sie mit arcpy.GetParameteroder von erhalten könnensys.argv
  • Die Anzahl der Parameter, die als Ausgabe festgelegt werden sollen, hängt von der Gesamtzahl der Parameter für Ihr Python-Skript ab (dh wenn Sie vor Ihrem Ausgabeparameter bereits zwei Eingabeparameter haben, müssen Sie diese verwenden arcpy.SetParameter(2, value)).

Schauen Sie sich auch die Hilfe zu den Parametern des arcpy- Setting-Skript-Tools an .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.