รูปแบบการเข้ารหัสทั่วไปที่ใช้ใน AML คือการเรียกใช้ AML (พร้อมพารามิเตอร์) ภายใน AML อื่น
แอปพลิเคชันที่ฉันกำลังพัฒนาอยู่ในขณะนี้จะได้รับประโยชน์จากความสามารถในการเรียกใช้สคริปต์ Python (พร้อมพารามิเตอร์) ภายในสคริปต์ Python อื่น
อย่างไรก็ตามสิ่งนี้ดูเหมือนจะไม่ตรงไปตรงมา
ใช้ ArcGIS 10 ฉันกำลังทดลองห่อสคริปต์ Python "inner" ลงในเครื่องมือ ArcGIS ที่มีพารามิเตอร์ ฉันคิดว่ามันเป็นเรื่องง่ายที่จะให้สคริปต์ Python "ด้านนอก" ใช้ arcpy.ImportToolbox เพื่อนำเข้ากล่องเครื่องมือแล้วเรียกใช้เครื่องมือที่อยู่ภายใน อย่างไรก็ตามในการทดสอบจนถึงทุกความพยายามของฉันเพื่อเรียกใช้เครื่องมือ "Inner" จากสคริปต์ "outer" ดูเหมือนว่าจะข้ามเครื่องมือ "inner" (ไม่มีข้อผิดพลาด)
นี่คือรหัสทดสอบบางส่วนที่จะลองและอธิบายให้ดีขึ้นว่าฉันพยายามอธิบายอะไร
สคริปต์ 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 เครื่องมือนั้นต้องการพารามิเตอร์ String สองตัว
เครื่องมือทั้งสองวางอยู่ใน test.tbx
test.gdb เพียงแค่ต้องการฟีเจอร์คลาสเดียวที่ว่างเปล่าที่เรียกว่าการทดสอบ
เมื่อคุณมีการประกอบด้านบนแล้วให้เรียกใช้เครื่องมือตัวทดสอบพร้อมกับสตริงเช่น 'abc' ที่ผ่านมาเนื่องจากพารามิเตอร์ควรส่งผลให้คลาส 'ทดสอบ' ถูกคัดลอกไปยังคุณลักษณะที่เรียกว่า 'abc' ตกลง
แต่เมื่อคุณลองเรียกใช้เครื่องมือ testouter ที่มีสองสตริงเช่น 'uvw' และ 'xyz' เป็นพารามิเตอร์เครื่องมือ testinner ใน testouter.py ดูเหมือนว่าจะทำงานตกลงหนึ่งครั้ง แต่ส่ง ArcMap 10 SP2 บน Vista SP2 ไปยัง Serious Application Error เมื่อ พยายามใช้มันเป็นครั้งที่สอง
การทดสอบเดียวกันโดยใช้ Windows XP SP3 และ ArcGIS Desktop 10 SP2 ยังสร้างข้อผิดพลาดร้ายแรงของแอปพลิเคชันในจุดเดียวกัน