คำถามติดแท็ก python-toolbox

3
เหตุใดจึงเรียนรู้ / ใช้กล่องเครื่องมือ Python บนเครื่องมือ Python Script [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันได้เขียนกล่องเครื่องมือ Python สองสามชุด (ซึ่งใหม่ใน ArcGIS 10.1) แต่ฉันยังตัดสินใจไม่ได้ว่าควรเขียนเมื่อใด / แทนที่จะใช้เครื่องมือ Python Script ในกล่องเครื่องมือมาตรฐาน ฉันคิดว่าวิธีใช้ออนไลน์อาจทำให้ฉันเข้าใจได้เมื่อมันนำหน้าจุดบางจุดด้วย: เมื่อสร้างแล้วเครื่องมือในกล่องเครื่องมือ Python ให้ประโยชน์มากมาย อย่างไรก็ตามข้อดีห้าประการที่ระบุไว้ทั้งหมดดูเหมือนจะไม่สามารถใช้ Python ในการเขียนเครื่องมือได้และดูเหมือนจะไม่มีใครระบุข้อดีของกล่องเครื่องมือ Python บนเครื่องมือ Python Script ข้อดีสองข้อที่ฉันนึกได้คือ: ตอนนี้ฉันสามารถเขียนเครื่องมือ Python "บริสุทธิ์" ในสคริปต์ Python เดียวโดยไม่ต้องเชื่อมต่อกับไดอะล็อกที่ได้รับการประพันธ์แยกต่างหากด้วยการตรวจสอบเครื่องมือที่ดูเหมือนว่าถูกตรึงไว้ แต่ฉันยินดีที่จะใช้งานได้ดีกว่าในเรื่องนี้ ตอนนี้ฉันสามารถใช้รหัส (Python หรือภาษาใด ๆ ที่มีความสามารถในการเขียนไฟล์ข้อความ) เพื่อให้การเขียนกล่องเครื่องมือ Python เป็นไปโดยอัตโนมัติ แต่ฉันยังไม่ได้เจอข้อกำหนดในการทำเช่นนี้ ฉันมองกรณีที่น่าสนใจที่ทำให้ Esri ให้ความสามารถของ …

1
แนวทางสำหรับการจัดระเบียบกล่องเครื่องมือหลาม (.pyt) ใน ArcGIS
สำหรับหนึ่งในภารกิจของฉันฉันต้องสร้างกล่องเครื่องมือที่มีสามเครื่องมือ (สคริปต์หลาม) แทนที่จะเป็น tbx ธรรมดาฉันตัดสินใจเขียนเป็น Python Toolbox (pyt) ทุกอย่างชัดเจนยกเว้นวิธี "ดี" ในการจัดระเบียบรหัส เนื่องจากฉันมีสามเครื่องมือจึงไม่ดีที่จะเก็บไว้ในไฟล์เดียว (pyt) ดังนั้นฉันตัดสินใจเก็บเครื่องมือแต่ละไฟล์ในไฟล์. py แยกต่างหาก นี่คือปัญหา: วิธีที่ดีในการจัดระเบียบไฟล์หลายไฟล์ด้วย PYT สำหรับการแจกจ่ายหรือการปรับใช้บน ArcGIS สำหรับเซิร์ฟเวอร์คืออะไร ฉันควรเก็บไว้ในระดับเดียวกันกับไฟล์ PYT หรือฉันควรวางไว้ในไดเรกทอรีย่อยบางอัน (เช่น "เครื่องมือ")? คุณสามารถแนะนำแนวทาง Esri หรือตัวอย่าง "กล่องเครื่องมือ PYT ขนาดใหญ่" ใด ๆ ได้หรือไม่ ฉันไม่พบสิ่งใดในหัวข้อนี้ ในเวอร์ชั่น 10.0 มีชื่อว่าโครงสร้างโฟลเดอร์ ToolShareที่ฉันใช้ นี่เป็นคำถามของรูปแบบการเข้ารหัสเพิ่มเติม เพราะความคิดในการสร้างไฟล์ PYT หนึ่งไฟล์ที่มีโค้ดตั้งแต่ 500-1,000 บรรทัดขึ้นไปนั้นดูไม่ดีสำหรับฉันและฉันเชื่อว่ามันไม่ใช่วิธี "pythonic"

2
กำลังรีเฟรชโมดูลที่อิมพอร์ตในกล่องเครื่องมือ ArcGIS Python?
เมื่อใช้กล่องเครื่องมือหลาม (.pyt) ใน ArcMap โดยทั่วไปแล้วฉันจะทำตามรูปแบบที่ไฟล์. pyt นั้นเป็นตัวหุ้มในการรวบรวมอาร์กิวเมนต์อินพุตและกำหนดเครื่องมือเอง รหัสสนับสนุนจะถูกเก็บไว้ในโมดูลที่ทดสอบแยกหน่วยได้ ตัวอย่าง: import supporting_module class MyTool(object): ... def execute(self, parameters, messages): """The source code of the tool.""" some_input = parameters[0].valueAsText some_output = parameters[1].valueAsText supporting_module.do_something(some_input, some_output) arcpy.SetParameter(2, some_output) มันใช้งานได้ดีมาก แต่ฉันพบเจอปัญหาที่น่าผิดหวังอย่างหนึ่งระหว่างการพัฒนา คลิกขวา -> รีเฟรชที่. pyt ใน ArcMap รีเฟรชโค้ดของไฟล์. pyt เท่านั้น มันไม่รีเฟรชโมดูลที่นำเข้าดังนั้นฉันต้องปิดและเปิด ArcMap ใหม่ทุกครั้งที่ฉันเปลี่ยนบางสิ่งที่นั่น โชคดีที่ฉันกำลังทดสอบโค้ดอย่างอิสระฉันไม่ต้องทำแบบนี้เลย แต่มันก็ยังเป็นปัญหาที่สำคัญ …

4
การนิยามคำอธิบายพารามิเตอร์สำหรับกล่องเครื่องมือ Python ช่วยไหม?
ฉันพยายามสร้างกล่องเครื่องมือหลามสำหรับแอปพลิเคชั่น ArcMap ของเรา (เช่น MyTool.pyt) ฉันจะเห็นว่าข้อความช่วยเหลือถูกกำหนดด้วยแอตทริบิวต์ self.description คลาส อย่างไรก็ตามเมื่อฉันรันโปรแกรมแล้วคลิกลงในฟิลด์พารามิเตอร์ใด ๆ ข้อความช่วยเหลือ / คำอธิบายจะว่างเปล่า ฉันต้องการให้ฟิลด์คำอธิบายสำหรับแต่ละพารามิเตอร์ สิ่งนี้สำเร็จได้อย่างไร หลังจากคำตอบบางอย่างฉันเห็นว่าผ่านเมนูบริบท 'คำอธิบายรายการ' คลิกขวามีหลายฟิลด์ที่อาจมีการเติมข้อมูล มีวิธีการ 'pythonic' ทำเช่นนี้? นั่นคือเพียงฝังคุณลักษณะบางอย่างในคลาสไฟล์. pyt ตัวอย่างเช่นในนิยามกล่องเครื่องมือ. pyt คุณมีคลาสกล่องเครื่องมือ: import arcpy class Toolbox(object): def __init__(self): """Define the toolbox (the name of the toolbox is the name of the .pyt file).""" self.label = "My …

1
งาน ArcGIS Pro สนับสนุนเครื่องมือ Python Toolbox ซึ่งทำงานกับ Map frames หรือไม่?
งาน ArcGIS Pro สนับสนุนเครื่องมือ Python Toolbox ซึ่งทำงานกับ Map frames หรือไม่? เหตุผลที่ฉันถามคือฉันติดเมื่อพยายามทำต่อไปนี้: เริ่ม ArcGIS Pro 1.1.1 สร้างโครงการใหม่ - ฉันเรียกว่า TestProject ของฉันและวางใน C: \ Temp ใช้บานหน้าต่างโครงการเพื่อเพิ่มการเชื่อมต่อโฟลเดอร์ไปยังตำแหน่งที่ฉันมีไฟล์รูปร่างของประเทศต่างๆในโลกจาก Natural Earth () ลากและวาง ne_10m_admin_0_countries.shp ลงในแผนที่เพื่อสร้างเลเยอร์ที่เรียกว่า ne_10m_admin_0_countries แทรกเค้าโครงใหม่ - ฉันใช้แนวนอน A3 แทรกกรอบแผนที่ใหม่ลงในเค้าโครง ในบานหน้าต่างโครงการสร้างกล่องเครื่องมือ Python ใหม่ในโฟลเดอร์ TestProject - ฉันเรียกว่า TestPYT ของฉัน คลิกขวาที่ TestPYT ในบานหน้าต่างโครงการเพื่อแก้ไข แทนที่รหัสด้วยด้านล่างเพื่อให้เครื่องมือ Python สองเครื่องมือที่เรียกว่าชิลีและสวิตเซอร์แลนด์ …

1
ตั้งค่าเริ่มต้นสำหรับตารางค่าในเครื่องมือกล่องเครื่องมือหลาม
ฉันสร้างเครื่องมือ Python Toolbox เพื่อจัดลำดับฟิลด์ใหม่และสร้างคลาสฟีเจอร์ใหม่ด้วยฟิลด์ที่เรียงลำดับใหม่ เครื่องมือทำงานได้เป็นอย่างดีและฉันสามารถใช้ตารางค่าเพื่อให้ผู้ใช้จัดเรียงเขตข้อมูลตามลำดับที่พวกเขาเลือกหรือพวกเขาสามารถกรอกค่าอันดับสำหรับแต่ละเขตข้อมูล อย่างไรก็ตามส่วนที่น่ารำคาญของเครื่องมือนี้คือต้องเพิ่มเขตข้อมูลทั้งหมดในตารางค่าทีละครั้งก่อนที่จะจัดลำดับใหม่ ฉันกำลังพยายามตั้งค่านี้เพื่อนำฟิลด์ทั้งหมดไปยังตารางค่าโดยค่าเริ่มต้นและสามารถลบฟิลด์ที่ไม่ต้องการใด ๆ ก่อนที่จะจัดลำดับใหม่ มีใครเคยประสบความสำเร็จทำอะไรแบบนี้มาก่อนหรือไม่ ฉันพยายามทำสิ่งนี้ให้สำเร็จในวิธี UpdateParameters นี่คือรหัสที่ฉันพยายาม: import arcpy import os class Toolbox(object): def __init__(self): """Define the toolbox (the name of the toolbox is the name of the .pyt file).""" self.label = "Reorder Fields" self.alias = "Reorder Fields" # List of tool classes associated …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.