Aufforderung zur Benutzereingabe während der Ausführung des ArcGIS Python-Skriptwerkzeugs?

9

Ich möchte zur Benutzereingabe auffordern, nachdem alle Parameter für das Skript-Tool angegeben wurden. Ich habe viele Forenbeiträge und Fragen zum Stapelaustausch gesehen, und alle kommen zu dem Schluss, dass dies unnötig ist, aber ich denke, mein Fall ist eine Ausnahme. Ich möchte dem Benutzer die Möglichkeit geben, Daten zu bestätigen, z. B. wie viele Sätze von GPS-Koordinaten vorhanden sind. Es werden Ja / Nein-Fragen sein ("Sind diese Daten offensichtlich falsch?"), Und das Eingabeformular für die Parameter des Skript-Tools scheint dafür nicht gut zu funktionieren.

Ich weiß, dass der Event-Handler von Tkinter Probleme mit ArcGIS verursacht, und andere Framworks haben ähnliche Probleme. Eine Problemumgehung, die ich gefunden habe, besteht darin, dass Ihr Skript ein anderes Skript aufruft, das als separater Prozess ausgeführt wird, und die GUI des zweiten Prozesses anzeigt, aber das scheint etwas zu hackig.


Anscheinend funktioniert wxPython , ist aber nicht in Python enthalten. Ich muss in der Lage sein, diese Skripte ohne zusätzliche Anforderungen außer ArcGIS zu verteilen, damit dies für mich nicht funktioniert.


Zur Verdeutlichung besteht die wichtigste Verwendung darin, den Benutzer aufzufordern, wenn meine Softwareüberprüfungen die Daten nicht validieren können. Ich habe beispielsweise eine Liste von IDs, die ich überprüfen möchte, aber das Format ist nicht konsistent. Ich möchte den Benutzer mit einem Ja / Nein-Dialogfeld auffordern können, wenn ich in der Software nicht validieren kann (z. B. wenn die ID nicht mit einem der gängigen Muster übereinstimmt). Es ist möglich, dass ohne mein Wissen neue ID-Formate erstellt werden.


Ein weiteres Beispiel: Ich habe eine Datei, die unter anderem eine Tabelle mit Start- und Stoppzeiten enthält. Ich möchte jede Zeile der Tabelle einzeln validieren, und all diese Daten sowie die anderen Überprüfungen in das Warnfenster zu packen, würde schnell hässlich werden.

user14144
quelle
11
Ich würde davon abraten. Skript-Tools sollen ohne Benutzerinteraktion ausgeführt werden können, sobald Sie auf "Ausführen" klicken. Möglicherweise können Sie jedoch mithilfe des Validierungscodes sachdienlichere Warn- / Fehlermeldungen bereitstellen .
blah238
2
Sie erwähnen das Aufrufen eines Unterprozesses als hackisch, aber was Benutzereingaben angeht, denke ich, dass dies Ihre einzige Option sein könnte, wenn Sie sich an Python-Skript-Tools halten. Ich würde es tun, wenn ich unbedingt Benutzerinteraktion mit einem Python-Skript-Tool haben müsste, indem ich einen C # -Unterprozess aufrufe. Wenn ich mich erinnere, wird der Python-Code angehalten und wartet, bis der Unterprozess abgeschlossen ist, bevor er fortfährt. Dies gibt Ihnen die Möglichkeit, eine unbegrenzte Anzahl von in C # integrierten Benutzerinteraktionen einzubeziehen. Sie können jedoch keine Objekte an C # übergeben, sodass Sie Ihre Daten in Zeichenfolgenform übertragen müssen.
Bluefoot
Obwohl für die Aufzeichnung ich mit blah238
bluefoot
4
Genau dafür ist die Validierung in Skript-Tools gedacht.
user2856
Ich dachte, die Validierung dient nur der Skriptvalidierung und kann keine Benutzereingaben erhalten. Kann ich Ja / Nein-Eingabeaufforderungen vom Validator oder etwas anderes anzeigen, das den gleichen Effekt hätte?
user14144

Antworten:

2

Ich bin nicht sicher, ob diese Option für Sie funktioniert oder nicht, aber vielleicht können Sie darüber nachdenken, eine ac # -Anwendung zu erstellen.

  1. Führen Sie alle Benutzerinteraktionen und Datenüberprüfungen über diese Anwendung durch.
  2. Führen Sie nach der Überprüfung aller Daten das Python-Skript aus.
Emi
quelle