Crear una extensión de la aplicación de add-ins de Python
Se puede utilizar una extensión de aplicación de diferentes formas para proporcionar funciones complementarias a ArcGIS Desktop.
- Generalmente se utiliza una extensión de aplicación para agrupar un conjunto de funciones relacionadas que realizan tareas similares. Son buenos ejemplos de extensiones de ArcMap Extensión ArcGIS 3D Analyst, Business Analyst, etc.
- Las extensiones de aplicación normalmente se encargan de escuchar y responder a diversos actos expuestos por la aplicación host. Por ejemplo, cuando una capa se agrega o elimina , se desencadena un evento y la extensión responde guardando automáticamente el documento de mapa.
- Las extensiones de aplicación se utilizan para coordinar las actividades entre otros componentes, como, por ejemplo, botones y herramientas, dentro de un add-in incluido. Por ejemplo, una extensión no puede activar un conjunto de herramientas de la barra de herramientas a menos que se agreguen al mapa un determinado conjunto de capas.
Este tema le guía a través del proceso de creación de una extensión de aplicación. Antes de comenzar este flujo de trabajo, asegúrese de haber creado un proyecto add-in de ArcMap y de haber especificado la configuración del proyecto. Para obtener más información, consulte Crear un proyecto de add-in. Este flujo de trabajo le muestra cómo crear una extensión para ArcMap; sin embargo, no existen diferencias en los menús de creación de cualquiera de las aplicaciones de ArcGIS Desktop . Este tema analiza el proceso de creación de una extensión que agrega una capa base a ArcMap cada vez que se abra un documento o que se cree un nuevo documento. A continuación se examina con mayor detalle la clase de Python creada por el Asistente de add-ins de Python para explorar las propiedades y métodos que proporcionan funcionalidad a su extensión.
La creación de una extensión de aplicación de add-in consta de dos pasos:
-
Crear la extensión de aplicación.
Una vez que haya introducido la configuración necesaria del proyecto, haga clic en la pestaña Contenido de Add-In . Para comenzar, haga clic con el botón derecho en EXTENSIONES y haga clic en Nueva Extensión.
La extensión tiene gran cantidad de propiedades que usted debe introducir. La siguiente es una lista de todas las propiedades con una explicación para cada una. Estas propiedades se almacenan en el archivoconfig.xml del proyecto.
Propiedad Descripción Nombre(necesario)
Representa el nombre de la extensión de aplicación. En la captura de pantalla siguiente, este es el nombre que se utiliza en el cuadro de diálogo Extensiones para las aplicaciones de escritorio.
Nombre de clase(necesario)
La clase de Python que representa a la extensión. La clase de Python es donde usted escribe su lógica de negocios para la extensión. Esta clase es importante porque se activa cuando la extensión de aplicación se utiliza en una aplicación de escritorio. Utilice la convención de nombres de Python cuando construya su clase. Las clases de Python utilizan la notación de palabras mayúsculas. En este ejemplo, creamos una clase denominada AddBaseLayer.
Id.(necesario)
Este es el único nombre utilizado para identificar su extensión. Es posible crear más de una extensión para un determinado proyecto y este Id. se utiliza para distinguir entre las diferentes extensiones de aplicación. Lo ideal sería que usted sustituyera el ID predeterminado con un valor más significativo. El Id. no debe tener espacios. Puede utilizar guiones bajos para unir palabras. No debe utilizar palabras clave de Python. Consulte la documentación de Python en relación a las palabras reservadas. El espacio del nombre del add-in se antepondrá como prefijo al Id. El espacio del nombre se almacena en el archivo config.xml.
Descripción(opcional)
Describe la finalidad de su extensión de aplicación. Por ejemplo, la extensión ArcGIS 10.1 3D Analyst proporciona herramientas para el modelado de la superficie y para la visualización en 3D. La descripción se muestra en la parte inferior del cuadro de diálogo Extensiones.
Cargas automáticas(opcional)
Le permite cargar la extensión de aplicación cuando se abra una aplicación de escritorio. Por defecto, esta opción está marcada. Cuando está marcada, la propiedad habilitada en la secuencia de comandos de Python se establece en Verdadero.
Una vez que haya terminado de introducir las propiedades, puede hacer clic en el botón Guardar en la parte inferior del asistente. De esta forma se crearán todos los archivos y carpetas necesarios dentro de su carpeta de trabajo.
- Editar la secuencia de comandos de Python.
El siguiente paso es editar la secuencia de comandos de Python y actualizar la clase de Python para incluir la funcionalidad de agregar una capa base cada vez que se abra o se cree un documento de mapa. Lo hace escuchando y respondiendo a los eventos abrir Documento y nuevo Documento para ArcMap. Para agregar la funcionalidad a la extensión personalizada, realice los siguientes pasos:
- Edite la secuencia de comandos de Python en la carpeta Instalar que se encuentra en la carpeta de trabajo que usted creó sirviéndose del asistente.
Existirá una clase con el mismo nombre que el que se introdujo a través del asistente. No puede cambiar el nombre de esta clase ya que al nombre de clase se hace referencia en config. xml. Para obtener detalles sobre cada función dentro de la clase de extensión, véase el tema clase de Extensión .
- Actualizar las funciones de los eventos nuevo Documento y abrir Documento, tal y como se muestra a continuación.
Este código proporciona la funcionalidad de agregar una capa base al marco de datos activo si no existiera ya.
def newDocument(self): """ Adds a base layer if it is not already added to the active data frame of the map. """ # Provide a layer file and the layer name as it would appear in the Table of contents. base_layer = r'C:\GISData\module5\World_Street_Map.lyr' base_layer_name = 'World Street Map' mxd = arcpy.mapping.MapDocument('current') active_view = mxd.activeView df = arcpy.mapping.ListDataFrames(mxd, active_view)[0] if arcpy.mapping.ListLayers(mxd, base_layer_name) == []: arcpy.mapping.AddLayer(df, arcpy.mapping.Layer(base_layer)) arcpy.RefreshTOC() else: return def openDocument(self): """ Adds a base layer if it is not already added to the active data frame of the map. """ base_layer = r'C:\GISData\module5\World_Street_Map.lyr' base_layer_name = 'World Street Map' mxd = arcpy.mapping.MapDocument('current') active_view = mxd.activeView df = arcpy.mapping.ListDataFrames(mxd, active_view)[0] if arcpy.mapping.ListLayers(mxd, base_layer_name) == []: arcpy.mapping.AddLayer(df, arcpy.mapping.Layer(base_layer)) arcpy.RefreshTOC() else: return
- Elimine todas las funciones de la secuencia de comandos que no estén aplicadas.
Debe eliminar todas las funciones de la secuencia de comandos que no estén aplicadas. Esto asegura que la aplicación no las active nunca.
- Guarde la secuencia de comandos.
- Edite la secuencia de comandos de Python en la carpeta Instalar que se encuentra en la carpeta de trabajo que usted creó sirviéndose del asistente.
- Pruebe la extensión de aplicación.
Una vez que se haya creado la extensión de aplicación y que se haya añadido el código de la secuencia de comandos, es importante crear el archivo de add-in y probarlo antes de compartirlo. Para más información sobre estos pasos, consulte Probando un add-in.
- Implemente y comparta la extensión de aplicación.
Para obtener más información sobre los pasos necesarios para implementar y compartir el add-in, consulte Compartir add-ins.