AML中使用的一种常见编码模式是在另一个AML中运行AML(带有参数)。
我当前正在开发的应用程序将从能够在另一个Python脚本中运行Python脚本(带有参数)中受益。
但是,这似乎一点也不简单。
使用ArcGIS 10,我正在尝试将“内部” Python脚本包装到具有参数的ArcGIS工具中。我认为让“外部” Python脚本使用arcpy.ImportToolbox导入工具箱,然后在其中运行工具将是一件简单的事情。但是,到目前为止,在测试中,我从“外部”脚本运行“内部”工具的所有尝试似乎只是跳过了“内部”工具(不会引发任何错误)。
这是一些测试代码,试图更好地说明我要描述的内容。
我的testinner.py脚本是:
inputString = arcpy.GetParameterAsText(0)
newFC = "C:\\Temp\\test.gdb\\" + inputString
arcpy.Copy_management("C:\\Temp\\test.gdb\\test",newFC)
我的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)
对于testinner.py,其工具需要单个String参数。
对于testouter.py,其工具需要两个String参数
这两个工具放置在test.tbx中。
test.gdb仅需要一个名为test的空要素类。
完成上述组装后,使用传入的字符串(例如abc)作为参数运行testinner工具,应将要素类“ test”复制到一个名为“ abc”的OK。
但是,当您尝试使用两个字符串(例如'uvw'和'xyz')作为参数运行testouter工具时,testouter.py中的testinner工具似乎运行一次,但是在以下情况下将Vista SP2上的ArcMap 10 SP2发送给严重应用程序错误:尝试第二次使用它。
使用Windows XP SP3和ArcGIS Desktop 10 SP2进行的同一测试也会在同一点产生严重的应用程序错误。