Mengapa mempelajari / menggunakan Python Toolbox dibandingkan Python Script Tools? [Tutup]

25

Saya telah menulis beberapa Python Toolboxes (yang baru di ArcGIS 10.1), tetapi saya belum memutuskan apakah saya harus menulisnya daripada Python Script Tools dalam toolbox standar.

Saya pikir Bantuan Daring mungkin mencerahkan saya ketika memilih beberapa titik poin dengan:

Setelah dibuat, alat dalam kotak alat Python memberikan banyak keuntungan

Namun, lima kelebihan yang tercantum semuanya tampaknya tidak dapat menggunakan Python untuk menulis alat, dan sepertinya tidak ada yang menentukan keunggulan Python Toolbox dibandingkan Python Script Tools.

Dua keuntungan yang bisa saya pikirkan adalah:

  • Saya sekarang dapat menulis alat Python "murni" dalam satu skrip Python tanpa harus mengaitkannya ke dialog yang ditulis secara terpisah dengan Validasi Alatnya yang terlihat seperti ditempelkan tetapi saya senang menjadi pragmatis daripada murni dalam hal ini
  • Saya sekarang dapat menggunakan kode (Python atau bahasa apa pun yang mampu menulis file teks) untuk mengotomatiskan penulisan kotak alat Python tetapi saya belum menemukan persyaratan untuk melakukan ini

Apakah saya mengabaikan kasus menarik yang membuat Esri menyediakan kemampuan Python Toolbox dan, jika demikian, apa itu?

PolyGeo
sumber

Jawaban:

34

Keduanya fungsionalitas sangat, sangat dekat tetapi tidak sepenuhnya setara.

Umum untuk keduanya

  • Termasuk seperangkat alat dengan alias unik untuk identifikasi
  • Dapat menelepon dari arcpy
  • Dapatkan dialog alat Geoprocessing (dasarnya UI lengkap) secara gratis untuk setiap alat
  • Dapat menyimpan semua kode Python dalam satu file (menanamkan sumber alat TBX, menahan semua implementasi dalam satu file PYT) dan mendistribusikan melalui email atau drive jaringan bersama
  • Selalu jalankan dalam pengaturan latar depan untuk aplikasi desktop. Pengaturan "Selalu jalankan di latar depan" dalam kode ArcPy?

Unik untuk file TBX:

  • Dapat menyertakan referensi ke kotak alat sistem, alat COM kustom, dan alat .Net kustom
  • Alat Model Builder dapat dimasukkan dalam kotak alat
  • Dokumentasi alat disimpan di dalam file .tbx
  • UI wisaya mudah untuk mengatur parameter dan melakukan kode validasi
  • Jalankan Python Script di properti Tool tool
  • Kerugian: format biner buram, versi yang lebih baru dari file TBX perlu disimpan secara eksplisit sebagai versi yang lebih lama untuk bekerja dalam versi perangkat lunak sebelumnya, UI dapat menjadi pedang bermata dua karena Anda harus beralih di antara halaman properti untuk melihat apakah Anda melewatkan pengaturan (seperti jalur relatif)

Unik untuk Kotak Alat Python:

  • Teks biasa, sehingga kotak peralatan dapat diperlakukan sama seperti kode lainnya (berguna dalam lingkungan di mana kontrol revisi baik perkakas digunakan sebagai Anda dapat menelusuri sejarah perkembangannya - lihat berapa banyak proyek-proyek di GitHub menggunakan PYTlebih TBX.)
  • Memiliki kontrol lebih besar atas tipe parameter tertentu (yaitu Anda dapat melakukan tipe data komposit dan menentukan skema tabel nilai)
  • Properti isLicensed dapat digunakan untuk menonaktifkan alat jika produk ("ArcInfo") atau ekstensi ("spasial") tidak tersedia.
  • Dokumentasi alat disimpan dalam file XML di folder yang sama dengan .pyt
  • Kerugian: Tidak ada wizard UI untuk mengonfigurasi parameter alat, kode perancah yang lebih signifikan dengan Python, mengubah pengembangan Toolbox menjadi lebih dari tugas pengembangan perangkat lunak formal hanya dengan menambahkan skrip implementasi. Memuat ulang pyt untuk memuat perubahan saat pengembangan bisa lambat jika pyt besar (ini bisa dihindari dengan meletakkan alat di file lain dan mengimpor sehingga tidak perlu dikompilasi ulang).

Beberapa waktu yang lalu ketika saya sedang mengerjakan lusinan PYTkotak alat pertama saya, saya merasa bingung berapa banyak kerumitan untuk mengatur PYTuntuk pertama kalinya, jadi saya mengembangkan alat yang disebuttbx2pyt . Ini akan mengambil TBXkotak alat dan mengubahnya menjadi PYTdengan kehilangan kode minimal. Bahkan, PYTkekuatan yang pertama kali TBX. Ini mungkin cara yang baik untuk mentransisikan alat yang ada ke format Python Toolbox jika diinginkan. Paling tidak, memungkinkan untuk mengatur parameter alat Anda menggunakan UI sebelum beralih ke kode.

Jason Scheirer
sumber
15

Bagian bantuan berjudul Membandingkan kotak alat kustom dan Python memiliki perbandingan yang cukup bagus tentang mengapa Anda mungkin memilih satu di atas yang lain, meskipun saya akan penasaran ingin mendengar keuntungan / kerugian "dunia nyata" dari mereka yang berpengalaman dalam membuat Kotak Alat Python.

Salah satu kelemahan jelas yang saya baca adalah ketidakmampuan untuk mencampur / mencocokkan model & skrip dalam Python Toolbox, seperti yang Anda bisa dalam Custom Toolbox standar.

Ryan Dalton
sumber
11

Alasan nomor satu saya untuk condong ke kotak alat python adalah untuk kontrol versi dan manajemen kode sumber (lihat Menerapkan kontrol versi untuk Model ArcGIS ), diikuti dengan sangat baik dengan dapat menggunakan editor kode / IDE dengan penyelesaian tab, ekspresi reguler, pustaka snippet, dll.

Namun seperti yang dicatat oleh Ryan Dalton , dengan melakukan itu Anda kehilangan kemampuan untuk menggunakan Pembuat Model dan Alat gaya lama - kecuali jika Anda bersedia melakukan upaya membangun model seperti biasa dan kemudian mengekspor ke python dan kemudian menulis ulang agar sesuai ke dalam .pyt. (Jika Anda melakukan ini, lihat Panduan untuk mengatur Python Toolboxes (.pyt) di ArcGIS ). Saat ini kerugian ini cukup besar sehingga saya belum serius menggunakan kotak alat python.

Jika Anda memiliki kotak alat yang ada yang ingin dikonversi menjadi .pyt, Anda mungkin merasa converter parsial tbxtopyt Jason Scheirer bermanfaat.

Adapun "kasus yang menarik?" bagian dari pertanyaan: jika Anda sudah memiliki beberapa pengembang perangkat lunak, ya pasti. Jika seperti saya, Anda 3 bagian GIS Tech / Analyst dan 1 bagian atau kurang pythonista, tidak begitu banyak. (Setidaknya belum - saya sangat berharap ini biner atau sifat lain dari dua pendekatan berubah dalam rilis waktu dekat.)

matt wilkie
sumber