ArcGIS Desktop

  • Documentación
  • Soporte

  • My Profile
  • Ayuda
  • Sign Out
ArcGIS Desktop

ArcGIS Online

La plataforma de representación cartográfica para tu organización

ArcGIS Desktop

Un completo SIG profesional

ArcGIS Enterprise

SIG en tu empresa

ArcGIS for Developers

Herramientas para crear aplicaciones basadas en la ubicación

ArcGIS Solutions

Plantillas de aplicaciones y mapas gratuitas para tu sector

ArcGIS Marketplace

Obtén aplicaciones y datos para tu organización.

  • Documentación
  • Soporte
Esri
  • Iniciar sesión
user
  • Mi perfil
  • Cerrar sesión

ArcMap

  • Inicio
  • Introducción
  • Cartografiar
  • Analizar
  • Administrar datos
  • Herramientas
  • Extensiones

¿Qué es una caja de herramientas de Python?

  • Crear una caja de herramientas Python
  • Ejemplo de una caja de herramientas Python

Cajas de herramientas Python Caja de herramientas Python son cajas de herramientas de geoprocesamiento que se han creado por completo en Python. Una caja de herramientas de Python y las herramientas que contiene tienen el mismo aspecto, se comportan igual y trabajan de la misma forma que las cajas de herramientas y las herramientas creadas de cualquier otro modo. Una caja de herramientas Python (.pyt) es simplemente un archivo basado en ASCII que define una caja de herramientas y una o más herramientas.

Una vez creadas, las herramientas en una caja de herramientas Python proporcionan muchas ventajas:

  • Crear una caja de herramientas Python le permite aprovechar sus conocimientos de Python y rápidamente hacer prototipos y crear herramientas de geoprocesamiento funcionales.
  • La herramienta de secuencia de comandos que cree es una parte integral del geoprocesamiento, como sería una herramienta del sistema; puede abrirla desde la ventana Buscar o Catálogo, utilizarla en la ventana de ModelBuilder y de Python y llamarla desde secuencias de comandos.
  • Puede escribir mensajes en el cuadro de diálogo de progreso y en la ventana Resultados.
  • Puede utilizar las herramientas de documentación incorporadas para proporcionar una documentación.
  • Cuando la secuencia de comandos se ejecuta como una herramienta de secuencia de comandos, arcpy conoce muy bien la aplicación (como ArcMap) de la que surgió. Las configuraciones realizadas en la aplicación, como arcpy.env.overwriteOutput y arcpy.env.scratchWorkspace, están disponibles desde ArcPy en su herramienta de secuencia de comandos.

Crear una caja de herramientas Python

Para crear una caja de herramientas de Python, haga clic con el botón derecho en la carpeta en la que desea crear la nueva caja de herramientas y, a continuación, haga clic en Nuevo > Caja de herramientas en Python.

Inicialmente, la caja de herramientas Python incluirá una clase Python denominada Caja de herramientas que define las características de la caja de herramientas y una segunda clase Python denominada Herramienta que proporciona una herramienta de geoprocesamiento sustituida.

Introducción

Introducción

Crear una nueva caja de herramientas Python

Editar una caja de herramientas Python

Definir la herramienta

Definir una herramienta

Definir los parámetros de la herramienta

Definición de parámetros en una caja de herramientas Python

Definir los tipos de datos de parámetro en una caja de herramientas de Python

Personalizar el comportamiento de la herramienta

Personalizar el comportamiento de la herramienta en una caja de herramientas Python

Actualizar el esquema en una caja de herramientas Python

Controlar el comportamiento de la licencia en una caja de herramientas Python

Escribir el "código de origen" de la herramienta

Acceder parámetros dentro de una caja de herramientas Python

Escribir mensajes en una caja de herramientas Python

Documentar la herramientas.

Documentar una herramienta en una caja de herramientas Python

Ejemplo de una caja de herramientas Python

A continuación se muestra un ejemplo funcional de una caja de herramientas de Python que contiene una única herramienta. La herramienta, denominada CalculateSinuosity, agrega un campo y calcula la sinuosidad de la entidad; la sinuosidad es una medida de cómo se dobla la línea.

Nota:

Para usar esta herramienta, copie y peque el código de muestra en cualquier editor, como NotePad y guarde el archivo con una extensión .pyt.

import arcpy

class Toolbox(object):
    def __init__(self):
        self.label =  "Sinuosity toolbox"
        self.alias  = "sinuosity"

        # List of tool classes associated with this toolbox
        self.tools = [CalculateSinuosity] 

class CalculateSinuosity(object):
    def __init__(self):
        self.label       = "Calculate Sinuosity"
        self.description = "Sinuosity measures the amount that a river " + \
                           "meanders within its valley, calculated by " + \
                           "dividing total stream length by valley length."

    def getParameterInfo(self):
        #Define parameter definitions

        # Input Features parameter
        in_features = arcpy.Parameter(
            displayName="Input Features",
            name="in_features",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")
        
        in_features.filter.list = ["Polyline"]

        # Sinuosity Field parameter
        sinuosity_field = arcpy.Parameter(
            displayName="Sinuosity Field",
            name="sinuosity_field",
            datatype="Field",
            parameterType="Optional",
            direction="Input")
        
        sinuosity_field.value = "sinuosity"
        
        # Derived Output Features parameter
        out_features = arcpy.Parameter(
            displayName="Output Features",
            name="out_features",
            datatype="GPFeatureLayer",
            parameterType="Derived",
            direction="Output")
        
        out_features.parameterDependencies = [in_features.name]
        out_features.schema.clone = True

        parameters = [in_features, sinuosity_field, out_features]
        
        return parameters

    def isLicensed(self): #optional
        return True

    def updateParameters(self, parameters): #optional
        if parameters[0].altered:
            parameters[1].value = arcpy.ValidateFieldName(parameters[1].value,
                                                          parameters[0].value)
        return

    def updateMessages(self, parameters): #optional
        return

    def execute(self, parameters, messages):
        inFeatures  = parameters[0].valueAsText
        fieldName   = parameters[1].valueAsText
        
        if fieldName in ["#", "", None]:
            fieldName = "sinuosity"

        arcpy.AddField_management(inFeatures, fieldName, 'DOUBLE')

        expression = '''
import math
def getSinuosity(shape):
    length = shape.length
    d = math.sqrt((shape.firstPoint.X - shape.lastPoint.X) ** 2 +
                  (shape.firstPoint.Y - shape.lastPoint.Y) ** 2)
    return d/length
'''

        arcpy.CalculateField_management(inFeatures,
                                        fieldName,
                                        'getSinuosity(!shape!)',
                                        'PYTHON_9.3',
                                        expression)

Temas relacionados

  • Un rápido recorrido para crear herramientas con Python
  • Comparar cajas de herramientas Python y personalizadas

ArcGIS Desktop

  • Inicio
  • Documentación
  • Soporte

Plataforma ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Acerca de Esri

  • Quiénes somos
  • Empleo
  • Blog interno
  • Conferencia de usuarios
  • Cumbre de desarrolladores
Esri
Díganos su opinión.
Copyright © 2018 Esri. | Privacidad | Legal