La respuesta a esta pregunta es sí y no. Es posible, con un poco de esfuerzo, hacer todo en Python que podría hacer en .Net, pero fácil y posible son dos cosas muy diferentes. Después de eso, la interpretación más simple es no , los complementos de Python no pueden hacer tanto como los complementos de .Net. Sin embargo, las tareas que los complementos de Python pueden realizar son mucho más fáciles y rápidas de implementar y probar.
Desde un punto de vista puramente técnico, ArcGIS Desktop Add-In Framework ofrece la siguiente funcionalidad:
- Un esquema bien definido y basado en XML para describir una serie de puntos y componentes comunes de integración de escritorio: botones, barras de herramientas, menús, herramientas, menús y extensiones de elementos múltiples, así como una forma de conectarlos fácilmente de una manera declarativa desde su código al escritorio de ArcGIS
- Un formato de archivo y una estructura de archivo (
.esriaddin
) para distribuir el código de personalización del escritorio.
- Se ha instalado un mecanismo para instalar, verificar y almacenar en caché
.esriaddins
, por lo que si el archivo fuente del complemento dañado ha cambiado, volverá a cargar el archivo modificado en la memoria caché del complemento de escritorio local.
- Un conjunto de mecanismos de seguridad y autenticación para el código en Complementos: firma digital de
.esriaddin
archivos, control administrativo sobre qué nivel de autenticación se requiere para permitir la instalación de un Complemento.
Lo que le falta al marco de complementos aquí es cualquier contrato formal del comportamiento o funcionalidad detrás de los botones, etc. Cuando instala el SDK de .Net para ArcGIS, obtiene la integración de Visual Studio en forma de asistentes de complementos en los cuadros de diálogo de gestión de proyectos , documentación, fragmentos de código, enlaces de ArcObjects, etc. Entonces, una vez que haya pasado los puntos de entrada que proporciona el marco de complementos, un complemento de .Net le permite recorrer el resto del camino con las API de ArcObjects que también vienen incluidas , además de contener una biblioteca de fragmentos de código de tareas comunes que ya existen para usar. No existe tal SDK de Desarrollador de Python en ArcGIS: toda la funcionalidad de Python se expone a través de arcgisscripting / arcpy y ya está incluida en el producto. Entonces, donde el SDK de .Net viene como una descarga grande, lo más parecido en Python es la descarga relativamente pequeña del Asistente de complementos.
Por otro lado, Python es capaz de consumir / implementar interfaces COM , pero el uso de COM desde Python no está incluido en ningún SDK de ArcGIS ni está documentado en el sistema de ayuda de ArcGIS. Si eres nuevo en el desarrollo de ArcGIS, esto debería ser una barrera de entrada suficiente para alejarte a menos que realmente sepas lo que estás haciendo. Aquí puede hacer COM en Python, pero está lo suficientemente cerca de un Tarpit de Turing como para que sea difícil justificar el tiempo dedicado a menos que sea un usuario de nivel experto que ya esté familiarizado con los entresijos de COM y ArcObjects.
Te recomiendo que mires lo que puedes hacer con arcpy . Puede automatizar muchas tareas, como llamar a las herramientas de geoprocesamiento y realizar la manipulación por lotes de documentos de mapas , y los complementos de Python le permiten usar ciertos receptores de eventos bien definidos y algunos controles de diálogo además de las capacidades básicas de arcpy. Si no puede pensar en una forma de realizar su tarea en Python en función de lo que dice la documentación (necesita una interacción compleja de la interfaz de usuario o conectarse a eventos no expuestos en el Asistente de complementos de Python o usar algo solo disponible en ArcObjects) , luego desarrolle en un complemento .Net.
Lo siento, esto tiene más matices que una respuesta rápida de sí o no, pero debería darte una idea de si debes ir a la ruta Python o .Net en tu Complemento.
Supongo que debería agregar esta divulgación: diseñé y desarrollé gran parte de la funcionalidad específica de Python para complementos en ArcGIS.