Masaüstü için ArcGIS için Python eklentilerinin vs .NET eklentilerinin artıları ve eksileri nelerdir?


11

ESRI .NET yardımında buldum:

piton

Tüm ArcGIS Desktop uygulamaları, Python adı verilen gömülü bir betik dili içerir. ArcGIS'in birçok alanına, özellikle de coğrafi işleme, basitleştirilmiş Python uygulama programlama arabirimleri (API) aracılığıyla erişilebilir, bu da ortak görevlerin yazılmasını ve otomatikleştirilmesini kolaylaştırır. Python betikleri kolayca paylaşılır ve harici bir geliştirme ortamı olmadan üretilebilir. Bilim, mühendislik ve matematik gibi alanlara odaklanmış çeşitli kamu malı Python modülleri vardır. Tüm güçlü yönleriyle, Python her programlama görevi için uygun değildir. Kapsama alanı iyileşmekle birlikte, ArcGIS'in tüm alanları şu anda Python'a maruz kalmamaktadır. Buna ek olarak, Python'daki düzenleme ve hata ayıklama deneyimi, Visual Studio gibi ticari geliştirme ortamlarında bulunanlar kadar karmaşık veya kullanımı kolay değildir.Son olarak, ArcGIS olaylarını dinleyip yanıtlayamaz, bir COM arabirimi uygulayamaz veya Python kullanarak ESRI'nin birçok COM genişletilebilirlik noktasına ekleyemezsiniz.

ve ArcGIS Desktop yardımında:

ArcGIS 10.1, masaüstü işlevlerini genişletmek için kolay bir çözüm sağlayan Python'u Masaüstü eklentilerini yazmak için kullanılan diller listesine ekler. Python eklentilerinin geliştirilmesini kolaylaştırmak için Python Eklenti Sihirbazı'nı indirip kullanmanız gerekir. Sihirbaz, eklentinin çalışması için gereken tüm dosyaları oluşturur.

Python ve .NET eklentileri aynı işlevselliğe sahipse? Bu aynı şeyi Python .NET ile yapabileceği anlamına mı geliyor ??


Nerede "Python ve .NET eklenti oluşturmak için aynı özelliklere sahip" diyor?
PolyGeo

Üzgünüm, ne demek istediğimi kötü ifade ediyorum. (yazı güncelleme)
user7172

1
implement a COM interface, or plug into ESRI’s many COM extensibility points using PythonBu garip. Python COM ile sorunsuz çalışabilir.
Nathan W

Gerçekten, ArcObjects'i comtypes aracılığıyla kullanan (önemsiz) Python eklentileri oluşturdum. Ancak Python COM arayüzleri uygulamayı denemedim. Bunun mümkün olup olmadığından veya .NET ile karşılaştırılmasının ne kadar zor olduğundan emin değilim. Ayrıca, hiçbir eklenti türü COM ile otomatik kayıt yapılmasına izin vermez, bu nedenle daha gelişmiş öğelerin bazıları, yükleyicisi veya (ESRI) RegAsm tarafından kaydedilebilen geleneksel bir COM bileşeniyle daha iyi sunulur.
blah238

1
Bu ArcGIS değil ama bu nasıl MapInfo Python kullanarak uygulanan bir COM arayüzü yaptı nathanw.net/2011/04/07/using-python-and-mapinfo-with-callbacks Ben daha kolay sonra .NET söyleyebilirim: )
Nathan W

Yanıtlar:


24

Bu sorunun cevabı evet ve hayır. Python'da yapabileceğiniz her şeyi biraz çaba sarf etmek mümkündür. Net, ancak kolay ve mümkün olan iki farklı şeydir. Bundan sonra ise en basit yorumudur hiçbir Python-Ins ekle Net Add-Ins olduğunca yapamaz. Ancak, Python eklentiler görevleri olabilir başarmak çok daha kolay ve daha hızlı uygulanması ve test etmek.

Tamamen teknik bir bakış açısından, ArcGIS Masaüstü Eklenti Çerçevesi aşağıdaki işlevleri sunar:

  • Bir dizi yaygın masaüstü entegrasyon noktasını ve bileşenini tanımlamak için iyi tanımlanmış, XML tabanlı bir şema: Düğmeler, Araç Çubukları, Menüler, Araçlar, Çok Öğeli Menüler ve Uzantılar ve bunları kolayca bildirici bir şekilde bağlamanın bir yolu ArcGIS masaüstüne kodunuzu girin
  • .esriaddinMasaüstü özelleştirme kodunu dağıtmak için bir dosya biçimi ve dosya yapısı ( ).
  • Yüklü, doğrulama ve önbellekleme için bir mekanizma kuruldu .esriaddins, bu nedenle enjekte edilen Eklentinin kaynak dosyası değiştiyse, değiştirilen dosyayı yerel masaüstü Eklenti önbelleğine yeniden yükleyecektir.
  • Eklentiler'deki kod için bir dizi güvenlik ve kimlik doğrulama mekanizması: .esriaddindosyaların dijital olarak imzalanması, bir Eklentinin yüklenmesine izin vermek için hangi kimlik doğrulama düzeyinin gerektiği konusunda idari kontrol.

Buradaki Eklenti çerçevesinde eksik olan şey, düğmelerin arkasındaki davranış veya işlevin herhangi bir resmi sözleşmesidir. ArcGIS için .Net SDK'yı yüklediğinizde, proje yönetimi iletişim kutularında Eklenti Sihirbazları biçiminde Visual Studio entegrasyonu alırsınız , dokümantasyon, kod snippet'leri, ArcObjects bağları, vb. Bu nedenle, Eklenti çerçevesinin sağladığı giriş noktalarını geçtikten sonra, bir .Net Eklentisi, birlikte gelen ArcObjects API'leri ile geri kalan yollara gitmenizi sağlar. ve zaten kullanmakta olan ortak görevlerin kod snippet'lerinden oluşan bir kitaplığı içermenin yanı sıra. ArcGIS'de böyle bir Python Developer SDK yok: Python'un arcgisscripting / arcpy ile açık olan tüm işlevleri ve zaten üründe paketlenmiş. Net SDK'nın büyük bir indirme olarak geldiği yerde, Python'daki en yakın şey nispeten küçük Eklenti Sihirbazı indirmesidir.

Öte yandan, Python olduğunu / tüketen COM arabirimleri uygulayabilecek , ancak herhangi bir ArcGIS SDK ile birlikte veya ArcGIS yardım sistemine belgelenmiştir Python gelen COM kullanarak. ArcGIS'de gelişmekte yeniyseniz, ne yaptığınızı gerçekten bilmiyorsanız , sizi zorlamak için girişte bir engel yeterli olmalıdır . COM'u Python'da yapabilirsiniz, ancak bir Turing Tarpit'e yeterince yakındır , COM ve ArcObjects'in ins ve çıkışlarına aşina olan uzman düzeyinde bir kullanıcı değilseniz harcanan zamanı haklı çıkarmak zor.

Arcpy ile neler yapabileceğinize bakmanızı tavsiye ederim . Geoprocessing araçlarını arama ve harita belgelerinin toplu olarak işlenmesi gibi birçok görevi otomatikleştirebilirsiniz ve Python Eklentileri , arcpy'nin temel özelliklerine ek olarak, iyi tanımlanmış belirli olay lavabolarını ve bazı iletişim kutularını kullanmanıza izin verir . Belgelerin söylediklerine dayanarak Python'daki görevinizi gerçekleştirmenin bir yolunu düşünemiyorsanız (bazı karmaşık kullanıcı arayüzü etkileşimlerine ihtiyacınız var veya Python Eklenti Sihirbazı'nda gösterilmeyen olaylara bağlanmanız veya yalnızca ArcObjects'te mevcut bir şeyi kullanmanız gerekiyor) , geliştirmenizi bir .Net Eklentisinde yapın.

Maalesef bu, sert ve hızlı bir evet veya hayır cevabından daha nüanslıdır, ancak Eklentinizdeki Python veya .Net yoluna gitmeniz gerekip gerekmediği konusunda size biraz yardımcı olacaktır.

Bu açıklamayı eklemeliyim: Python'a özgü işlevselliğin çoğunu ArcGIS'deki Eklentiler için tasarladım ve geliştirdim.


2013 ve Masaüstü 10.1'den gelen bu cevabın hala güncel olup olmadığını merak ediyorum. Örneğin, python eklentilerine artık python araç kutuları deniyor gibi görünüyor mu? Hem Python hem de SDK kütüphanelerinde diğer yetenekler değişmiş olabilir.
intotecho

2

.NET'te Eklentiler geliştirmenin dezavantajlarından biri, ArcGIS'in her yeni sürümünün ArcObjects'in farklı bir uyumsuz sürümünü ve Visual Studio'nun farklı bir uyumsuz sürümünü kullanmasıdır. .NET Eklentileri tarafından oluşturulan ikili dosyalar genellikle ArcGIS'in sonraki sürümleriyle uyumludur, ancak yalnızca ArcGIS'in orijinal sürümünden daha sonraki bir sürümünde Eklentinizde herhangi bir değişiklik yapmak istemiyorsanız gelişmiş.

Sayım Bürosu TIGER / Line Veri katmanlarını ArcGIS 10.0'daki bir haritaya yüklemek için bir .NET Eklentisi geliştirdim ve ikili Eklenti hala ArcGIS 10.4'te çalışıyor. Ne yazık ki, Eklentide değişiklikler yapmak istediğimde, çözümü ArcGIS 10.4 ile uyumlu Visual Studio sürümüne getirmeyi denedim ve ArcObjects ve özelliklerinin uyumsuz çağrıları nedeniyle çok sayıda hata mesajı ile doluydum Görsel stüdyo.

Python'da Eklentilerin Geliştirilmesi, ArcObjects yerine ArcPy kullanmayı içerir, bu nedenle belgelere daha erişilebilir ve ArcGIS'in yeni bir sürümünün kodunu revize etme işlemi çok daha kolay olmalıdır.

.NET yerine Python kullanmanın en büyük dezavantajı, Python'da bir GUI arayüzü oluşturmanın çok daha zor olmasıdır. WxPython gibi paketler kullanılabilir, ancak ArcGIS'te çalışmalarını sağlamak için birçok zorluk vardır. Araç Kutusu kullanıcı arabirimi, .NET'te oluşturulabilen iletişim kutularından çok daha sınırlıdır.


1

Masaüstü ortamına bakıyorsunuz, bu yüzden .NET kesinlikle bir seçenektir. Ancak, ArcGIS Sunucusunun çoğunun birden çok platformda çalıştırılabilmesi için .NET ile yapabileceklerinizle sınırlı kalacaksınız.

İki sentim: Derin kullanıcı arayüzü işi yapıyorsanız, kolayca bir kullanıcı arayüzü oluşturabileceğiniz için .NET'i öneririm. Gerçekten sadece komut dosyası kullanıyorsanız ve ArcGIS Python'un daha derin analiz bölümlerini kullanıyorsanız, Sunucuya (veya "bulut") çok daha kolay taşınmanıza izin verir.

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.