เหตุใดจึงเรียนรู้ / ใช้กล่องเครื่องมือ Python บนเครื่องมือ Python Script [ปิด]


25

ฉันได้เขียนกล่องเครื่องมือ Python สองสามชุด (ซึ่งใหม่ใน ArcGIS 10.1) แต่ฉันยังตัดสินใจไม่ได้ว่าควรเขียนเมื่อใด / แทนที่จะใช้เครื่องมือ Python Script ในกล่องเครื่องมือมาตรฐาน

ฉันคิดว่าวิธีใช้ออนไลน์อาจทำให้ฉันเข้าใจได้เมื่อมันนำหน้าจุดบางจุดด้วย:

เมื่อสร้างแล้วเครื่องมือในกล่องเครื่องมือ Python ให้ประโยชน์มากมาย

อย่างไรก็ตามข้อดีห้าประการที่ระบุไว้ทั้งหมดดูเหมือนจะไม่สามารถใช้ Python ในการเขียนเครื่องมือได้และดูเหมือนจะไม่มีใครระบุข้อดีของกล่องเครื่องมือ Python บนเครื่องมือ Python Script

ข้อดีสองข้อที่ฉันนึกได้คือ:

  • ตอนนี้ฉันสามารถเขียนเครื่องมือ Python "บริสุทธิ์" ในสคริปต์ Python เดียวโดยไม่ต้องเชื่อมต่อกับไดอะล็อกที่ได้รับการประพันธ์แยกต่างหากด้วยการตรวจสอบเครื่องมือที่ดูเหมือนว่าถูกตรึงไว้ แต่ฉันยินดีที่จะใช้งานได้ดีกว่าในเรื่องนี้
  • ตอนนี้ฉันสามารถใช้รหัส (Python หรือภาษาใด ๆ ที่มีความสามารถในการเขียนไฟล์ข้อความ) เพื่อให้การเขียนกล่องเครื่องมือ Python เป็นไปโดยอัตโนมัติ แต่ฉันยังไม่ได้เจอข้อกำหนดในการทำเช่นนี้

ฉันมองกรณีที่น่าสนใจที่ทำให้ Esri ให้ความสามารถของ Python Toolbox หรือไม่ถ้าใช่มันคืออะไร

คำตอบ:


34

ทั้งสองฟังก์ชั่นนั้นใกล้เคียงกันมาก แต่ไม่เทียบเท่ากันอย่างสมบูรณ์

ร่วมกันทั้งคู่

  • รวมชุดเครื่องมือที่มีชื่อแทนเฉพาะสำหรับการระบุตัวตน
  • สามารถโทรได้จาก arcpy
  • รับกล่องโต้ตอบเครื่องมือการประมวลผลทางภูมิศาสตร์ (เป็น UI แบบเต็ม) ฟรีสำหรับแต่ละเครื่องมือ
  • สามารถเก็บรหัส Python ทั้งหมดไว้ในไฟล์เดียว (ฝังแหล่งเครื่องมือTBXไว้ใช้งานทั้งหมดในหนึ่งไฟล์PYT) และแจกจ่ายผ่านอีเมลหรือไดรฟ์เครือข่ายที่ใช้ร่วมกัน
  • เรียกใช้ในการตั้งค่าเบื้องหน้าสำหรับแอปพลิเคชันเดสก์ท็อปเสมอ การตั้งค่า "ทำงานในเบื้องหน้า" เสมอภายในรหัส ArcPy?

เฉพาะไฟล์ TBX:

  • สามารถรวมการอ้างอิงไปยังกล่องเครื่องมือระบบเครื่องมือ COM ที่กำหนดเองและเครื่องมือ. Net ที่กำหนดเอง
  • เครื่องมือสร้างแบบจำลองสามารถรวมอยู่ในกล่องเครื่องมือ
  • เอกสารประกอบเครื่องมือจะถูกเก็บไว้ในไฟล์. tbx
  • UI ตัวช่วยสร้างง่ายสำหรับการตั้งค่าพารามิเตอร์และทำการตรวจสอบรหัส
  • รัน Python Script ในคุณสมบัติเครื่องมือProcess
  • ข้อเสีย:รูปแบบไบนารีแบบทึบแสง, ไฟล์ TBX เวอร์ชันใหม่ต้องถูกบันทึกไว้อย่างชัดเจนว่าเป็นรุ่นเก่าเพื่อทำงานในซอฟต์แวร์เวอร์ชันก่อนหน้านี้ UI สามารถเป็นดาบสองคมได้เนื่องจากคุณต้องสลับระหว่างหน้าคุณสมบัติเพื่อดูว่าคุณพลาดหรือไม่ การตั้งค่า (เช่นเส้นทางญาติ)

เป็นเอกลักษณ์ของกล่องเครื่องมือ Python:

  • ข้อความธรรมดาดังนั้น toolboxes สามารถรักษาได้เช่นเดียวกับรหัสอื่น ๆ (มีประโยชน์ในสภาพแวดล้อมที่ควบคุมการแก้ไขที่ดีการขับรถที่ใช้เป็นคุณสามารถติดตามประวัติศาสตร์การพัฒนาของ - ดูที่โครงการหลายวิธีบน GitHub ใช้PYTมากกว่าTBX.)
  • มีการควบคุมที่มากขึ้นของพารามิเตอร์บางประเภท (เช่นคุณสามารถทำคอมโพสิตประเภทข้อมูลและกำหนดสกีมาของตารางค่า)
  • คุณสมบัติisLicensedสามารถใช้เพื่อปิดการใช้งานเครื่องมือหากผลิตภัณฑ์ ("ArcInfo") หรือส่วนขยาย ("spatial") ไม่สามารถใช้ได้
  • เอกสารประกอบเครื่องมือจะถูกเก็บไว้ในไฟล์ XML ในโฟลเดอร์เดียวกันกับ. pyt
  • ข้อเสีย:ไม่มีตัวช่วยสร้าง UI สำหรับการกำหนดค่าพารามิเตอร์ของเครื่องมือรหัส scaffolding ที่มีความสำคัญยิ่งกว่าใน Python เปลี่ยนการพัฒนากล่องเครื่องมือให้เป็นงานการพัฒนาซอฟต์แวร์ที่เป็นทางการมากกว่าเพียงแค่เพิ่มสคริปต์การใช้งาน โหลด pyt อีกครั้งเพื่อโหลดการเปลี่ยนแปลงในขณะที่การพัฒนาอาจช้าถ้า pyt มีขนาดใหญ่ (สามารถหลีกเลี่ยงได้โดยการใส่เครื่องมือในไฟล์อื่นและนำเข้าดังนั้นจึงไม่จำเป็นต้องรวบรวมใหม่)

ขณะที่ผ่านมาเมื่อผมได้ทำงานในโหลครั้งแรกของฉันหรือดังนั้นPYTtoolboxes ผมลนที่วิธีการที่ยุ่งยากมากก็คือการตั้งค่าPYTเป็นครั้งแรกเพื่อให้ผมพัฒนาเครื่องมือที่เรียกว่า tbx2pytมันจะใช้TBXกล่องเครื่องมือและแปลงเป็น a PYTโดยมีการสูญเสียรหัสน้อยที่สุด ในความเป็นจริงที่อำนาจมันเป็นครั้งแรกPYT TBXนี่อาจเป็นวิธีที่ดีในการเปลี่ยนเครื่องมือที่มีอยู่ให้เป็นรูปแบบ Python Toolbox หากคุณต้องการ อย่างน้อยที่สุดก็เป็นไปได้ที่จะตั้งค่าพารามิเตอร์เครื่องมือของคุณโดยใช้ UI ก่อนที่จะเปลี่ยนเป็นรหัส


15

ส่วนความช่วยเหลือที่มีชื่อว่าการเปรียบเทียบกล่องเครื่องมือแบบกำหนดเองและ Pythonมีการเปรียบเทียบที่ดีว่าทำไมคุณถึงเลือกกล่องอื่นแม้ว่าฉันจะอยากฟังข้อดี / ข้อเสียของ "โลกแห่งความจริง" จากประสบการณ์ในการสร้างกล่องเครื่องมือ Python

ข้อเสียอย่างหนึ่งที่ชัดเจนที่ฉันอ่านคือการไม่สามารถผสม / จับคู่แบบจำลอง & สคริปต์ในกล่องเครื่องมือ Python อย่างที่คุณสามารถทำได้ในกล่องเครื่องมือแบบกำหนดเองมาตรฐาน


11

เหตุผลอันดับหนึ่งของฉันสำหรับการใช้กล่องเครื่องมือหลามสำหรับการควบคุมเวอร์ชันและการจัดการซอร์สโค้ด (ดูที่การใช้การควบคุมเวอร์ชันกับโมเดล ArcGIS ) ตามมาอย่างใกล้ชิดโดยความสามารถในการใช้ตัวแก้ไขโค้ด / IDE ด้วยความสมบูรณ์ของแท็บ เป็นต้น

อย่างไรก็ตามตามบันทึกของ Ryan Daltonคุณจะสูญเสียความสามารถในการใช้ Model Builder และเครื่องมือแบบเก่ายกเว้นว่าคุณเต็มใจที่จะสร้างแบบจำลองตามปกติแล้วส่งออกไปยัง python จากนั้นเขียนใหม่ให้พอดี เป็น. pyt (ถ้าคุณทำสิ่งนี้ให้ดูที่แนวทางสำหรับการจัดระเบียบกล่องเครื่องมือหลาม (.pyt) ใน ArcGIS ) ในปัจจุบันข้อเสียนี้มีขนาดใหญ่พอที่ฉันยังได้เริ่มใช้กล่องเครื่องมือหลามอย่างจริงจัง

หากคุณมีกล่องเครื่องมือที่มีอยู่ที่คุณต้องการแปลงเป็น. pyt คุณอาจพบว่าตัวแปลงบางส่วนของtbxtopytของ Jason Scheirer มีประโยชน์

สำหรับ "กรณีที่น่าสนใจ" ส่วนหนึ่งของคำถาม: หากคุณมีการพัฒนาซอฟต์แวร์บางอย่างแล้วใช่แน่นอน ถ้าชอบฉันคุณเป็น 3 ส่วน GIS Tech / นักวิเคราะห์และ pythonista 1 ส่วนหรือน้อยกว่านั้นไม่มาก (อย่างน้อยยังไม่ได้ - ฉันจริงๆหวังว่านี้หนึ่งไบนารีหรือลักษณะอื่น ๆ ของสองการเปลี่ยนแปลงวิธีการในรุ่นอนาคตอันใกล้.)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.