Apa pro dan kontra dari add-in Python vs .NET add-in ke ArcGIS untuk Desktop?


11

Saya temukan di ESRI .NET help:

Python

Semua aplikasi ArcGIS Desktop menyertakan bahasa skrip tertanam yang disebut Python. Banyak bidang ArcGIS — terutama geoprocessing — dapat diakses melalui antarmuka pemrograman aplikasi Python (API) yang disederhanakan, membuatnya mudah untuk membuat dan mengotomatisasi tugas-tugas umum. Skrip python mudah dibagikan dan dapat diproduksi tanpa lingkungan pengembangan eksternal. Ada berbagai modul Python domain publik yang berfokus pada bidang-bidang seperti sains, teknik, dan matematika. Dengan semua kekuatannya, Python tidak cocok untuk setiap tugas pemrograman. Meskipun cakupan meningkat, tidak semua area ArcGIS saat ini terkena Python. Selain itu, pengalaman pengeditan dan debugging dalam Python tidak secanggih atau mudah digunakan seperti yang disertakan dengan lingkungan pengembangan komersial seperti Visual Studio.Terakhir, Anda tidak dapat mendengarkan dan merespons acara ArcGIS, mengimplementasikan antarmuka COM, atau menyambungkan banyak titik ekstensibilitas ESRI ESRI menggunakan Python.

dan dalam bantuan ArcGIS Desktop:

ArcGIS 10.1 memperkenalkan Python ke daftar bahasa untuk membuat add-in Desktop, memberikan Anda solusi mudah untuk memperluas fungsionalitas desktop. Untuk menyederhanakan pengembangan add-in Python, Anda harus mengunduh dan menggunakan Wisaya Tambah Python untuk mendeklarasikan jenis penyesuaian. Wizard akan menghasilkan semua file yang diperlukan yang diperlukan agar add-in berfungsi.

Jika Python dan .NET add-in memiliki fungsi yang sama? Apakah itu berarti bahwa saya dapat melakukan hal yang sama dengan Python sebagai .NET ??


Di mana dikatakan bahwa "Python dan .NET memiliki fitur yang sama untuk membuat add-in"?
PolyGeo

maaf, saya buruk mengungkapkan apa yang saya maksud. (Saya memperbarui posting)
user7172

1
implement a COM interface, or plug into ESRI’s many COM extensibility points using PythonItu aneh. Python dapat bekerja dengan baik dengan COM.
Nathan W

Memang, saya telah membuat add-in Python (sepele) yang menggunakan ArcObjects melalui comtypes. Namun saya belum mencoba mengimplementasikan antarmuka COM di Python. Saya tidak yakin apakah itu mungkin atau seberapa sulit akan dibandingkan dengan .NET. Juga tidak ada jenis add-in yang memungkinkan untuk pendaftaran otomatis dengan COM sehingga beberapa hal yang lebih canggih lebih baik dilayani dengan komponen COM tradisional yang dapat didaftarkan oleh penginstalnya atau (ESRI) RegAsm.
blah238

1
Ini bukan ArcGIS tapi ini adalah bagaimana saya membuat sebuah menerapkan antarmuka COM menggunakan Python untuk MapInfo nathanw.net/2011/04/07/using-python-and-mapinfo-with-callbacks Saya akan mengatakan itu lebih mudah maka NET: )
Nathan W

Jawaban:


24

Jawaban untuk pertanyaan ini adalah ya dan tidak. Mungkin dengan beberapa upaya untuk melakukan segala sesuatu dengan Python yang dapat Anda lakukan dalam. Net, tetapi mudah dan mungkin adalah dua hal yang sangat berbeda. Setelah itu, interpretasi yang paling sederhana adalah tidak , Python Add-Ins tidak dapat melakukan sebanyak. Net Add-Ins. Namun, tugas-tugas yang dapat diselesaikan oleh Python Add-Ins jauh lebih mudah dan lebih cepat untuk diimplementasikan dan diuji.

Dari sudut pandang teknis semata, ArcGIS Desktop Add-In Framework menawarkan fungsionalitas berikut:

  • Skema berbasis XML yang terdefinisi dengan baik untuk menggambarkan serangkaian titik dan komponen integrasi desktop umum: Tombol, Bilah Alat, Menu, Alat, Menu Multi-Item dan Ekstensi, serta cara untuk menyambungkannya dengan cara deklaratif dari kode Anda ke desktop ArcGIS
  • Format file dan struktur file ( .esriaddin) untuk mendistribusikan kode kustomisasi desktop.
  • Sebuah mekanisme untuk menginstal, memverifikasi dan menyimpan caching yang diinstal .esriaddins, jadi jika file sumber Add-In yang diinstal telah berubah, itu akan memuat ulang file yang diubah ke dalam cache Add-in desktop lokal.
  • Serangkaian mekanisme keamanan dan otentikasi untuk kode di Add-In: penandatanganan .esriaddinfile digital , kontrol administratif atas tingkat otentikasi yang diperlukan untuk mengizinkan instalasi Add-In.

Kerangka Add-in di sini tidak memiliki kontrak formal dari perilaku atau fungsi di balik tombol, dll. Ketika Anda menginstal .Net SDK untuk ArcGIS, Anda mendapatkan integrasi Visual Studio dalam bentuk Add-In Wizards dalam dialog manajemen proyek Anda , dokumentasi, cuplikan kode, binding ArcObjects, dll. Jadi begitu Anda melewati titik entri yang disediakan oleh Add-in framework, sebuah Add-In .Net memungkinkan Anda melanjutkan dengan API ArcObjects yang juga dibundel dengan , serta berisi pustaka cuplikan kode dari tugas umum yang sudah ada untuk digunakan. Tidak ada SDK Pengembang Python di ArcGIS: semua fungsionalitas Python dengan diekspos melalui arcgisscripting / arcpy dan sudah dibundel dalam produk. Jadi, tempat .Net SDK hadir sebagai unduhan besar, hal terdekat dengan Python adalah unduhan Add-In Wizard yang relatif kecil.

Di sisi lain, Python adalah mampu mengkonsumsi / menerapkan COM interface , tetapi menggunakan COM dari Python tidak dibundel dengan ArcGIS SDK atau didokumentasikan dalam ArcGIS sistem bantuan. Jika Anda baru berkembang di ArcGIS, ini seharusnya cukup menjadi penghalang untuk masuk untuk mendorong Anda menjauh kecuali Anda benar - benar tahu apa yang Anda lakukan. Anda dapat melakukan COM dengan Python di sini, tetapi cukup dekat dengan Turing Tarpit sehingga sulit untuk membenarkan waktu yang dihabiskan kecuali Anda pengguna tingkat ahli yang sudah terbiasa dengan seluk beluk COM dan ArcObjects.

Saya sarankan Anda melihat apa yang dapat Anda lakukan dengan arcpy . Anda dapat mengotomatiskan banyak tugas seperti memanggil alat Geoprocessing dan melakukan manipulasi batch dokumen peta , dan Python Add-Ins memungkinkan Anda menggunakan peristiwa tertentu yang ditetapkan dengan baik dan beberapa kontrol dialog selain kemampuan dasar arcpy. Jika Anda tidak dapat memikirkan cara untuk menyelesaikan tugas Anda di Python berdasarkan pada apa yang dikatakan dokumentasi (Anda memerlukan beberapa interaksi antarmuka pengguna yang kompleks atau menghubungkan ke peristiwa yang tidak terungkap dalam Wisaya Tambah Python atau menggunakan sesuatu yang hanya tersedia di ArcObjects) , lalu lakukan pengembangan Anda di .Net Add-In.

Maaf, ini lebih bernuansa daripada jawaban ya atau tidak yang sulit dan cepat, tetapi itu akan memberi Anda beberapa pertimbangan, apakah Anda harus menggunakan rute Python atau .Net di Add-In Anda.

Saya kira saya harus menambahkan pengungkapan ini: Saya merancang dan mengembangkan banyak fungsi khusus Python untuk Add-in di ArcGIS.


1

Anda sedang melihat lingkungan desktop sehingga .NET tentu saja merupakan pilihan. Namun, Anda akan dibatasi pada apa yang dapat Anda lakukan dengan .NET sekarang karena sebagian besar ArcGIS Server tersedia untuk dijalankan pada berbagai platform.

Dua sen saya: Jika Anda melakukan pekerjaan UI yang dalam, saya sarankan .NET karena Anda dapat menyiapkan UI dengan mudah. Jika Anda benar-benar hanya scripting dan menggunakan bagian analisis yang lebih dalam dari ArcGIS Python akan memungkinkan Anda untuk pindah ke Server (atau "cloud") jauh, lebih mudah.


1

Salah satu kelemahan mengembangkan Add-in di .NET adalah bahwa setiap versi baru ArcGIS menggunakan versi ArcObjects yang berbeda dan versi Visual Studio yang tidak kompatibel. Binari yang dibuat oleh .NET Add-Ins umumnya ADALAH kompatibel dengan versi ArcGIS yang lebih baru, tetapi hanya jika Anda tidak ingin membuat perubahan apa pun pada Add-In Anda dalam versi ArcGIS lebih lambat dari yang di mana itu aslinya dikembangkan.

Saya mengembangkan .NET Add-In untuk memuat data Biro Sensus TIGER / Baris data ke peta di ArcGIS 10.0, dan Add-In biner masih berfungsi di ArcGIS 10.4. Sayangnya, ketika saya ingin membuat modifikasi pada Add-In, saya mencoba membawa solusi ke dalam versi Visual Studio yang kompatibel dengan ArcGIS 10.4, dan saya dibanjiri dengan sejumlah besar pesan kesalahan karena panggilan yang tidak kompatibel ke ArcObjects dan fitur dari Studio visual.

Mengembangkan Add-in dengan Python melibatkan penggunaan ArcPy alih-alih ArcObjects, sehingga dokumentasi lebih mudah diakses dan proses revisi kode untuk versi baru ArcGIS seharusnya lebih mudah.

Kerugian utama menggunakan Python daripada .NET adalah bahwa membangun antarmuka GUI dengan Python jauh lebih sulit. Paket seperti wxPython dapat digunakan, tetapi ada banyak kesulitan untuk membuatnya bekerja di ArcGIS. Antarmuka pengguna Toolbox jauh lebih terbatas daripada kotak dialog yang dapat dibangun di .NET.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.