Quando utilizzare ModelBuilder su script Python e viceversa?


71

Sono nuovo dello scripting Python in ArcGIS ma non nuovo in ModelBuilder.

Vorrei conoscere i vantaggi di Python vs ModelBuilder.

Quando dovremmo scrivere script Python per l'automazione GIS anziché utilizzare ModelBuilder?

Quali sono le capacità di automazione di Python che non possiamo trovare in ModelBuilder?

Risposte:


82

Credo che l'utente debba definire chiaramente i propri obiettivi prima di decidere quale set di strumenti utilizzare. Gli script ModelBuilder e Python eccellono in diverse attività. Alcuni pensieri:

  1. ModelBuilder non ha capacità di mappatura, mentre lo fa arcpy.mapping .
  2. Python può essere utilizzato per ottimizzare i flussi di lavoro, ad esempio con il pacchetto multiprocessore o con l' elaborazione parallela .
  3. Python consente loop nidificati e altri utili strumenti di logica iterativa. Per ottenere un risultato simile in ModelBuilder, dovresti costruire modelli nidificati intricati e complicati.
  4. La semplice manipolazione del testo è molto semplice con Python e molto difficile o impossibile con ModelBuilder.

    ad es. per rinominare un elenco di nomi di file da, ad esempio "m_2010_naip_2310345_nw.img" a "2310345nw.img" può essere facilmente realizzato con Python usando il os.pathmodulo.

D'altro canto:

  1. ModelBuilder è molto utile per mettere rapidamente insieme strumenti comuni ed eliminare la necessità di script di debug.

  2. ModelBuilder ha un iteratore ricorsivo molto utile che è facile da implementare per scorrere ciclicamente cartelle e sottocartelle.

  3. ModelBuilder eccelle nel rappresentare visivamente e intuitivamente il flusso di lavoro per attività complicate .

  4. ModelBuilder può incorporare strumenti di script Python .


5
Descrive chiaramente le differenze tra Python e Model Builder in ArcGIS. Grazie
BBG_GIS

24
Vorrei anche aggiungere: 1. è possibile eseguire lo script Python all'esterno di ArcMap 2. È possibile utilizzare ArcObjects in Python, 3. Potrebbero esserci alcune differenze di velocità.
Tomek,


3
+1 ANELLI NIDATI e arcpy.mapping! Mi piace la possibilità di fare calcoli all'interno di uno script e aggiungerli alle tabelle degli attributi o meglio ancora al layout della mappa (area di ciascun tipo di zona umida, ad esempio).
Roy,

2
Ho letto scripting in pitone per il libro ArcGIS. Aggiungo anche alcune ulteriori funzionalità: 1- i cursori degli script consentono di scorrere i record in una tabella, leggere le righe esistenti e inserire nuove righe. 2- lo scripting può essere utilizzato per avvolgere altri software, ovvero per incollare insieme applicazioni. ad esempio python può essere utilizzato per accedere alle funzioni in Microsoft Excel o nel pacchetto statistico R. Lo script 3-A può essere eseguito come script autonomo su disco al di fuori di ArcGIS. Non è necessario eseguire ArcMap o ArcCatalog per lo script lavoro. (Scripting Python per ArcGIS, capitolo 2, pagina 39)
BBG_GIS

24

Se lavori esclusivamente all'interno dei confini di ArcGIS, ci sono alcune considerazioni che prenderei in considerazione quando tento di determinare l'approccio da adottare.

  • Cosa stai cercando di realizzare,
  • Quali sono le tue attuali competenze,
  • Condividerai il tuo lavoro con altri da usare, imparare o manipolare e
  • Chi è il tuo pubblico previsto.

Alla luce di tali considerazioni:

  1. Spesso è più veloce e più semplice creare un processo in ModelBuilder che in Python, a meno che parte del processo non possa essere replicata in ModelBuilder.
  2. Se non conosci Python e non hai intenzione di impararlo, ModelBuilder è un'ottima opzione.
  3. Se non conosci Python e vuoi imparare a incorporarlo nel tuo set di abilità, ModelBuilder è un ottimo modo per iniziare creando modelli semplici, quindi esportandoli in Python in modo da avere lo scheletro del processo finale pre-costruito per te . Questo metodo ha un costo, in quanto vi sono molte informazioni e variabili estranee che di solito vengono create durante il processo di conversione, ma è ancora un ottimo modo per iniziare l'apprendimento.
  4. Se stai costruendo strumenti per uso personale, utilizzando qualunque metodo ti senti più a tuo agio è di solito la strada da percorrere. Personalmente uso entrambi, a seconda delle mie esigenze.
  5. Se stai pianificando di condividere le tue analisi con gli altri e vuoi condividere il tuo modello / script con altri fanno parte della tua documentazione di processo, un modello è generalmente molto più facile da seguire e capire per persone non tecniche.

Probabilmente non c'è risposta a "che è meglio" per uso personale, ma se stai cercando possibilità di impiego a lungo termine, imparando Python ti distinguerai da quelli che sanno solo come usare gli strumenti preprogrammati, o so solo come usare ModelBuilder. Ti dai anche la possibilità di uscire dai confini di Python per ArcGIS (ArcPy) e iniziare ad automatizzare molte più attività e progetti utilizzando altre librerie GIS proprietarie e open source, oltre a molte librerie non GIS (es. Database , manipolazione delle immagini, statistiche, ecc.).


20

Model Builder è un linguaggio di programmazione visiva fantastico e facile da imparare e un buon accesso alla programmazione GIS in generale. Ma in alcune cose Python può fare di più.

Un esempio è l'integrazione di librerie GIS non ESRI. Quasi tutti i GIS Open Source possono essere indirizzati anche tramite Python (ad es. GRASS , Sextante , QGIS , SAGA ). Questo mi ha aiutato molto, perché ho solo una licenza ArcView. Quindi ogni volta che non riesco a utilizzare un determinato strumento di geoprocessing in ArcGIS, guardo quali altre opzioni sono disponibili in GIS Open Source. Prendo quindi questi strumenti OpenSource e li combino con gli strumenti ArcGIS in uno script Python più grande o li integra in ModelBuilder tramite uno script Python più piccolo.

Sono sicuro che altri membri possano nominare più vantaggi.


9

Quando si utilizza Python e ArcGIS, si ottiene l'intera funzionalità di Python oltre a quella già presente in ArcGIS. Se hai bisogno di questo tipo di potere e flessibilità dipende dai tuoi desideri. Inoltre, conoscere e sfruttare davvero un linguaggio di programmazione come Python richiede tempo. Se questo investimento ne vale la pena, dipende da te. Tuttavia, per l'elaborazione di dati seri, un vero linguaggio di scripting è un'ottima aggiunta al tuo arsenale.

Oltre a qualsiasi funzionalità che ModelBuilder potrebbe perdere, c'è anche una discussione più fondamentale. In generale, gli script sono molto più adatti per creare flussi di lavoro complessi. Il codice viene elaborato dall'alto verso il basso e le attività complesse possono essere suddivise in attività secondarie più piccole utilizzando ad esempio le funzioni. o oggetti. Uno strumento grafico come il modellista tende a diventare un grande spaghetti.


7

Sono parziale nella creazione di script Python. È più divertente scrivere codice che pasticciare con linee di collegamento a scatole e simili, almeno per me.

La cosa veramente fantastica dello scripting Python è che puoi programmare l'esecuzione degli script in un momento che è conveniente per te. Se hai uno script che richiede del tempo per essere completato, o deve essere eseguito al di fuori del normale orario di lavoro, questo è davvero conveniente. Puoi vedere un esempio di come programmare uno script qui .

E come menziona @Aaron, puoi facilmente impostare il looping in uno script Python.

Se stai solo partendo con gli script Python, potresti voler creare un modello con Model Builder ed esportarlo come script Python. Lo faccio a volte se non riesco a capire come usare diversi strumenti in uno script. Potrebbe aiutarti a capire come mettere insieme gli script.


5

Ho scoperto che mi sembra di rimanere bloccato senza soluzione più con Model Builder che con lo scripting Python. La natura un po '"scatola nera" del modellista per me rende più difficile trovare dove si trova il problema.

Ho anche scoperto che posso trovare molto più aiuto su Python. Tendo a trovare molti thread e argomenti sul vicolo cieco sul modellista. Ci sono anche altri esempi da seguire, dove come con Python, probabilmente puoi trovare piccoli snipet della maggior parte delle parti di qualsiasi script che stai scrivendo.

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.