ArcGIS ModelBuilder può aprire il file Excel per la modifica manuale, quindi reinserire quelle modifiche nel modello?


10

Mi è stato assegnato il compito di creare un modello utilizzando ArcGIS ModelBuilder, che inizialmente esegue un paio di attività di geoprocessing, prima di unire una tabella Excel al risultato di tali geoprocessi. Tuttavia, il modello deve prima aprire effettivamente il file Excel, affinché l'utente lo modifichi manualmente, prima che l'utente salvi le modifiche e chiuda il file. Si prevede quindi che il modello unirà questo file Excel alla tabella degli attributi di un set di dati (ancora parte del modello) prima che il modello continui con una serie di altre attività di geoprocessing.

Includo di seguito uno schema schematico di alto livello per aiutare a illustrare il punto (capisco che potrebbe non avere molto senso iniziare).

Il modello viene messo in pausa mentre il file Excel viene modificato, quindi riprende una volta salvato e chiuso

Quindi il modello verrebbe eseguito, completare un paio di attività di geoprocessing, mettere in pausa per aprire un file Excel, attendere che l'utente lo modifichi, lo salvi e lo chiuda, prima di riprendere a unire quel file Excel a una tabella di attributi e quindi eseguire un numero di altre attività di geoprocessing.

Immagino che ciò richiederebbe l'incorporazione di uno o due script Python nel modello. Attualmente, però, sono solo interessato a sapere se il concetto è effettivamente possibile o meno.


1
Sono abbastanza sicuro che con gli strumenti standard per la creazione di modelli non sarai in grado di farlo poiché non c'è modo di mettere in pausa il modello, avresti anche bisogno di una sorta di trigger per attivare per dire che l'utente ha chiuso Excel per riavviare il modello. Potresti riuscire a farlo con una sorta di script inviato in un ciclo infinito guardando una bandiera in un file di testo dopo che ha generato un processo separato (Excel)? Non l'ho mai fatto e non so quali siano le insidie. Se vuoi mantenerlo in modellista, prima eseguo le modifiche di Excel, quindi eseguo il modello.
Hornbydd,

Grazie @Hornbydd - Ho avuto gli stessi pensieri. Modificare prima il file e quindi eseguire il modello è quello che ho suggerito, ma mi è stato detto che deve essere un modello integrato ...
the_bonze

1
Immagino che uno script possa guardare la data e l'ora di un file per sapere se è stato modificato, quindi riprendere il modello da lì? Pausa è il problema, penso.
the_bonze il

Sì, il modellista è progettato per automatizzare un flusso di lavoro per accelerare l'elaborazione senza una pausa indeterminata nel mezzo, cosa succede se quell'utente si spegne per pranzo, ad esempio? :) Proprio come me adesso!
Hornbydd,

Risposte:


1

Sembra che sia necessario sviluppare più uno strumento Python personalizzato che un modello in ModelBuilder. xlwto xlutilssu http://www.python-excel.org/ ti permetterà di scrivere sul tuo file Excel ( XlsxWritergestirà i file xlsx). Se le modifiche sono minori, potresti probabilmente incorporarlo in uno strumento ArcToolbox standard (con un po 'di creatività). Se si utilizza 10.1+, è possibile creare un componente aggiuntivo Python o Python Toolbox per far funzionare anche la GUI.


I componenti aggiuntivi di Python offrono già sofisticate opzioni di interfaccia grafica in 10.1+? Pensavo che solo .NET e Java AddIns fornissero questi ... Python offre solo AddIns senza alcuna GUI (comandi, strumenti).
Jürgen Zornig,

1
@ JürgenZornig Non è così facile: anothergisblog.blogspot.com/2013/07/…
Chad Cooper

Grazie @ChadCooper. Devo mantenere il modello nel generatore di modelli, quindi i componenti aggiuntivi di Python vanno bene, ma il modello come entità deve essere nel generatore di modelli anziché in uno strumento Python completo.
the_bonze il

@Chad Grazie comunque per questo simpatico tutorial ArcPy / Tkinter Quickstart ... devi provare questo!
Jürgen Zornig,

1

Ci ho pensato ed è possibile che ho trovato una nuova soluzione. È possibile impostare uno script Python in una casella degli strumenti con due parametri utente, in primo luogo la posizione del file EXE di Excel. Questo potrebbe persino essere codificato in modo intelligente per controllare un elenco di percorsi probabili di percorsi di file hardcode (Office12, Office13 ecc.).

Quindi utilizzare la funzione subprocess.call. Ci sono alcune cose davvero interessanti sull'uso di questo metodo:

  1. Non richiede librerie esterne
  2. la funzione di chiamata non consente la continuazione dello script fino a quando Excel non viene chiuso
  3. È possibile specificare il documento Excel come secondo argomento
  4. È una riga di codice!

    import subprocess subprocess.call(["C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE", "Test.xlsx"]) #Replace args with user inputs (sys.argv[1], sys.argv[2] respectively)

L'unica cosa è che non sono sicuro al 100% se questo funzionerà nel generatore di modelli, questo dovrà essere testato, tuttavia non vedo perché non lo farebbe, ma sono sicuro che sei a conoscenza di Arc una bestia temperante.

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.