Skip to content

Was sind die Vor- und Nachteile von Python-Add-ins gegenüber .NET-Add-ins für ArcGIS for Desktop?

Diese Frage kann auf verschiedene Weise beantwortet werden, aber wir zeigen Ihnen, was für uns die umfassendste Lösung ist.

Lösung:

Die Antwort auf diese Frage ist ja und nein. Es ist mit etwas Aufwand möglich, in Python alles zu tun, was man in .Net tun könnte, aber einfach und möglich sind zwei sehr unterschiedliche Dinge. Die einfachste Interpretation ist demnach nein Python-Add-Ins können nicht so viel tun wie .Net-Add-Ins. Allerdings sind die Aufgaben von Python Add-Ins können erledigen können, sind viel einfacher und schneller zu implementieren und zu testen.

Aus rein technischer Sicht bietet das ArcGIS Desktop Add-In Framework folgende Funktionalität:

  • Ein wohldefiniertes, XML-basiertes Schema zur Beschreibung einer Reihe von gemeinsamen Desktop-Integrationspunkten und Komponenten: Schaltflächen, Symbolleisten, Menüs, Werkzeuge, Multi-Item-Menüs und Erweiterungen, sowie eine Möglichkeit, diese auf einfache Weise deklarativ von Ihrem Code aus mit ArcGIS Desktop zu verbinden
  • Ein Dateiformat und eine Dateistruktur (.esriaddin) für die Verteilung von Desktop-Anpassungscode.
  • Ein Mechanismus zum Installieren, Überprüfen und Zwischenspeichern von installierten .esriaddinsWenn sich also die Quelldatei des installierten Add-Ins geändert hat, wird die geänderte Datei in den lokalen Desktop-Add-In-Cache geladen.
  • Eine Reihe von Sicherheits- und Authentifizierungsmechanismen für den Code in Add-Ins: digitale Signierung von .esriaddin Dateien, administrative Kontrolle darüber, welches Maß an Authentifizierung erforderlich ist, um die Installation eines Add-Ins zu erlauben.

Was dem Add-In-Framework hier fehlt, ist ein formaler Vertrag über das Verhalten oder die Funktionalität hinter Schaltflächen usw. Wenn Sie das .Net SDK für ArcGIS installieren, erhalten Sie eine Visual Studio-Integration in Form von Add-In-Assistenten in Ihren Projektverwaltungsdialogen, Dokumentation, Codeschnipseln, ArcObjects-Bindungen usw. Sobald Sie also die Einstiegspunkte, die das Add-In-Framework bietet, hinter sich gelassen haben, können Sie mit einem .Net-Add-In den Rest des Weges mit den ArcObjects-APIs gehen, mit denen es auch gebündelt ist, und es enthält eine Bibliothek von Code-Schnipseln für allgemeine Aufgaben, die bereits vorhanden sind. Es gibt kein solches SDK für Python-Entwickler in ArcGIS: Die gesamte Python-Funktionalität wird durch arcgisscripting/arcpy bereitgestellt und ist bereits im Produkt enthalten. Während das .Net-SDK als umfangreicher Download zur Verfügung steht, ist der relativ kleine Download des Add-In-Assistenten in Python das Naheliegendste.

Auf der anderen Seite ist Python ist in der Lage, COM-Schnittstellen zu konsumieren/implementieren, aber die Verwendung von COM aus Python heraus ist in keinem ArcGIS SDK enthalten oder im ArcGIS Hilfesystem dokumentiert. Wenn Sie neu in der Entwicklung in ArcGIS sind, sollte dies eine ausreichende Einstiegshürde sein, um Sie davon abzubringen, es sei denn, Sie wirklich wissen, was Sie tun. Sie können hier COM in Python ausführen, aber es ist nah genug an einem Turing Tarpit, dass es schwer ist, die aufgewendete Zeit zu rechtfertigen, es sei denn, Sie sind ein Experte, der bereits mit den Ins und Outs von COM und ArcObjects vertraut ist.

Ich würde Ihnen empfehlen, sich anzusehen, was Sie mit arcpy tun können. Sie können viele Aufgaben automatisieren, wie z.B. den Aufruf von Geoprocessing-Tools und die Stapelverarbeitung von Kartendokumenten, und mit Python-Add-Ins können Sie zusätzlich zu den Arcpy-Basisfunktionen bestimmte gut definierte Ereignissenken und einige Dialogsteuerungen verwenden. Wenn Sie anhand der Dokumentation keine Möglichkeit finden, Ihre Aufgabe in Python zu erfüllen (Sie benötigen eine komplexe Interaktion mit der Benutzeroberfläche, greifen auf Ereignisse zu, die im Python-Add-In-Assistenten nicht verfügbar sind, oder verwenden etwas, das nur in ArcObjects verfügbar ist), dann entwickeln Sie ein .Net-Add-In.

Es tut mir leid, dass dies eine differenziertere Antwort ist als ein klares Ja oder Nein, aber es sollte Ihnen einen Anhaltspunkt dafür geben, ob Sie Ihr Add-In in Python oder in .Net entwickeln sollten.

Ich denke, ich sollte diese Information hinzufügen: Ich habe einen Großteil der Python-spezifischen Funktionalität für Add-Ins in ArcGIS entworfen und entwickelt.

Einer der Nachteile der Entwicklung von Add-Ins in .NET ist, dass jede neue Version von ArcGIS eine andere inkompatible Version von ArcObjects und eine andere inkompatible Version von Visual Studio verwendet. Die von den .NET-Add-Ins erzeugten Binärdateien sind in der Regel mit späteren Versionen von ArcGIS kompatibel, aber nur, wenn Sie keine Änderungen an Ihrem Add-In in einer späteren Version von ArcGIS als der, in der es ursprünglich entwickelt wurde, vornehmen wollen.

Ich habe in ArcGIS 10.0 ein .NET-Add-In zum Laden von TIGER/Line Data-Layern des Census Bureau in eine Karte entwickelt, und das binäre Add-In funktioniert auch noch in ArcGIS 10.4. Als ich jedoch Änderungen an dem Add-In vornehmen wollte, versuchte ich, die Lösung in die mit ArcGIS 10.4 kompatible Version von Visual Studio zu bringen, und wurde mit einer großen Anzahl von Fehlermeldungen aufgrund von inkompatiblen Aufrufen von ArcObjects und Funktionen von Visual Studio überschwemmt.

Die Entwicklung von Add-Ins in Python beinhaltet die Verwendung von ArcPy anstelle von ArcObjects, so dass die Dokumentation leichter zugänglich ist und der Prozess der Überarbeitung des Codes für eine neue Version von ArcGIS viel einfacher sein sollte.

Der größte Nachteil der Verwendung von Python anstelle von .NET ist, dass die Erstellung einer GUI-Schnittstelle in Python viel schwieriger ist. Pakete wie wxPython können zwar verwendet werden, aber es gibt eine Menge Schwierigkeiten, sie in ArcGIS zum Laufen zu bringen. Die Toolbox-Benutzeroberfläche ist viel eingeschränkter als die Dialogfelder, die in .NET erstellt werden können.

Denken Sie daran, dass Sie dieses Schreiben sichtbar machen können, wenn es Ihr Problem gelöst hat.



Nutzen Sie unsere Suchmaschine

Suche
Generic filters

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.