Perché apprendere / utilizzare le caselle degli strumenti di Python tramite gli strumenti di script Python? [chiuso]


25

Ho scritto alcuni Python Toolbox (che sono nuovi in ​​ArcGIS 10.1), ma devo ancora decidere se / quando dovrei scriverli piuttosto che Python Script Tools in un toolbox standard.

Ho pensato che la Guida in linea potesse illuminarmi quando si prefigge alcuni punti con:

Una volta creati, gli strumenti in una casella degli strumenti di Python offrono molti vantaggi

Tuttavia, tutti e cinque i vantaggi elencati sembrano non poter utilizzare Python per scrivere strumenti e nessuno sembra specificare un vantaggio di Python Toolboxes rispetto a Python Script Tools.

I due vantaggi che mi vengono in mente sono:

  • Ora posso scrivere uno strumento Python "puro" in un singolo script Python senza doverlo collegare a una finestra di dialogo creata separatamente con la sua convalida strumento che sembra essere stata incollata ma sono felice di essere pragmatico piuttosto che puro in questo senso
  • Ora potrei usare il codice (Python o qualsiasi linguaggio in grado di scrivere file di testo) per automatizzare la scrittura di toolbox Python ma devo ancora imbattermi in un requisito per farlo

Sto trascurando il caso convincente che ha portato Esri a fornire la funzionalità Python Toolbox e, in caso affermativo, che cos'è?

Risposte:


34

I due sono molto, molto vicini nelle funzionalità ma non completamente equivalenti.

Comune ad entrambi

  • Include un set di strumenti con un alias univoco per l'identificazione
  • Può chiamare da arcpy
  • Ottieni una finestra di dialogo dello strumento di Geoprocessing (essenzialmente un'interfaccia utente completa) gratuitamente per ogni strumento
  • Può mantenere tutto il codice Python in un file (incorporando l'origine dello strumento TBX, tenendo in sé tutta l'implementazione PYT) e distribuendolo via e-mail o unità di rete condivise
  • Esegui sempre in primo piano per le applicazioni desktop. Impostazione "Esegui sempre in primo piano" nel codice ArcPy?

Unico ai file TBX:

  • Può includere riferimenti a toolbox di sistema, strumenti COM personalizzati e strumenti .Net personalizzati
  • Gli strumenti di Model Builder possono essere inclusi nella casella degli strumenti
  • La documentazione dello strumento è memorizzata nel file .tbx
  • Interfaccia utente guidata semplice per l'impostazione dei parametri e l'esecuzione del codice di convalida
  • Esegui Python Script nella proprietà dello strumento Processo
  • Svantaggio: formato binario opaco, le versioni più recenti dei file TBX devono essere esplicitamente salvate come versioni precedenti per funzionare nelle versioni precedenti del software, l'interfaccia utente può essere un'arma a doppio taglio poiché devi passare da una pagina di proprietà all'altra per vedere se hai perso un impostazione (come percorsi relativi)

Unico alle toolbox di Python:

  • Testo normale, in modo da cassette possono essere trattati come qualsiasi altro codice (utile in ambienti dove il controllo di revisione buona attrezzatura viene utilizzata come si può risalire la sua storia di sviluppo - un'occhiata a come molti progetti su GitHub utilizzare PYTsopra TBX.)
  • Avere un maggiore controllo su determinati tipi di parametri (in particolare è possibile eseguire tipi di dati compositi e definire schemi di tabelle di valori)
  • La proprietà isLicensed può essere utilizzata per disabilitare uno strumento se un prodotto ("ArcInfo") o un'estensione ("spaziale") non è disponibile.
  • La documentazione dello strumento è archiviata in file XML nella stessa cartella di .pyt
  • Svantaggio: nessuna interfaccia utente guidata per la configurazione dei parametri dello strumento, un codice di impalcatura significativamente maggiore in Python, trasforma lo sviluppo di Toolbox in un'attività di sviluppo software più formale rispetto alla semplice aggiunta di uno script di implementazione. Ricaricare un pyt per caricare le modifiche durante lo sviluppo può essere lento se pyt è grande (questo può essere evitato inserendo strumenti in altri file e importando in modo che non debbano essere ricompilati).

Qualche tempo fa, mentre stavo lavorando alla mia prima dozzina di PYTcassette degli attrezzi, mi sono agitato per la seccatura di creare una PYTper la prima volta, quindi ho sviluppato uno strumento chiamatotbx2pyt . Prende una TBXcassetta degli attrezzi e la converte in una PYTcon una perdita minima di codice. In effetti, il PYTpotere che è stato prima a TBX. Questo può essere un buon modo per trasferire gli strumenti esistenti nel formato Python Toolbox se lo desideri. Per lo meno, consente di impostare i parametri dei tuoi strumenti utilizzando l'interfaccia utente prima di passare al codice.


15

La sezione della guida intitolata Confronto tra toolbox personalizzati e Python presenta un confronto abbastanza buono del perché potresti scegliere uno rispetto all'altro, anche se sarei curioso di sentire i vantaggi / gli svantaggi del "mondo reale" da quelli con esperienza nella creazione di toolbox Python.

Un chiaro svantaggio che ho letto è l'incapacità di mescolare / abbinare modelli e script in una casella degli strumenti Python, come è possibile in una casella degli strumenti personalizzata standard.


11

Il motivo principale per cui mi spingo verso le caselle degli strumenti di Python è il controllo della versione e la gestione del codice sorgente (vedere Applicazione del controllo della versione ai modelli ArcGIS ), seguito da vicino con la possibilità di utilizzare un editor di codice / IDE con il completamento di tabulazione, espressioni regolari, librerie di frammenti, eccetera.

Tuttavia, come osserva Ryan Dalton , così facendo perdi la possibilità di utilizzare Model Builder e strumenti di vecchio stile - a meno che tu non sia disposto a passare lo sforzo di costruire il modello come al solito e quindi esportare in Python e quindi riscrivere per adattarlo nel .pyt. (Se lo fai, dai un'occhiata alle Linee guida per l'organizzazione di Python Toolboxes (.pyt) in ArcGIS ). Allo stato attuale questo svantaggio è abbastanza grande che non ho ancora intrapreso seriamente l'uso di toolbox python.

Se disponi di toolbox esistenti che desideri convertire in .pyt, potresti trovare utile il convertitore parziale tbxtopyt di Jason Scheirer .

Per quanto riguarda il "caso convincente?" parte della domanda: se hai già delle braciole di sviluppo software, sì sicuramente. Se come me sei 3 parti GIS Tech / Analyst e 1 parte o meno pythonista, non così tanto. (Almeno non ancora - spero davvero che questa o l'altra natura binaria dei due approcci cambi in una versione futura.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.