Un modello di codifica comune utilizzato in AML era l'esecuzione di un AML (con parametri) all'interno di un altro AML.
Un'applicazione che sto attualmente sviluppando trarrebbe vantaggio dalla possibilità di eseguire uno script Python (con parametri) all'interno di un altro script Python.
Tuttavia, questo non sembra affatto semplice.
Usando ArcGIS 10, sto sperimentando il wrapping dello script Python "interno" in uno strumento ArcGIS che ha i parametri. Ho pensato che sarebbe stato semplice avere lo script Python "esterno" che utilizza arcpy.ImportToolbox per importare la toolbox e quindi eseguire gli strumenti al suo interno. Tuttavia, nel test finora tutti i miei tentativi di eseguire lo strumento "interno" dallo script "esterno" sembrano semplicemente saltare lo strumento "interno" (non viene generato alcun errore).
Ecco un po 'di codice di prova per cercare di illustrare meglio ciò che sto cercando di descrivere.
Il mio script testinner.py è:
inputString = arcpy.GetParameterAsText(0)
newFC = "C:\\Temp\\test.gdb\\" + inputString
arcpy.Copy_management("C:\\Temp\\test.gdb\\test",newFC)
Il mio script testouter.py è:
import arcpy
inputString1 = arcpy.GetParameterAsText(0)
inputString2 = arcpy.GetParameterAsText(1)
arcpy.ImportToolbox("C:\\Temp\\test.tbx")
arcpy.testinner_test(inputString1)
arcpy.testinner_test(inputString2)
Per testinner.py il suo strumento necessita di un singolo parametro String.
Per testouter.py il suo strumento necessita di due parametri String
I due strumenti sono collocati in un test.tbx.
Test.gdb necessita solo di una singola classe di funzioni vuota chiamata test.
Una volta assemblato quanto sopra, eseguendo lo strumento testinner con una stringa come 'abc' passata poiché il suo parametro dovrebbe comportare la copia della classe di caratteristiche 'test' in una chiamata 'abc' OK.
Ma quando provi a eseguire lo strumento testouter con due stringhe come 'uvw' e 'xyz' come parametri, lo strumento testinner in testouter.py sembra funzionare una volta, ma invia ArcMap 10 SP2 su Vista SP2 a un grave errore dell'applicazione quando cercando di usarlo la seconda volta.
Lo stesso test che utilizza Windows XP SP3 e ArcGIS Desktop 10 SP2 produce anche un errore grave dell'applicazione nello stesso punto.