Обычным шаблоном кодирования, используемым в 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.
После того, как вы собрали все вышеперечисленное, запуск инструмента testinner с передачей строки, подобной 'abc', в качестве параметра которой должен привести к тому, что класс пространственных объектов 'test' будет скопирован в тот, который называется abc.
Но когда вы пытаетесь запустить инструмент testouter с двумя строками, такими как 'uvw' и 'xyz' в качестве параметров, инструмент testinner в testouter.py, кажется, запускается один раз, но отправляет ArcMap 10 SP2 в Vista SP2 в серьезную ошибку приложения, когда пытаясь использовать его во второй раз.
Тот же тест с использованием Windows XP SP3 и ArcGIS Desktop 10 SP2 также выдает серьезную ошибку приложения в той же точке.