Quels sont les avantages et les inconvénients des compléments Python par rapport aux compléments .NET dans ArcGIS for Desktop?

11

J'ai trouvé dans l'aide d'ESRI .NET:

Python

Toutes les applications ArcGIS Desktop incluent un langage de script intégré appelé Python. De nombreux domaines d'ArcGIS, en particulier le géotraitement, sont accessibles via des interfaces de programmation d'application (API) Python simplifiées, ce qui facilite la création et l'automatisation de tâches courantes. Les scripts Python sont facilement partagés et peuvent être produits sans environnement de développement externe. Il existe une variété de modules Python du domaine public axés sur des domaines tels que la science, l'ingénierie et les mathématiques. Avec toutes ses forces, Python n'est pas adapté à toutes les tâches de programmation. Bien que la couverture s'améliore, toutes les zones d'ArcGIS ne sont pas actuellement exposées à Python. De plus, l'expérience d'édition et de débogage dans Python n'est pas aussi sophistiquée ou facile à utiliser que celles incluses dans les environnements de développement commerciaux tels que Visual Studio.Enfin, vous ne pouvez pas écouter et répondre aux événements ArcGIS, implémenter une interface COM ou vous connecter aux nombreux points d'extensibilité COM d'ESRI à l'aide de Python.

et dans l'aide d'ArcGIS Desktop:

ArcGIS 10.1 introduit Python à la liste des langues pour la création de compléments Desktop, vous offrant une solution simple pour étendre les fonctionnalités du bureau. Pour simplifier le développement des compléments Python, vous devez télécharger et utiliser l'Assistant Complément Python pour déclarer le type de personnalisation. L'assistant va générer tous les fichiers requis nécessaires pour que le complément fonctionne.

Si les compléments Python et .NET ont la même fonctionnalité? Est-ce à dire que je peux faire la même chose en Python qu'en .NET ??

user7172
la source
Où est-il dit que "Python et .NET ont les mêmes fonctionnalités pour créer un complément"?
PolyGeo
désolé, j'exprime mal ce que je veux dire. (Je mets à jour le post)
user7172
1
implement a COM interface, or plug into ESRI’s many COM extensibility points using PythonC'est étrange. Python peut fonctionner correctement avec COM.
Nathan W
En effet, j'ai créé des compléments Python (triviaux) qui utilisent ArcObjects via des comtypes. Cependant, je n'ai pas essayé d'implémenter des interfaces COM en Python. Je ne sais pas si cela est possible ou à quel point ce serait difficile par rapport à .NET. De plus, aucun type de complément ne permet l'enregistrement automatique auprès de COM, donc certaines des choses les plus avancées sont mieux servies avec un composant COM traditionnel qui peut être enregistré par son installateur ou (ESRI) RegAsm.
blah238
1
Ce n'est pas ArcGIS mais c'est ainsi que j'ai créé une interface COM implémentée en utilisant Python pour MapInfo nathanw.net/2011/04/07/using-python-and-mapinfo-with-callbacks Je dirais que c'est plus facile que .NET: )
Nathan W

Réponses:

24

La réponse à cette question est oui et non. Il est possible avec un certain effort de faire tout en Python que vous pourriez faire en .Net, mais facile et possible sont deux choses très différentes. Après cela, l'interprétation la plus simple est non , les compléments Python ne peuvent pas faire autant que les compléments .Net. Cependant, les tâches que les compléments Python peuvent accomplir sont beaucoup plus faciles et rapides à implémenter et à tester.

D'un point de vue purement technique, ArcGIS Desktop Add-In Framework offre les fonctionnalités suivantes:

  • Un schéma XML bien défini pour décrire une série de points et de composants d'intégration de bureau courants: boutons, barres d'outils, menus, outils, menus et extensions à plusieurs éléments, ainsi qu'un moyen de les connecter facilement de manière déclarative à partir de votre code sur le bureau ArcGIS
  • Un format de fichier et une structure de fichier ( .esriaddin) pour distribuer le code de personnalisation du bureau.
  • Un mécanisme d'installation, de vérification et de mise en cache installé .esriaddins, donc si le fichier source du complément installé a changé, il rechargera le fichier modifié dans le cache du complément du bureau local.
  • Un ensemble de mécanismes de sécurité et d'authentification pour le code dans les compléments: signature numérique des .esriaddinfichiers, contrôle administratif sur le niveau d'authentification requis pour permettre l'installation d'un complément.

Ce que le framework de complément manque ici, c'est tout contrat formel du comportement ou des fonctionnalités derrière les boutons, etc. Lorsque vous installez le SDK .Net pour ArcGIS, vous obtenez l'intégration de Visual Studio sous la forme d'assistants de complément dans vos boîtes de dialogue de gestion de projet , la documentation, les extraits de code, les liaisons ArcObjects, etc. Donc, une fois que vous avez dépassé les points d'entrée fournis par la structure du complément, un complément .Net vous permet de faire le reste du chemin avec les API ArcObjects, il est également fourni avec , ainsi que contenant une bibliothèque d'extraits de code de tâches courantes déjà disponibles. Il n'y a pas un tel SDK Python Developer dans ArcGIS: toutes les fonctionnalités de Python sont exposées via arcgisscripting / arcpy et sont déjà incluses dans le produit. Ainsi, lorsque le SDK .Net est fourni sous forme de téléchargement volumineux, la chose la plus proche en Python est le téléchargement relativement petit de l'assistant de complément.

D'un autre côté, Python est capable de consommer / implémenter des interfaces COM , mais l'utilisation de COM à partir de Python n'est fournie avec aucun SDK ArcGIS ni documentée dans le système d'aide d'ArcGIS. Si vous débutez dans le développement dans ArcGIS, cela devrait être une barrière à l'entrée suffisante pour vous repousser à moins que vous ne sachiez vraiment ce que vous faites. Vous pouvez faire du COM en Python ici, mais il est suffisamment proche d'un Turing Tarpit qu'il est difficile de justifier le temps passé à moins que vous ne soyez un utilisateur de niveau expert connaissant déjà les tenants et aboutissants de COM et ArcObjects.

Je vous recommande de regarder ce que vous pouvez faire avec arcpy . Vous pouvez automatiser de nombreuses tâches telles que l' appel d'outils de géotraitement et la manipulation par lots de documents cartographiques , et les compléments Python vous permettent d'utiliser certains récepteurs d' événements bien définis et certains contrôles de boîte de dialogue en plus des capacités de base d'arcy. Si vous ne pouvez pas penser à un moyen d'accomplir votre tâche en Python en fonction de ce que dit la documentation (vous avez besoin d'une interaction d'interface utilisateur complexe ou de vous connecter à des événements non exposés dans l'Assistant Complément Python ou utilisez quelque chose uniquement disponible dans ArcObjects) , puis effectuez votre développement dans un complément .Net.

Désolé, cela est plus nuancé qu'une réponse stricte et rapide oui ou non, mais cela devrait vous aider à choisir si vous devez suivre la route Python ou .Net dans votre complément.

Je suppose que je devrais ajouter cette divulgation: j'ai conçu et développé une grande partie des fonctionnalités spécifiques de Python aux compléments dans ArcGIS.

Jason Scheirer
la source
Je me demande si cette réponse de 2013 et Desktop 10.1 est toujours d'actualité. Par exemple, il semble que les compléments python s'appellent désormais des boîtes à outils python? D'autres fonctionnalités peuvent avoir changé dans les bibliothèques Python et SDK.
intotecho
2

L'un des inconvénients du développement de compléments dans .NET est que chaque nouvelle version d'ArcGIS utilise une version incompatible différente d'ArcObjects et une version incompatible différente de Visual Studio. Les binaires générés par les compléments .NET SONT généralement compatibles avec les versions ultérieures d'ArcGIS, mais uniquement si vous ne souhaitez pas apporter de modifications à votre complément dans une version d'ArcGIS ultérieure à celle dans laquelle il était à l'origine. développé.

J'ai développé un complément .NET pour charger les couches TIGER / Données de ligne de Census Bureau sur une carte dans ArcGIS 10.0, et le complément binaire fonctionne toujours dans ArcGIS 10.4. Malheureusement, lorsque j'ai voulu apporter des modifications au complément, j'ai essayé d'intégrer la solution dans la version de Visual Studio compatible avec ArcGIS 10.4, et j'ai été inondé d'un grand nombre de messages d'erreur en raison d'appels incompatibles à ArcObjects et des fonctionnalités de Visual Studio.

Le développement de compléments en Python implique l'utilisation d'ArcPy au lieu d'ArcObjects, donc la documentation est plus accessible et le processus de révision du code pour une nouvelle version d'ArcGIS devrait être beaucoup plus facile.

Le principal inconvénient de l'utilisation de Python au lieu de .NET est que la construction d'une interface graphique en Python est beaucoup plus difficile. Des packages tels que wxPython peuvent être utilisés, mais il est très difficile de les faire fonctionner dans ArcGIS. L'interface utilisateur de Toolbox est beaucoup plus limitée que les boîtes de dialogue qui peuvent être intégrées dans .NET.

JDMorganArkansas
la source
1

Vous regardez l'environnement de bureau, donc .NET est certainement une option. Cependant, vous serez limité sur ce que vous pouvez faire avec .NET maintenant qu'une grande partie d'ArcGIS Server est disponible pour s'exécuter sur plusieurs plates-formes.

Mes deux cents: si vous effectuez un travail approfondi sur l'interface utilisateur, je suggère .NET car vous pouvez créer une interface utilisateur assez facilement. Si vous ne faites que des scripts et que vous utilisez les parties d'analyse approfondie d'ArcGIS Python, vous pourrez passer beaucoup plus facilement au serveur (ou au "cloud").

Darrell O'Donnell
la source