ข้อดีและข้อเสียของ Python Add-in กับ. NET Add-in กับ ArcGIS for Desktop คืออะไร?


11

ฉันพบในความช่วยเหลือของ ESRI .NET:

หลาม

แอปพลิเคชั่น ArcGIS Desktop ทั้งหมดมีภาษาสคริปต์ฝังตัวที่เรียกว่า Python ArcGIS หลายพื้นที่โดยเฉพาะอย่างยิ่งการประมวลผลทางภูมิศาสตร์สามารถเข้าถึงได้ผ่าน Python แอพพลิเคชั่นการเขียนโปรแกรมอินเทอร์เฟซ (API) ที่ง่ายขึ้นทำให้ง่ายต่อการเขียนและสร้างงานทั่วไปโดยอัตโนมัติ สคริปต์ Python นั้นใช้งานร่วมกันได้ง่ายและสามารถสร้างได้โดยไม่มีสภาพแวดล้อมการพัฒนาภายนอก มีโมดูล Python ของโดเมนสาธารณะที่หลากหลายซึ่งมุ่งเน้นที่สาขาต่าง ๆ เช่นวิทยาศาสตร์วิศวกรรมและคณิตศาสตร์ ด้วยจุดแข็งทั้งหมด Python จึงไม่เหมาะกับทุกงานการตั้งโปรแกรม แม้ว่าความครอบคลุมจะดีขึ้น แต่พื้นที่ทั้งหมดของ ArcGIS นั้นไม่ได้รับการเปิดเผยใน Python นอกจากนี้ประสบการณ์การแก้ไขและการดีบักใน Python นั้นไม่ได้ซับซ้อนหรือใช้งานง่ายเหมือนกับที่รวมอยู่ในสภาพแวดล้อมการพัฒนาเชิงพาณิชย์เช่น Visual Studioสุดท้ายคุณไม่สามารถฟังและตอบสนองต่อเหตุการณ์ ArcGIS ใช้อินเตอร์เฟซ COM หรือเสียบเข้ากับจุดต่อ COM หลายจุดของ ESRI โดยใช้ Python

และใน ArcGIS Desktop ช่วย:

ArcGIS 10.1 แนะนำ Python ในรายการภาษาสำหรับการเขียนโปรแกรมเสริมบนเดสก์ท็อปทำให้คุณมีทางออกที่ง่ายในการขยายการทำงานของเดสก์ท็อป เพื่อให้การพัฒนา Python เพิ่มเติมง่ายขึ้นคุณต้องดาวน์โหลดและใช้ Python Add-In Wizard เพื่อประกาศประเภทของการปรับแต่ง ตัวช่วยสร้างจะสร้างไฟล์ที่จำเป็นทั้งหมดที่จำเป็นสำหรับการเพิ่มเข้าใช้งาน

ถ้า Python และ. NET add-ins มีฟังก์ชั่นเดียวกันหรือไม่ นั่นหมายความว่าฉันสามารถทำสิ่งเดียวกันใน Python เป็น. NET ได้หรือไม่?


มันบอกว่าที่ไหน "Python และ. NET มีคุณสมบัติเดียวกันในการสร้าง Add-in"?
PolyGeo

ขอโทษฉันไม่ดีแสดงว่าฉันหมายถึงอะไร (ฉันอัปเดตโพสต์)
user7172

1
implement a COM interface, or plug into ESRI’s many COM extensibility points using Pythonนั่นเป็นเรื่องแปลก Python สามารถทำงานได้ดีกับ COM
นาธาน W

อันที่จริงฉันได้สร้าง Python Add-in (เล็กน้อย) ซึ่งใช้ ArcObjects ผ่าน comtypes อย่างไรก็ตามฉันยังไม่ได้ลองใช้งานส่วนต่อประสาน COM ใน Python ฉันไม่แน่ใจว่ามันเป็นไปได้หรือยากแค่ไหนเมื่อเทียบกับ. NET นอกจากนี้ยังไม่มีประเภทของ Add-in ที่อนุญาตให้ทำการลงทะเบียนอัตโนมัติด้วย COM ดังนั้นสิ่งที่ล้ำสมัยกว่าบางอย่างจะทำงานได้ดีขึ้นด้วยองค์ประกอบ COM แบบดั้งเดิมที่สามารถลงทะเบียนได้โดยตัวติดตั้งหรือ (ESRI) RegAsm
blah238

1
นี่ไม่ใช่ ArcGIS แต่นี่เป็นวิธีที่ฉันสร้างการนำอินเตอร์เฟส COM มาใช้โดยใช้ Python สำหรับ MapInfo nathanw.net/2011/04/07/using-python-and-mapinfo-with-callbacks ฉันจะบอกว่ามันง่ายขึ้นแล้ว NET: )
Nathan W

คำตอบ:


24

คำตอบสำหรับคำถามนี้คือใช่และไม่ใช่ เป็นไปได้ด้วยความพยายามที่จะทำทุกอย่างใน Python ที่คุณสามารถทำได้ใน Net แต่ง่ายและเป็นไปได้เป็นสองสิ่งที่แตกต่างกันมาก ต่อไปนี้ที่การตีความที่ง่ายที่สุดคือไม่มี , Python Add-Ins ไม่สามารถทำเท่าที่ .Net Add-Ins อย่างไรก็ตามงาน Python Add-In สามารถทำได้สำเร็จง่ายกว่าและเร็วกว่าในการนำไปใช้และทดสอบ

จากมุมมองทางเทคนิคล้วนๆ ArcGIS Desktop Add-In Framework มีฟังก์ชันการทำงานต่อไปนี้:

  • สคีมาที่ใช้ XML ได้ดีสำหรับการอธิบายชุดของจุดรวมเดสก์ท็อปและส่วนประกอบทั่วไป: ปุ่ม, แถบเครื่องมือ, เมนู, เครื่องมือ, เมนูหลายรายการและส่วนขยายรวมถึงวิธีการเชื่อมต่อสิ่งเหล่านี้ได้อย่างง่ายดาย รหัสของคุณไปยังเดสก์ท็อป ArcGIS
  • รูปแบบไฟล์และโครงสร้างไฟล์ ( .esriaddin) สำหรับแจกจ่ายรหัสการปรับแต่งเดสก์ท็อป
  • กลไกสำหรับการติดตั้งการตรวจสอบและการแคชที่ติดตั้ง.esriaddinsดังนั้นหากไฟล์ต้นฉบับของ Add-In ที่หายไปมีการเปลี่ยนแปลงมันจะโหลดไฟล์ที่ถูกเปลี่ยนใหม่ไปยังแคชภายในเดสก์ท็อป
  • ชุดความปลอดภัยและกลไกการตรวจสอบความถูกต้องของรหัสใน Add-In: การเซ็นชื่อแบบดิจิทัลของ.esriaddinไฟล์การควบคุมดูแลในระดับที่จำเป็นต้องมีการรับรองความถูกต้องเพื่ออนุญาตการติดตั้ง Add-In

สิ่งที่กรอบการเพิ่มไว้ในที่นี่ขาดคือสัญญาที่เป็นทางการของพฤติกรรมหรือการทำงานด้านหลังปุ่ม ฯลฯ เมื่อคุณติดตั้ง. SDK สุทธิสำหรับ ArcGIS คุณจะได้รับการรวม Visual Studio ในรูปแบบของตัวช่วยสร้าง Add-In ในกล่องโต้ตอบการจัดการโครงการ , เอกสาร, โค้ดขนาดเล็ก, การผูก ArcObjects ฯลฯ ดังนั้นเมื่อคุณผ่านจุดเข้าสู่เฟรมเวิร์ก Add-In ที่จัดเตรียมไว้แล้ว. Net Add-In จะช่วยให้คุณไปได้ตลอดเวลาด้วย ArcObjects APIs ที่มาพร้อมกับ รวมถึงมีห้องสมุดของตัวอย่างรหัสของงานทั่วไปที่มีให้ใช้แล้ว. ไม่มี Python Developer SDK ใน ArcGIS: ฟังก์ชั่นทั้งหมดของ Python ที่เปิดเผยผ่าน arcgisscripting / arcpy และรวมอยู่ในผลิตภัณฑ์แล้ว ดังนั้นที่ SDK สุทธิมาเป็นดาวน์โหลดขนาดใหญ่สิ่งที่ใกล้เคียงที่สุดใน Python คือการดาวน์โหลด Add-In Wizard ที่ค่อนข้างเล็ก

ในทางกลับกันPython มีความสามารถในการบริโภค / ใช้งานอินเตอร์เฟส COMแต่การใช้ COM จาก Python นั้นไม่ได้รวมอยู่กับ ArcGIS SDK ใด ๆ หรือจัดทำเป็นเอกสารในระบบช่วยเหลือ ArcGIS หากคุณยังใหม่กับการพัฒนาใน ArcGIS สิ่งนี้น่าจะเป็นอุปสรรคในการเข้ามาผลักคุณออกไปนอกเสียจากว่าคุณจะรู้ว่ากำลังทำอะไรอยู่ คุณสามารถทำ COM ใน Python ได้ที่นี่ แต่ใกล้Turing Tarpitมากพอที่จะพิสูจน์เวลาที่ใช้นอกเสียจากว่าคุณจะเป็นผู้ใช้ระดับผู้เชี่ยวชาญที่คุ้นเคยกับ ins และ outs ของ COM และ ArcObjects

ผมอยากแนะนำให้คุณมองสิ่งที่คุณสามารถทำอะไรกับ arcpy คุณสามารถทำงานจำนวนมากโดยอัตโนมัติเช่นการเรียกเครื่องมือ Geoprocessingและทำการจัดการแบทช์ของเอกสารแผนที่และ Python Add-Ins ช่วยให้คุณใช้ sink เหตุการณ์ที่กำหนดไว้อย่างดีและการควบคุมการโต้ตอบบางอย่างนอกเหนือจากความสามารถพื้นฐานของ arcpy หากคุณไม่สามารถคิดวิธีที่จะทำให้งานของคุณสำเร็จใน Python ตามที่เอกสารระบุไว้ (คุณต้องการการโต้ตอบกับส่วนต่อประสานผู้ใช้ที่ซับซ้อนหรือขอเกี่ยวกับเหตุการณ์ที่ไม่ได้เปิดเผยใน Python Add-In Wizard หรือใช้สิ่งที่มีอยู่ใน ArcObjects เท่านั้น) จากนั้นทำการพัฒนาใน. Net Add-In

ขออภัยนี่เหมาะสมกว่าคำตอบใช่หรือไม่ใช่อย่างหนัก แต่ก็ควรให้คำตอบว่าคุณควรไปเส้นทาง Python หรือ. Net ใน Add-In ของคุณหรือไม่

ฉันคิดว่าฉันควรเพิ่มการเปิดเผยนี้:ฉันออกแบบและพัฒนาฟังก์ชันการทำงานเฉพาะของ Python ให้มากขึ้นเพื่อ Add-In ใน ArcGIS


ฉันสงสัยว่าคำตอบนี้จาก 2013 และ Desktop 10.1 ยังคงเป็นปัจจุบัน ตัวอย่างเช่นดูเหมือนว่า python add-in ตอนนี้เรียกว่ากล่องเครื่องมือหลาม? ความสามารถอื่น ๆ อาจมีการเปลี่ยนแปลงทั้งในไลบรารี Python และ SDK
intotecho

2

ข้อเสียอย่างหนึ่งของการพัฒนา Add-in ใน. NET คือ ArcGIS รุ่นใหม่แต่ละรุ่นใช้ ArcObjects รุ่นที่เข้ากันไม่ได้และ Visual Studio รุ่นที่เข้ากันไม่ได้ ไบนารีที่สร้างโดย. NET Add-in โดยทั่วไปจะเข้ากันได้กับ ArcGIS รุ่นที่ใหม่กว่า แต่เฉพาะในกรณีที่คุณไม่ต้องการเปลี่ยนแปลง Add-In ของคุณใน ArcGIS รุ่นที่ใหม่กว่าเดิม พัฒนา

ฉันพัฒนา. NET Add-In สำหรับการโหลด Census Bureau TIGER / Line Data เลเยอร์ไปยังแผนที่ใน ArcGIS 10.0 และไบนารี Add-In ยังคงทำงานใน ArcGIS 10.4 น่าเสียดายที่เมื่อฉันต้องการแก้ไข Add-In ฉันพยายามนำวิธีแก้ปัญหาไปเป็นเวอร์ชั่นของ Visual Studio ที่เข้ากันได้กับ ArcGIS 10.4 และฉันถูกน้ำท่วมด้วยข้อความแสดงข้อผิดพลาดจำนวนมากเนื่องจากการเรียก ArcObjects และคุณสมบัติของ Visual Studio

การพัฒนา Add-in ใน Python นั้นเกี่ยวข้องกับการใช้ ArcPy แทนที่จะเป็น ArcObjects ดังนั้นเอกสารจะเข้าถึงได้ง่ายขึ้นและกระบวนการแก้ไขรหัสสำหรับ ArcGIS รุ่นใหม่ควรจะง่ายกว่ามาก

ข้อเสียที่สำคัญของการใช้ Python แทน. NET คือการสร้างอินเตอร์เฟส GUI ใน Python นั้นยากกว่ามาก แพ็คเกจเช่น wxPython สามารถใช้ได้ แต่มีปัญหามากมายในการทำให้มันทำงานใน ArcGIS อินเทอร์เฟซผู้ใช้กล่องเครื่องมือนั้น จำกัด กว่ากล่องโต้ตอบที่สามารถสร้างได้ใน. NET


1

คุณกำลังดูสภาพแวดล้อมเดสก์ท็อปดังนั้น. NET จึงเป็นตัวเลือกอย่างแน่นอน อย่างไรก็ตามคุณจะถูก จำกัด ด้วยสิ่งที่คุณสามารถทำได้กับ. NET ในขณะนี้ที่ ArcGIS Server ส่วนใหญ่พร้อมใช้งานบนหลายแพลตฟอร์ม

สองเซ็นต์ของฉัน: ถ้าคุณทำงาน UI ลึกฉันแนะนำ. NET เพราะคุณสามารถทำ UI ขึ้นมาได้ง่ายๆ หากคุณเป็นเพียงสคริปต์จริงๆและใช้ส่วนการวิเคราะห์ที่ลึกกว่าของ ArcGIS Python จะช่วยให้คุณย้ายไปที่เซิร์ฟเวอร์ (หรือ "คลาวด์") ได้ง่ายกว่ามาก

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