Die Antwort auf diese Frage lautet ja und nein. Mit einigem Aufwand ist es möglich, alles in Python zu tun, was Sie in .Net tun können, aber einfach und möglich sind zwei sehr unterschiedliche Dinge. Danach lautet die einfachste Interpretation: Nein , Python-Add-Ins können nicht so viel wie .Net-Add-Ins. Die Aufgaben, die Python-Add-Ins ausführen können , sind jedoch viel einfacher und schneller zu implementieren und zu testen.
Aus rein technischer Sicht bietet das ArcGIS Desktop Add-In Framework folgende Funktionen:
- Ein klar definiertes, XML-basiertes Schema zur Beschreibung einer Reihe gängiger Desktop-Integrationspunkte und -Komponenten: Schaltflächen, Symbolleisten, Menüs, Tools, Menüs und Erweiterungen mit mehreren Elementen sowie eine Möglichkeit, diese auf deklarative Weise einfach miteinander zu verbinden Ihren Code auf den ArcGIS-Desktop
- Ein Dateiformat und eine Dateistruktur (
.esriaddin
) zum Verteilen von Desktop-Anpassungscode.
- Ein Mechanismus zum Installieren, Überprüfen und Zwischenspeichern ist installiert
.esriaddins
. Wenn sich also die Quelldatei des deinstallierten Add-Ins geändert hat, wird die geänderte Datei erneut in den lokalen Desktop-Add-In-Cache geladen.
- Eine Reihe von Sicherheits- und Authentifizierungsmechanismen für den Code in Add-Ins: digitales Signieren von
.esriaddin
Dateien, administrative Kontrolle darüber, welche Authentifizierungsstufe erforderlich ist, um die Installation eines Add-Ins zu ermöglichen.
Was dem Add-In-Framework hier fehlt, ist ein formeller Vertrag über das Verhalten oder die Funktionalität hinter Schaltflächen usw. Wenn Sie das .NET SDK für ArcGIS installieren, erhalten Sie die Visual Studio-Integration in Form von Add-In-Assistenten in Ihren Projektverwaltungsdialogen , Dokumentation, Codefragmente, ArcObjects-Bindungen usw. Sobald Sie die vom Add-In-Framework bereitgestellten Einstiegspunkte überschritten haben, können Sie mit einem .Net-Add-In den Rest des Weges mit den ArcObjects-APIs gehen, die auch im Lieferumfang enthalten sind sowie eine Bibliothek mit Codefragmenten allgemeiner Aufgaben, die bereits vorhanden sind. In ArcGIS gibt es kein solches Python Developer SDK: Alle Funktionen von Python werden durch arcgisscripting / arcpy verfügbar gemacht und sind bereits im Produkt enthalten. Wenn das .Net SDK als großer Download angeboten wird, ist der relativ kleine Download des Add-In-Assistenten in Python am nächsten.
Auf der anderen Seite, Python ist fähig zu verbrauchen / Implementierung COM - Schnittstellen , aber COM von Python wird mit einem beliebigen ArcGIS SDK oder dokumentierte in dem ArcGIS - Hilfesystem nicht gebündelt. Wenn Sie mit der Entwicklung in ArcGIS noch nicht vertraut sind, sollte dies als Eintrittsbarriere ausreichen, um Sie von sich zu drängen, es sei denn, Sie wissen wirklich , was Sie tun. Sie können hier COM in Python ausführen , aber es ist nah genug an einem Turing-Tarpit, dass es schwierig ist, die aufgewendete Zeit zu rechtfertigen, es sei denn, Sie sind ein Experte, der bereits mit den Vor- und Nachteilen von COM und ArcObjects vertraut ist.
Ich würde empfehlen, dass Sie sich ansehen, was Sie mit arcpy tun können . Sie können eine Menge von Aufgaben wie automatisieren Aufruf Geoverarbeitungswerkzeuge und Batch - Bearbeitung von Kartendokumenten zu tun , und Python - Add-In können Sie bestimmten , genau definierten Ereignissenken verwenden und einige Dialog Kontrollen zusätzlich zu ArcPy der Basisfunktionen. Wenn Sie sich keine Möglichkeit vorstellen können, Ihre Aufgabe in Python basierend auf den Angaben in der Dokumentation auszuführen (Sie benötigen eine komplexe Interaktion mit der Benutzeroberfläche oder müssen sich mit Ereignissen verbinden, die nicht im Python-Add-In-Assistenten verfügbar sind, oder etwas verwenden, das nur in ArcObjects verfügbar ist). Führen Sie dann Ihre Entwicklung in einem .Net-Add-In durch.
Es tut uns leid, dass dies nuancierter ist als eine schnelle Ja- oder Nein-Antwort, aber es sollte Ihnen einen gewissen Einfluss darauf geben, ob Sie in Ihrem Add-In die Python- oder die .Net-Route wählen sollten.
Ich nehme an, ich sollte diese Offenlegung hinzufügen: Ich habe einen Großteil der Python-spezifischen Funktionen für Add-Ins in ArcGIS entworfen und entwickelt.