Warum sollten Sie Python Toolboxes über Python Script Tools lernen / verwenden? [geschlossen]

25

Ich habe einige Python-Toolboxes geschrieben (die in ArcGIS 10.1 neu sind), muss jedoch noch entscheiden, ob und wann ich sie anstelle von Python-Skript-Tools in eine Standard-Toolbox schreiben soll.

Ich dachte, die Online-Hilfe könnte mich aufklären, wenn sie vor einigen Punktpunkten Folgendes enthält:

Einmal erstellte Werkzeuge in einer Python-Toolbox bieten viele Vorteile

Die fünf aufgeführten Vorteile scheinen jedoch alle dahingehend zu sein, dass Python nicht zum Schreiben von Tools verwendet werden kann, und keiner scheint einen Vorteil von Python-Toolboxes gegenüber Python-Skript-Tools anzugeben.

Die beiden Vorteile, die ich mir vorstellen kann, sind:

  • Ich kann jetzt ein "reines" Python-Tool in einem einzelnen Python-Skript schreiben, ohne es in einen separat erstellten Dialog einbinden zu müssen, dessen Tool-Validierung so aussieht, als wäre es auf den Punkt gebracht worden, aber ich bin froh, in dieser Hinsicht eher pragmatisch als rein zu sein
  • Ich könnte jetzt Code (Python oder eine andere Sprache, die zum Schreiben von Textdateien fähig ist) verwenden, um das Schreiben von Python-Toolboxen zu automatisieren, aber ich bin noch nicht auf die Anforderung gestoßen, dies zu tun

Übersehne ich den überzeugenden Fall, der Esri dazu veranlasste, die Python Toolbox-Funktion bereitzustellen, und wenn ja, was ist das?

PolyGeo
quelle

Antworten:

34

Die beiden sind sehr, sehr ähnlich in der Funktionalität, aber nicht völlig gleichwertig.

Beiden gemeinsam

  • Enthält eine Reihe von Tools mit einem eindeutigen Alias ​​zur Identifizierung
  • Kann von arcpy anrufen
  • Für jedes Tool erhalten Sie kostenlos einen Geoverarbeitungs-Werkzeugdialog (im Wesentlichen eine vollständige Benutzeroberfläche)
  • Kann den gesamten Python-Code in einer Datei speichern (Tool-Quelle einbetten TBX, Implementierung in einer PYT) und über E-Mail oder freigegebene Netzwerklaufwerke verteilen
  • Für Desktop-Anwendungen immer in der Vordergrundeinstellung ausführen . Festlegen von "Immer im Vordergrund ausführen" in ArcPy-Code?

Nur für TBX-Dateien:

  • Kann Verweise auf System-Toolboxes, benutzerdefinierte COM-Tools und benutzerdefinierte .NET-Tools enthalten
  • Model Builder-Tools können in die Toolbox aufgenommen werden
  • Die Werkzeugdokumentation ist in der TBX-Datei gespeichert
  • Einfache Assistenten-Benutzeroberfläche zum Einrichten von Parametern und Ausführen von Validierungscode
  • Führen Sie das Python-Skript in der Process- Tool-Eigenschaft aus
  • Nachteil: Undurchsichtiges Binärformat, neuere Versionen von TBX-Dateien müssen explizit als ältere Versionen gespeichert werden, um in früheren Versionen der Software zu funktionieren. Die Benutzeroberfläche kann ein zweischneidiges Schwert sein, da Sie zwischen den Eigenschaftenseiten wechseln müssen, um zu sehen, ob Sie eine übersehen haben Einstellung (wie relative Pfade)

Einzigartig für Python-Toolboxen:

  • Nur-Text, sodass Toolboxes wie jeder andere Code behandelt werden können (nützlich in Umgebungen, in denen gute Tools für die Versionskontrolle verwendet werden, da Sie den Entwicklungsverlauf nachverfolgen können - sehen Sie, wie viele Projekte auf GitHub verwendet PYTwerden TBX.)
  • Mehr Kontrolle über bestimmte Parametertypen haben (Sie können nämlich zusammengesetzte Datentypen erstellen und die Schemata von Wertetabellen definieren)
  • Die Eigenschaft isLicensed kann zum Deaktivieren eines Tools verwendet werden, wenn ein Produkt ("ArcInfo") oder eine Erweiterung ("räumlich") nicht verfügbar ist.
  • Die Werkzeugdokumentation wird in XML-Dateien im selben Ordner wie die .pyt-Datei gespeichert
  • Nachteil: Keine Assistenten-Benutzeroberfläche für die Konfiguration von Werkzeugparametern, deutlich mehr Gerüstcode in Python, macht die Toolbox-Entwicklung zu einer eher formalen Softwareentwicklungsaufgabe, da lediglich ein Implementierungsskript hinzugefügt wird. Das erneute Laden eines Pyt zum Laden von Änderungen während der Entwicklung kann langsam sein, wenn Pyt groß ist (dies kann vermieden werden, indem Tools in andere Dateien eingefügt und importiert werden, sodass sie nicht erneut kompiliert werden müssen).

Vor einer Weile, als ich an meinem ersten Dutzend PYTWerkzeugkästen arbeitete, war ich nervös darüber, wie mühsam es war, ein einzurichten PYT, und so entwickelte ich ein Werkzeug mit dem Namentbx2pyt . Es wird eine TBXToolbox benötigen und diese PYTmit minimalem Codeverlust in eine konvertieren . Tatsächlich war das PYT, was es befähigt, zuerst ein TBX. Dies kann eine gute Möglichkeit sein, vorhandene Tools auf Wunsch in das Python Toolbox-Format zu überführen. Zumindest ist es möglich, die Parameter Ihrer Werkzeuge über die Benutzeroberfläche einzurichten, bevor Sie zum Code wechseln.

Jason Scheirer
quelle
15

Der Hilfeabschnitt mit dem Titel Vergleichen von benutzerdefinierten und Python-Toolboxen bietet einen recht guten Vergleich, warum Sie sich möglicherweise für eine andere entscheiden, obwohl ich gespannt bin, welche Vor- und Nachteile die Erstellung von Python-Toolboxen für die reale Welt mit sich bringt.

Ein klarer Nachteil , den ich gelesen habe, ist die Unfähigkeit, Modelle und Skripte in einer Python-Toolbox zu mischen / abzugleichen, wie Sie es in einer standardmäßigen benutzerdefinierten Toolbox können.

RyanDalton
quelle
11

Mein Hauptgrund für die Neigung zu Python-Toolboxen ist die Versionskontrolle und die Quellcodeverwaltung (siehe Anwenden der Versionskontrolle auf ArcGIS-Modelle ), gefolgt von der Möglichkeit, einen Code-Editor / eine IDE mit Registerkartenvervollständigung, regulären Ausdrücken und Snippet-Bibliotheken zu verwenden. etc.

Doch wie Ryan Dalton Notizen , indem Sie so verlieren Sie die Möglichkeit , Model Builder und alten Stil Werkzeuge zu verwenden - es sei denn , Sie sind bereit , die Anstrengungen , um durch den Bau des Modells wie gewohnt und dann in Python zu exportieren und dann fit Umschreiben in die .pyt. (Wenn Sie dies tun, lesen Sie die Richtlinien zum Organisieren von Python-Toolboxes (.pyt) in ArcGIS. ) Gegenwärtig ist dieser Nachteil groß genug, dass ich mich noch ernsthaft mit Python-Toolboxen beschäftige.

Wenn Sie über vorhandene Toolboxen verfügen, die Sie in .pyt konvertieren möchten, ist der Teilkonverter tbxtopyt von Jason Scheirer möglicherweise hilfreich.

Was den "zwingenden Fall" betrifft? teil der frage: wenn du schon ein paar softwareentwicklungskoteletts hast, ja auf jeden fall. Wenn Sie wie ich 3 Teile GIS Tech / Analyst und 1 Teil oder weniger Pythonista sind, nicht so sehr. (Zumindest noch nicht - ich hoffe wirklich, dass sich die eine oder andere Art der beiden Vorgehensweisen in naher Zukunft ändert.)

Matt Wilkie
quelle