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의 경우 해당 도구에는 단일 문자열 매개 변수가 필요합니다.
testouter.py의 경우 도구에 두 개의 문자열 매개 변수가 필요합니다
두 도구는 test.tbx에 있습니다.
test.gdb에는 test라는 빈 피처 클래스 하나만 있으면됩니다.
위의 어셈블이 완료되면 매개 변수로 전달 된 'abc'와 같은 문자열로 testinner 도구를 실행하면 기능 클래스 'test'가 'abc'라는 이름으로 복사됩니다.
그러나 'uvw'와 'xyz'와 같은 두 개의 문자열을 매개 변수로 사용하여 testouter 도구를 실행하려고하면 testouter.py 내의 testinner 도구가 한 번만 실행되는 것처럼 보이지만 Vista SP2의 ArcMap 10 SP2를 심각한 응용 프로그램 오류로 보냅니다. 두 번째로 사용하려고합니다.
Windows XP SP3 및 ArcGIS Desktop 10 SP2를 사용한 동일한 테스트에서도 같은 시점에 심각한 응용 프로그램 오류가 발생합니다.