Processing math: 100%

11 votos

¿Cuáles son los pros y los contras de los complementos Python frente a los complementos .NET para ArcGIS for Desktop?

Lo he encontrado en la ayuda de ESRI .NET:

Python

Todas las aplicaciones de ArcGIS Desktop incluyen un lenguaje de scripting integrado llamado Python. Muchas áreas de ArcGIS -en particular el geoprocesamiento- son accesibles a través de interfaces de programación de aplicaciones (API) simplificadas de Python, lo que facilita la creación y automatización de tareas comunes. Los scripts de Python se comparten fácilmente y pueden producirse sin un entorno de desarrollo externo. Hay una gran variedad de módulos de Python de dominio público centrados en áreas como la ciencia, la ingeniería y las matemáticas. Con todos sus puntos fuertes, Python no es adecuado para todas las tareas de programación. Aunque la cobertura está mejorando, no todas las áreas de ArcGIS están actualmente expuestas a Python. Además, la experiencia de edición y depuración en Python no es tan sofisticada o fácil de usar como las que se incluyen con entornos de desarrollo comerciales como Visual Studio. Por último, no se puede escuchar y responder a los eventos de ArcGIS, implementar una interfaz COM o conectarse a los muchos puntos de extensibilidad COM de ESRI utilizando Python.

y en la ayuda de ArcGIS Desktop:

ArcGIS 10.1 introduce Python en la lista de lenguajes para la creación de complementos de escritorio, lo que le proporciona una solución sencilla para ampliar la funcionalidad del escritorio. Para simplificar el desarrollo de complementos de Python, debe descargar y utilizar el Asistente para complementos de Python para declarar el tipo de personalización. El asistente generará todos los archivos necesarios para que el complemento funcione.

¿Si los complementos de Python y .NET tienen la misma funcionalidad? ¿Significa eso que puedo hacer lo mismo en Python que en .NET?

0 votos

¿Dónde dice que "Python y .NET tienen las mismas características para crear complementos"?

0 votos

Lo siento, expreso mal lo que quiero decir.(actualizo post)

1 votos

implement a COM interface, or plug into ESRI’s many COM extensibility points using Python Eso es extraño. Python puede funcionar bien con COM.

24voto

Paul Puntos 555

La respuesta a esta pregunta es sí y no. Es posible, con algo de esfuerzo, hacer en Python todo lo que se podría hacer en .Net, pero fácil y posible son dos cosas muy diferentes. Siguiendo con esto, la interpretación más sencilla es no Los complementos de Python no pueden hacer tanto como los de .Net. Sin embargo, las tareas de los complementos de Python puede son mucho más fáciles y rápidos de implementar y probar.

Desde un punto de vista puramente técnico, el marco de complementos de ArcGIS Desktop ofrece la siguiente funcionalidad:

  • Un esquema bien definido, basado en XML, para describir una serie de puntos y componentes comunes de integración del escritorio: Botones, barras de herramientas, menús, herramientas, menús de varios elementos y extensiones, así como una forma de conectarlos fácilmente de forma 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.
  • Un mecanismo para instalar, verificar y almacenar en caché lo instalado .esriaddins Si el archivo fuente del complemento instalado ha cambiado, volverá a cargar el archivo modificado en la caché del complemento del escritorio local.
  • Un conjunto de mecanismos de seguridad y autenticación para el código de los complementos: firma digital de .esriaddin archivos, el 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 los complementos es un contrato formal sobre el comportamiento o la funcionalidad de los botones, etc. Cuando se instala el SDK de .Net para ArcGIS, se obtiene la integración de Visual Studio en forma de asistentes de complementos en los diálogos de gestión de proyectos, documentación, fragmentos de código, enlaces de ArcObjects, etc. Así, una vez superados los puntos de entrada que proporciona el marco de complementos, un complemento .Net le permite recorrer el resto del camino con las API de ArcObjects que también incluye, así como que contiene una biblioteca de fragmentos de código de tareas comunes ya existentes para utilizar . No hay tal SDK para desarrolladores de Python en ArcGIS: toda la funcionalidad de Python con expuesta a través de arcgisscripting/arcpy y ya está incluida en el producto. Por lo tanto, mientras que el SDK de .Net viene como una gran descarga, lo más parecido en Python es la descarga relativamente pequeña del Asistente para 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 usted es nuevo en el desarrollo en ArcGIS, esto debería ser una barrera de entrada suficiente para alejarlo a menos que realmente saber lo que estás haciendo. Puedes hacer COM en Python aquí, pero es lo suficientemente cerca de un Turing Tarpit que es difícil justificar el tiempo invertido a menos que sea un usuario experto que ya esté familiarizado con los entresijos de COM y ArcObjects.

Te recomendaría mira lo que puedes hacer con arcpy . Puede automatizar muchas tareas como llamar a las herramientas de geoprocesamiento y hacer una manipulación por lotes de documentos cartográficos y complementos de Python le permiten utilizar ciertos sumideros de eventos bien definidos y algunos controles de diálogo además de las capacidades básicas de arcpy. Si no puedes pensar en una forma de realizar tu tarea en Python basándote en lo que dice la documentación (necesitas alguna interacción compleja con la interfaz de usuario o enganchar a eventos no expuestos en el Asistente para complementos de Python o utilizar algo que sólo está disponible en ArcObjects), entonces haz tu desarrollo en un complemento de .Net.

Lo siento, esto es más matizado que una respuesta dura y rápida de sí o no, pero debería darle alguna orientación en cuanto a si usted debe ir a la ruta de Python o de .Net en su Add-In.

Supongo que debo añadir esta revelación: Diseñé y desarrollé gran parte de la funcionalidad específica de Python para los complementos de ArcGIS.

0 votos

Me pregunto si esta respuesta de 2013 y Desktop 10.1 sigue siendo actual. Por ejemplo, parece que los complementos de python se llaman ahora cajas de herramientas de python? Otras capacidades pueden haber cambiado tanto en las bibliotecas de Python como en las del SDK.

3voto

AntonyMN Puntos 1

Una de las desventajas de desarrollar complementos en .NET es que cada nueva versión de ArcGIS utiliza una versión diferente e incompatible de ArcObjects y una versión diferente e incompatible de Visual Studio. Los binarios generados por los Add-Ins en .NET generalmente SON compatibles con versiones posteriores de ArcGIS, pero sólo si usted no quiere hacer ningún cambio en su Add-In en una versión de ArcGIS posterior a aquella en la que fue desarrollado originalmente.

Desarrollé un complemento .NET para cargar capas de datos TIGER/Line de la Oficina del Censo en un mapa en ArcGIS 10.0, y el complemento binario sigue funcionando en ArcGIS 10.4. Desafortunadamente, cuando quise hacer modificaciones al Add-In, traté de llevar la solución a la versión de Visual Studio compatible con ArcGIS 10.4, y me inundó un gran número de mensajes de error debido a llamadas incompatibles a ArcObjects y características de Visual Studio.

El desarrollo de complementos en Python implica el uso de ArcPy en lugar de ArcObjects, por lo que la documentación es más accesible y el proceso de revisión del código para una nueva versión de ArcGIS debería ser mucho más fácil.

La mayor desventaja de usar Python en lugar de .NET es que la construcción de una interfaz GUI en Python es mucho más difícil. Se pueden utilizar paquetes como wxPython, pero hay muchas dificultades para hacerlos funcionar en ArcGIS. La interfaz de usuario de Toolbox es mucho más limitada que los cuadros de diálogo que se pueden construir en .NET.

1voto

em444 Puntos 38

Si buscas un entorno de escritorio, .NET es sin duda una opción. Sin embargo, estará limitado en lo que puede hacer con .NET ahora que gran parte de ArcGIS Server está disponible para ejecutarse en múltiples plataformas.

Mis dos centavos: Si estás haciendo un trabajo de interfaz de usuario profundo, sugeriría .NET, ya que puedes crear una interfaz de usuario con bastante facilidad. Si usted es realmente sólo de secuencias de comandos y están utilizando las partes de análisis más profundo de ArcGIS Python le permitirá pasar a Server (o la "nube") mucho, mucho más fácil.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X