Python y el geoprocesamiento

El lenguaje de los scripts de ArcGIS es Python. ArcGIS incluye una API de Python, ArcPy, que proporciona acceso a todas las herramientas de geoprocesamiento, así como a clases y funciones adicionales y módulos especializados que ayudan a automatizar las tareas de SIG. Puede escribir scripts que usan ArcPy junto con un conjunto diverso de funcionalidades que se proporcionan a través de las bibliotecas de Python estándar y de otras bibliotecas creadas por terceros. Puede ejecutar comandos y scripts de Python con ArcGIS Notebooks, en la ventana de Python, a través de herramientas de scripts, o puede ejecutar Python fuera de ArcGIS Pro. Independientemente de cómo ejecute Python, básicamente los comandos funcionan del mismo modo y utilizan las mismas herramientas de geoprocesamiento.

A continuación se muestra una secuencia de comandos de geoprocesamiento simple en la que se utiliza ArcPy.

import arcpy

roads = "c:/base/data.gdb/roads"
output = "c:/base/data.gdb/roads_Buffer"

# Run Buffer
arcpy.analysis.Buffer(roads, output, "100 Feet")

Definir los parámetros de la herramienta

Cada una de las herramientas de geoprocesamiento tiene un conjunto fijo de parámetros que proporcionan a la herramienta la información que necesita para su ejecución. Cuando se utiliza una herramienta en Python, los valores de sus parámetros se deben establecer correctamente para que se pueda ejecutar cuando se ejecute la secuencia de comandos. Una vez que se ha proporcionado un conjunto de valores de parámetro válido, la herramienta está lista para ejecutarse. La mayoría de los parámetros se pueden especificar como una cadena de caracteres. Algunos parámetros complejos se pueden especificar como objetos con los que resulta más fácil trabajar en comparación con cadenas de caracteres largas.

Las cadenas de caracteres son textos que identifican de forma única un valor de parámetro, tal como una ruta hacia un dataset o una palabra clave. En el siguiente ejemplo de código, los parámetros de entrada y de salida se definen para la herramienta Zona de influencia. Tenga en cuenta que el nombre de la herramienta siempre se combina con su alias de la caja de herramientas. En el ejemplo, se utilizan dos variables de cadenas de caracteres para definir los parámetros de entrada y de salida para realizar la llamada a la herramienta que sea más fácil de leer.

La mayoría de las herramientas de geoprocesamiento incluyen argumentos obligatorios y opcionales. A veces se dan casos en los que hay muchos argumentos opcionales que no es necesario especificar. Hay un par de estrategias para tratar estos argumentos que no se utilizan. Una consiste en mantener todos los argumentos opcionales en orden y marcar los que no se necesiten como cadenas de caracteres vacías "", signos de almohadilla "#" o con un tipo None.

import arcpy
arcpy.management.AddField("schools", "school_id", "LONG", "", "", "", "", "NON_NULLABLE")
La segunda estrategia consiste en utilizar argumentos de palabra clave y usar el nombre del argumento para asignar un valor. El uso de argumentos de palabra clave permite omitir argumentos opcionales que no se utilizan o especificarlos en un orden distinto.

import arcpy
arcpy.management.AddField("schools", "school_id", "LONG", field_is_nullable="NON_NULLABLE")

Salida de la herramienta

ArcPy devuelve los valores de salida de una herramienta en forma de objeto Result. El objeto Result mantiene información sobre cómo se ejecutó una herramienta, incluidos los mensajes, los parámetros y las rutas y valores del dataset de salida. Estos resultados se pueden mantener incluso después de que se hayan ejecutado varias otras herramientas.

Los siguientes ejemplos muestran cómo obtener la salida de un objeto Result después de la ejecución de una herramienta de geoprocesamiento:

import arcpy

arcpy.env.workspace = "c:/city/data.gdb"

# Geoprocessing tools return a Result object 
result = arcpy.management.CopyFeatures("roads", "urban_roads")

# A print function will display the string representation of the output.
print(result)

# A Result object can be indexed to get the output value.
result_value = result[0]

Si se crea una salida que es solo una fase intermedia en un flujo de trabajo más extenso, el argumento de salida se puede omitir para permitir que la herramienta cree una ruta y un nombre únicos para la salida. Esto se puede lograr definiendo la salida como "#" o como None o, si la salida va a ser el último argumento utilizado, se puede omitir por completo. En cada caso, el valor devuelto es la ruta completa al nuevo origen de datos.

import arcpy
arcpy.env.workspace = "c:/city/data.gdb"

result = arcpy.management.CopyFeatures("roads", "#")

Generar un flujo de trabajo de geoprocesamiento

dispone de varias clases y funciones de utilidad que le permiten ampliar su secuencia de comandos de geoprocesamiento más allá de ejecutar herramientas de forma secuencial.ArcPy Las funciones se pueden utilizar para enumerar determinados datasets realizar un procesamiento por lotes, describir un dataset leer sus propiedades de forma programática o para realizar muchas otras tareas de geoprocesamiento de utilidad.

Más información sobre cómo generar secuencias de comandos de geoprocesamiento con las funciones de ArcPy