Python Komut Dosyası Araçları üzerinden Python Araç Kutularını neden öğrenir / kullanırsınız? [kapalı]


25

Birkaç Python Araç Kutusu yazdım (ArcGIS 10.1'de yeni), ancak standart bir araç kutusuna Python Komut Dosyası Araçları yerine bunları yazıp yazmamam gerektiğine / ne zaman karar vermem gerektiğine henüz karar vermedim.

Çevrimiçi Yardımı , bazı nokta noktalarını tercih ettiğinde beni aydınlatabileceğini düşündüm :

Bir kez yaratıldığında, bir Python araç kutusundaki araçlar birçok avantaj sağlar

Ancak, listelenen beş avantajın tümü, araçları yazmak için Python kullanamamaktan kaynaklanıyor gibi görünmekte olup, hiçbiri Python Araç Kutuları'nın Python Komut Dosyası Araçları'na göre avantajını belirtmiyor gibi görünmektedir.

Aklıma gelen iki avantaj:

  • Artık tek bir Python betiğine "saf" bir Python aracı yazabilirim, Aracı Doğrulama özelliği tack' edilmiş gibi görünen ayrı bir iletişim kutusuna bağlamak zorunda kalmadan, ancak bu konuda saf değil pragmatik olduğum için mutluyum
  • Artık Python araç kutularının yazımını otomatikleştirmek için kod (Python veya metin dosyaları yazabilen herhangi bir dil) kullanabilirim, ancak henüz bunu yapmak için bir zorunluluk olmadı.

Esri'yi Python Toolbox özelliği sağlamaya iten zorlayıcı davaya göz atıyor muyum ve eğer öyleyse ne?

Yanıtlar:


34

İkisi de işlevselliğe çok yakın, fakat tamamen eşdeğer değil.

Her ikisi için de ortak

  • Tanımlama için benzersiz bir takma ad içeren bir araç seti içerir
  • Arcpy'den arayabilir
  • Her araç için ücretsiz olarak bir Coğrafi İşleme aracı iletişim kutusu (aslında tam bir kullanıcı arayüzü) edinin
  • Tüm Python kodlarını bir dosyada tutabilir (araç kaynağını gömme TBX, tüm uygulamayı bir arada tutma PYT) ve e-posta veya paylaşılan ağ sürücüleri aracılığıyla dağıtabilir
  • Masaüstü uygulamaları için her zaman ön plan ayarında çalıştırın . ArcPy kodu dahilinde "Her zaman ön planda çalıştır" ayarı?

TBX dosyalarına özgü:

  • Sistem araç kutularına, özel COM araçlarına ve özel .Net araçlarına referanslar içerebilir.
  • Model Oluşturucu araçları, araç kutusuna dahil edilebilir
  • Araç belgeleri .tbx dosyasının içinde saklanır
  • Parametreleri ayarlamak ve doğrulama kodunu yapmak için kolay sihirbaz arayüzü
  • Python Script'i İşlem aracı özelliğinde çalıştırın
  • Dezavantaj: Opak ikili format, TBX dosyalarının daha yeni sürümleri, yazılımın önceki sürümlerinde çalışmak üzere eski sürümler olarak açıkça kaydedilmesi gerekir; kullanıcı arabiriminde eksik olup olmadığını görmek için özellik sayfaları arasında geçiş yapmanız gerektiğinden UI çift kenarlı bir kılıç olabilir. ayar (göreceli yollar gibi)

Python Araç Kutularına Özgü:

  • Araç kutuları başka koduyla aynı tedavi edilebilir, böylece Düz metin, (iyi revizyon kontrolü takım onun gelişim tarihini takip edebilirsiniz olarak kullanıldığı ortamlarda kullanışlıdır - GitHub üzerinde kaç projelerde bakmak kullanmak PYTüzerine TBX.)
  • Belirli parametre tipleri üzerinde daha fazla kontrole sahip olun (yani, bileşik veri tiplerini yapabilir ve değer tablolarının şemalarını tanımlayabilirsiniz)
  • Bir ürün ("ArcInfo") veya uzatma ("uzamsal") mevcut değilse, bir aracı devre dışı bırakmak için isLicensed özelliği kullanılabilir.
  • Araç belgeleri, XML dosyalarında .pyt ile aynı klasörde saklanır
  • Dezavantaj: Araç parametrelerini yapılandırmak için hiçbir sihirbaz arayüzü yok, Python'da daha fazla iskele kodu olan Toolbox geliştirme, yalnızca bir uygulama betiği eklemek yerine, resmi bir yazılım geliştirme görevine dönüşüyor. Gelişme sırasında değişiklikleri yüklemek için bir pyt'i yeniden yüklemek, eğer pyt büyükse yavaş olabilir (bu, diğer dosyalara araçlar koyarak ve yeniden derlenmeleri gerekmeyecek şekilde içe aktarılarak önlenebilir).

Bir süre önce ilk düzine PYTaraç kutularım üzerinde çalışırken, ilk defa ne kadar güçlük çektiğimden dolayı sinirlenmiştim PYT, bu yüzden denilen bir araçtbx2pyt geliştirdim . Bir TBXaraç kutusu alır ve PYTminimum kod kaybıyla onu dönüştürür . Aslında, PYTbu güçler önce bir oldu TBX. İsterseniz, mevcut araçları Python Araç Kutusu formatına dönüştürmenin iyi bir yolu olabilir. En azından, koda geçiş yapmadan önce UI kullanarak araçlarınızın parametrelerinin ayarlanmasını mümkün kılar.


15

Özel ve Python araç kutularını karşılaştırmak başlıklı yardım bölümünde Python Araç Kutuları oluşturmada deneyimli olanlardan "gerçek dünya" avantajlarını / dezavantajlarını duymayı merak ediyorum.

Okuduğumun net bir dezavantajı , standart bir Özel Araç Kutusunda olduğu gibi bir Python Araç Kutusundaki modelleri ve komut dosyalarını karıştırma / eşleştirememektir.


11

Python araç kutularına yaslanmamın bir numaralı nedeni, sürüm kontrolü ve kaynak kodu yönetimi (bkz . ArcGIS Modellerine sürüm kontrolü uygulama ), sekme tamamlama, düzenli ifadeler, snippet kitaplıkları, vb.

Ancak Ryan Dalton'un belirttiği gibi , böyle yaparak Model Builder'ı ve eski stil Araçlarını kullanma yeteneğini kaybedersiniz - modeli her zamanki gibi oluşturma ve daha sonra python'a dışa aktarma ve ardından yeniden yazma için çaba harcamadan istekli değilseniz .pyt içine. (Bunu yaparsanız , ArcGIS'te Python Araç Kutularını (.pyt) organize etme İlkelerine bakınız .) Şu anda bu dezavantaj, python araç kutularını ciddiye almaya başladığım kadar büyük.

.Pyt'ye dönüştürmek istediğiniz araç kutularınız varsa, Jason Scheirer'in tbxtopyt kısmi dönüştürücüsünü yararlı bulabilirsiniz.

"Zorunlu dava" mı? Sorunun bir kısmı: Zaten bazı yazılım geliştirme pirzola varsa, kesinlikle evet. Benim gibiyseniz 3 bölüm GIS Tech / Analyst ve 1 bölüm veya daha az pythonista, çok değil. (En azından henüz değil - Gerçekten de bu iki yaklaşımdan birinin ya da bu iki yaklaşımın diğer yapısının yakın gelecekteki bir sürümde değişeceğini umuyorum.)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.