Un modèle de codage commun utilisé en AML était d'exécuter un AML (avec paramètres) dans un autre AML.
Une application que je développe actuellement gagnerait à pouvoir exécuter un script Python (avec paramètres) dans un autre script Python.
Cependant, cela ne semble pas du tout simple.
En utilisant ArcGIS 10, j'expérimente avec l'encapsulation du script Python "interne" dans un outil ArcGIS qui a les paramètres. Je pensais que ce serait une question simple que le script Python "externe" utilise arcpy.ImportToolbox pour importer la boîte à outils, puis exécuter le ou les outils à l'intérieur. Cependant, jusqu'à présent, toutes mes tentatives pour exécuter l'outil "interne" à partir du script "externe" semblent simplement ignorer l'outil "interne" (aucune erreur n'est levée).
Voici du code de test pour mieux illustrer ce que j'essaie de décrire.
Mon script testinner.py est:
inputString = arcpy.GetParameterAsText(0)
newFC = "C:\\Temp\\test.gdb\\" + inputString
arcpy.Copy_management("C:\\Temp\\test.gdb\\test",newFC)
Mon script testouter.py est:
import arcpy
inputString1 = arcpy.GetParameterAsText(0)
inputString2 = arcpy.GetParameterAsText(1)
arcpy.ImportToolbox("C:\\Temp\\test.tbx")
arcpy.testinner_test(inputString1)
arcpy.testinner_test(inputString2)
Pour testinner.py, son outil a besoin d'un seul paramètre String.
Pour testouter.py, son outil a besoin de deux paramètres String
Les deux outils sont placés dans un test.tbx.
Le test.gdb a juste besoin d'une seule classe d'entités vide appelée test.
Une fois que vous avez assemblé ce qui précède, l'exécution de l'outil testinner avec une chaîne comme 'abc' transmise comme paramètre devrait entraîner la copie de la classe d'entités 'test' dans une autre appelée 'abc' OK.
Mais lorsque vous essayez d'exécuter l'outil testouter avec deux chaînes comme «uvw» et «xyz» comme paramètres, l'outil testinner dans testouter.py semble fonctionner correctement une fois, mais envoie ArcMap 10 SP2 sur Vista SP2 à une grave erreur d'application lorsque essayer de l'utiliser la deuxième fois.
Le même test avec Windows XP SP3 et ArcGIS Desktop 10 SP2 génère également une erreur d'application grave au même point.