Abrir un proyecto y revisar datasets

Antes de comenzar a usar Python para ejecutar herramientas de geoprocesamiento, descargará los datasets, abrirá un nuevo proyecto y revisará los datasets que va a utilizar.

  1. Descargue los datos del tutorial y extraiga el contenido en una ubicación en su ordenador.

    El archivo .zip contiene una carpeta denominada PythonGP.

    En este tutorial, los datos se muestran en C:\Lessons\PythonGP\. Puede utilizar una carpeta diferente, pero asegúrese de ajustar las rutas en las instrucciones siguientes.

  2. Inicie ArcGIS Pro.
  3. En ArcGIS Pro, junto a Proyectos recientes, haga clic en Abrir otro proyecto.

    Abrir otro proyecto.

  4. En la ventana Abrir proyecto, vaya a la carpeta que extrajo del archivo PythonGP.zip, haga clic en Python Geoprocessing.aprx para seleccionarlo y haga clic en Aceptar.

    Se abrirá el proyecto. El mapa actual muestra el límite municipal de Toronto, en Canadá. Agregará varias clases de entidad a este mapa.

  5. Si el panel Catálogo no está visible, haga clic en la pestaña Ver y haga clic en Panel Catálogo.
  6. Acople el panel Catálogo al lado derecho del mapa.
  7. En el panel Catálogo, expanda Carpetas y expanda PythonGP.
  8. Expanda la geodatabase de archivos Toronto.gdb.

    Geodatabase de Toronto expandida para mostrar las clases de entidad.

    La geodatabase contiene varias clases de entidad.

  9. Haga clic con el botón derecho en la clase de entidad ambulances y haga clic en Agregar al mapa actual.

    Esta clase de entidad representa las ubicaciones de envío de ambulancias en Toronto.

  10. Agregue las clases de entidad fire_stations y communities al mismo mapa.

    Estas clases de entidad representan los límites de los parques de bomberos y comunidades dentro de la ciudad de Toronto, respectivamente. En este tutorial, ejecutará herramientas de geoprocesamiento en estas clases de entidad utilizando Python.

  11. La geodatabase Toronto.gdb es la geodatabase predeterminada para el proyecto. La carpeta PythonGP también contiene una geodatabase llamada Results.gdb, que está vacía actualmente, pero se utilizará para almacenar las salidas de algunas de las herramientas de geoprocesamiento.

Ejecutar una herramienta en la ventana de Python

Una de las formas de ejecutar Python en ArcGIS Pro es la ventana Python. Es una buena forma de empezar a escribir código de Python porque le ofrece algunas sugerencias de sintaxis.

  1. En la cinta, haga clic en la pestaña Análisis y, en la sección Geoprocesamiento, haga clic en la flecha desplegable a la derecha del botón Python; a continuación, haga clic en Ventana de Python.

    Abrir la ventana de Python en ArcGIS Pro.

    Al hacer clic en el botón Python, se abre directamente un notebook de Python. Esta es otra forma de escribir código de Python, pero en este tutorial se utilizará la ventana de Python. Consulte el tutorial Introducción a notebooks en ArcGIS Pro para obtener más información sobre cómo utilizar notebooks.

    La ventana de Python contiene dos secciones. La sección superior se conoce como transcripción y la sección inferior se denomina línea de comandos. El código se escribe en la sección de línea de comandos y la sección de transcripción mostrará el código que se haya ejecutado más cualquier mensaje, como resultados impresos o mensajes de error.

  2. Escriba el siguiente código en la sección de línea de comandos de la ventana de Python y pulse Intro:

    import arcpy

    Importar el módulo

    Esta línea de código importa el paquete de ArcPy. ArcPy es un paquete de Python que hace que muchas de las funciones de ArcGIS Pro estén disponibles desde Python, incluido el geoprocesamiento.

    Nota:

    Como está utilizando la ventana de Python dentro de ArcGIS Pro, puede ejecutar herramientas de geoprocesamiento sin importar antes ArcPy. Sin embargo, se considera una buena práctica utilizar siempre import arcpy en la parte de arriba del código para garantizar que el mismo código funcione fuera de ArcGIS Pro.

    La primera herramienta que utilizará es la herramienta Agregar coordenadas XY. Abrirá la tabla de atributos de una clase de entidad para ver los resultados de la ejecución de la herramienta.

  3. En el panel Contenido, haga clic con el botón derecho en la capa ambulances y haga clic en Tabla de atributos.
  4. Organice la interfaz de ArcGIS Pro para ver fácilmente el mapa, la tabla de atributos de la capa ambulances y la ventana de Python.

    El modo exacto de organizar la interfaz es cuestión de preferencia, pero es habitual tener los mapas y las tablas en la parte superior y la ventana de Python en la parte inferior.

  5. Escriba el siguiente código en la sección de línea de comandos de la ventana de Python y pulse Intro:

    arcpy.management.AddXY("ambulances")

    Escriba el código para agregar campos XY a la clase de entidad ambulances.

    Al pulsar Intro, el código se ejecuta y los campos POINT_X y POINT_Y se agregan a la tabla de atributos de la clase de entidad ambulances.

    Coordenadas X e Y agregadas a la tabla.

    Al ejecutar la línea de código se ejecuta la herramienta Agregar coordenadas XY, al igual que cuando ejecuta la herramienta desde su cuadro de diálogo. El código que ejecutó ahora aparece en la sección de transcripción de la ventana de Python y los resultados de la ejecución de la herramienta aparecen debajo. En este caso, la herramienta no genera una nueva clase de entidad, sino que actualiza la tabla de atributos de la clase de entidad existente. El resultado que devuelve la herramienta es una referencia a la capa de entidades ambulances existente en el mapa actual.

    La línea de código arcpy.management.AddXY("ambulances") tiene varias partes diferentes. La primera, arcpy, es el módulo de ArcPy, que permite utilizar gran parte de la funcionalidad de ArcGIS Pro en Python, incluidas casi todas las herramientas de geoprocesamiento. El siguiente elemento, management, es el alias de la caja de herramientas Administración de datos, donde reside la herramienta Agregar coordenadas XY. El siguiente elemento es AddXY, que es el nombre de la función de ArcPy equivalente a la herramienta Agregar coordenadas XY en ArcGIS Pro.

    Las partes están separadas por puntos, lo que se conoce como notación de puntos en Python, y no hay espacios. Mientras que el nombre de la herramienta es Agregar coordenadas XY en ArcGIS, el nombre de la función en ArcPy es AddXY, sin espacios. Los nombres de las funciones a veces son idénticos al nombre de la herramienta, pero algunos nombres de función son una versión abreviada, como esta. Los nombres de las funciones de Python no contienen espacios. Como esta es una función de ArcPy, está seguida de paréntesis (). Se requieren paréntesis tanto de apertura como de cierre. Dentro de los paréntesis se encuentran los parámetros de la función: estos son los mismos que los parámetros de la herramienta cuando se utiliza el cuadro de diálogo de la herramienta.

    En el caso de la herramienta Agregar coordenadas XY, los parámetros consisten únicamente en el nombre de una sola clase de entidad de entrada.

    Existe una forma alternativa de escribir la sintaxis para ejecutar las herramientas. Verá ejemplos de código escritos de ambas formas, por lo que resulta útil conocer ambas.

  6. Escriba el siguiente código en la sección de línea de comandos de la ventana de Python y pulse Intro:

    arcpy.AddXY_management("ambulances")

    Al ejecutar la línea de código, se ejecuta de nuevo la herramienta Agregar XY. No verá ninguna diferencia en el resultado, ya que los resultados anteriores se sobrescriben.

    Las dos notaciones se pueden utilizar de forma intercambiable:

    arcpy.<toolboxalias>.<toolname>
    arcpy.<toolname>_<toolboxalias>

    La segunda notación utiliza un guion bajo, no un punto. Lo cual significa que arcpy.<toolname>.<toolboxalias> es incorrecto y producirá un error.

  7. Escriba el siguiente código en la sección de línea de comandos de la ventana de Python y pulse Intro:

    arcpy.AddXY.management("ambulances")

    Genera un error porque la función AddXY no se puede encontrar con esta notación.

    Error de sintaxis

    La ventana de Python tiene varias características integradas que le ayudan a escribir código sin errores.

  8. Escriba el siguiente código y realice una pausa en el punto:

    arcpy.

    Cuando para después del punto, aparece una lista larga de sugerencias en orden alfabético. Se denominan sugerencias de autocompletado de código.

    Sugerencias de autocompletado de código

    Puede desplazarse por la lista o seguir escribiendo caracteres. A medida que escribe, la lista de sugerencias se actualizará según corresponda.

  9. Siga escribiendo:

    arcpy.man

    La lista se limita a los elementos de código que forman parte de ArcPy y que comienzan por las letras "man".

    Sugerencias de autocompletado de código limitadas a "man".

  10. Pase el cursor sobre la entrada management.

    Se muestra una pequeña ventana emergente con el nombre completo de la caja de herramientas.

    Sugerencias de autocompletado de código limitadas a "man" y nombre de la caja de herramientas.

  11. Haga clic en management en la lista.

    Se agrega el alias de la caja de herramientas seguido de un punto:

    arcpy.management.

  12. Escriba la letra "a" y desplácese por la lista hasta AddXY y, a continuación, haga clic en AddXY() management.

    Hacer clic en AddXY.

    Se agrega el nombre de la herramienta y agrega automáticamente un par de paréntesis:

    Sugerencias de entidades de entrada

    Con el puntero entre los paréntesis, aparece una ventana emergente con los nombres de las dos clases de entidad de puntos del mapa. Debajo de la línea de código, hay una ventana emergente con una breve explicación de la herramienta. Incluye la sintaxis de la herramienta, que es:

    management.AddXY(in_features)

    Es similar a la sintaxis que encontrará en las páginas de ayuda de la herramienta. Resulta útil ver la sintaxis mientras escribe el código. También hay una breve explicación del primer (y único) parámetro de la herramienta.

    Encima de la línea de código hay una ventana emergente con una sugerencia para el valor del primer parámetro de la herramienta. Las entidades de entrada de la herramienta solo pueden ser entidades de puntos. Los valores sugeridos son todas las capas de entidades de puntos en el mapa abierto. En este ejemplo, las capas de entidades de puntos son ambulances y fire_stations. La capa de datos communities no aparece porque es una capa de entidades poligonales. Estas sugerencias de autocompletado de código le ayudan a escribir el código correcto, ya que solo muestran las entidades de entrada que son significativas.

  13. Haga clic en la entrada fire_stations en la ventana emergente.

    Otra sintaxis de geoprocesamiento

    Se agrega el nombre de la capa de entidades a la línea de código y agrega comillas automáticamente.

    arcpy.management.AddXY('fire_stations')

    Sugerencia:
    Si aleja el puntero de la ventana de Python, las ventanas emergentes desaparecen. Para traerlas de nuevo, primero coloque el puntero en la línea de código en cualquier lugar excepto los paréntesis y, luego, coloque nuevamente el puntero dentro de los paréntesis.

    La línea de código ya está completa.

  14. Pulse Intro para ejecutar la línea de código.
  15. En el panel Contenido, haga clic con el botón derecho en la capa fire_stations y haga clic en Tabla de atributos.

    Los campos POINT_X y POINT_Y se han agregado a la clase de entidad.

    Ahora, los parques de bomberos tienen coordenadas.

  16. Cierre la tabla de atributos.

A continuación, utilizará las sugerencias de autocompletado de código para obtener la sintaxis correcta para las herramientas de geoprocesamiento que utilizan parámetros de herramienta más complejos.

Comprender los parámetros de herramienta

La herramienta Agregar coordenadas XY solo utiliza un único parámetro, lo que da como resultado un código muy corto. La mayoría de las herramientas de geoprocesamiento tienen más parámetros, tanto obligatorios como opcionales. Estudiará la herramienta Zona de influencia como ejemplo de una herramienta con más parámetros de herramienta.

Comenzará revisando la sintaxis de la herramienta en la página de ayuda.

  1. Vaya a la siguiente URL:
  2. Desplácese hacia abajo hasta la sección Parámetros y haga clic en la pestaña Cuadro de diálogo.

    Parámetros de la herramienta Zona de influencia

    Esta tabla proporciona una explicación detallada de los parámetros de la herramienta, incluido su tipo de datos. Un excelente conocimiento de los parámetros de la herramienta facilita el uso de la misma en código de Python.

  3. Haga clic en la pestaña Python.

    Parámetros de ayuda de la herramienta Zona de influencia en Python

    Muestra la sintaxis de la herramienta Zona de influencia en Python. La herramienta Zona de influencia se encuentra en la caja de herramientas Herramientas de análisis, de modo que el código empieza por arcpy.analysis. Entre los paréntesis se encuentran los parámetros de la herramienta Zona de influencia. Son idénticos a los parámetros del cuadro de diálogo de la herramienta, en el mismo orden. A cada parámetro se le asigna un nombre (por ejemplo, in_features) y los parámetros se separan mediante una coma, seguido de un espacio. La denominación de parámetros sigue las convenciones de los nombres de las variables en Python: únicamente en minúsculas y palabras separadas por un guion bajo, para facilitar su lectura.

    Las herramientas de geoprocesamiento tienen parámetros obligatorios y opcionales. Los parámetros obligatorios vienen antes de los parámetros opcionales. En la sintaxis, puede reconocer parámetros opcionales por el uso de llaves { }. Al leer la sintaxis, puede determinar que la herramienta Zona de influencia tiene tres parámetros obligatorios, seguidos de cinco parámetros opcionales.

    Cuando un parámetro de herramienta es opcional, significa que hay un valor predeterminado. Si no especifica un valor para un parámetro opcional, se utilizará el predeterminado.

    En primer lugar, ejecutará la herramienta Zona de influencia utilizando solo los parámetros obligatorios.

  4. En ArcGIS Pro, en la Ventana de Python, escriba el siguiente código en la sección de línea de comandos:

    arcpy.Buf

  5. Haga clic en la entrada Buffer() analysis en la lista emergente.

    Escriba arcpy.Buff y, a continuación, haga clic en Buffer() analysis.

    También puede utilizar las flechas hacia arriba y hacia abajo del teclado para resaltar elementos en la lista. Cuando se resalte una entrada, pulse la tecla Tab para agregar el elemento.

    La sugerencia de autocompletado es Buffer_analysis, pero el código se agrega con esta sintaxis:

    arcpy.analysis.Buffer()

    Recuerde que arcpy.analysis.Buffer() y arcpy.Buffer_analysis() son diferentes formas de hacer referencia a la misma herramienta. Ambas son correctas.

    Con el puntero dentro de los paréntesis, la sintaxis de la herramienta aparece debajo y las capas de entidades sugeridas para el primer parámetro aparecen arriba.

    Ventana emergente de la sintaxis de Zona de influencia

    El primer parámetro de la herramienta Zona de influencia se llama in_features. Este parámetro se muestra en negrita en la ventana emergente de sintaxis. Bajo este parámetro se muestra su explicación. Esta visualización se actualizará cuando complete los parámetros de la herramienta.

  6. En la ventana emergente, haga clic en fire_stations.

    Se agrega el nombre de la capa de entidades a la línea de código y agrega comillas automáticamente.

    arcpy.analysis.Buffer('fire_stations')

  7. A continuación, escriba una coma seguida de un espacio.

    arcpy.analysis.Buffer('fire_stations', )

    Entidades de salida en la sugerencia de sintaxis.

    En la ventana emergente de sintaxis, el siguiente parámetro, out_feature_class, se muestra ahora en negrita. No se proporcionan sugerencias para el nombre, ya que se trata de una salida.

  8. Escriba 'fire_buffer' entre comillas para el nombre out_feature_class.

    La línea del código ahora es:

    arcpy.analysis.Buffer('fire_stations', 'fire_buffer')

    Puede utilizar comillas simples o dobles al escribir el nombre de una clase de entidad. Al seleccionar de entre una lista de capas de entidades sugeridas, las sugerencias de autocompletado dan preferencia al uso de comillas simples, pero puede alternar entre los dos estilos de comillas en una sola línea de código, siempre y cuando use el mismo par de comillas en cada cadena de caracteres. Por ejemplo, lo siguiente es correcto:

    arcpy.analysis.Buffer('fire_stations', "fire_buffer")

    Pero lo siguiente no lo es y genera un error de sintaxis:

    arcpy.analysis.Buffer('fire_stations', 'fire_buffer")

  9. Cambie la última comilla simple por una comilla doble.

    Error resaltado por discrepancia entre comillas

    El segundo parámetro de la herramienta se muestra resaltado en naranja, lo que indica un error de sintaxis. Resulta útil, ya que sabe que esta línea de código dará como resultado un error incluso antes de intentar ejecutarlo.

  10. Cambie la comilla doble por una comilla simple.
  11. A continuación, escriba una coma seguida de un espacio.

    Sugerencia de sintaxis de campo o distancia de zona de influencia

    El tercer parámetro es la distancia que se va a utilizar para crear las zonas de influencia. Puede ser un valor que introduzca o un campo de la tabla de atributos de las entidades de entrada. Las sugerencias de autocompletado de código muestran los campos de la capa de entidades fire_stations. En este caso, sin embargo, escribirá un valor numérico.

  12. Escriba "1000 meters" incluidas las comillas.

    arcpy.analysis.Buffer('fire_stations', 'fire_buffer', "1000 meters")

    La distancia es un valor numérico, pero también requiere una unidad lineal. Por lo tanto, el valor es una cadena de caracteres compuesta por un número, seguido de un espacio, seguido de la unidad lineal. Aunque Python distingue entre mayúsculas y minúsculas en su mayor parte, en este caso no importa si la unidad está en mayúsculas o minúsculas. Por lo tanto, puede usar "1000 meters", "1000 METERS" o "1000 Meters", las tres se consideran correctas. Al igual que antes, puede utilizar un par de comillas simples o dobles, ambas son correctas.

    Aquí los parámetros obligatorios quedan completos. La herramienta está lista para ejecutarse. Puede seguir introduciendo valores para parámetros opcionales, pero no es necesario para que se ejecute la herramienta.

  13. Al final de la línea de código, pulse Intro para ejecutar la herramienta.

    La herramienta se ejecuta, el resultado se imprime en la transcripción de la ventana de Python y la clase de entidad resultante se agrega al mapa actual.

    Zonas de influencia de salida de los parques de bomberos

    Resultado de zona de influencia de 1.000 metros en la ventana de Python.

    En la transcripción, debajo de la línea de código que ha ejecutado la herramienta, está el resultado de la ejecución de la herramienta. En este caso, el resultado de la herramienta Zona de influencia es una nueva clase de entidad. Recuerde que, en el ejemplo de la herramienta Agregar coordenadas XY, el resultado fue una referencia a una capa de entidades existente, no una nueva clase de entidad.

    El resultado impreso muestra la ubicación de la clase de entidad recién creada:

    <Result 'C:\\Lessons\\PythonGP\\Toronto.gdb\\fire_buffer'>

    Al especificar la clase de entidad de salida, solo se proporcionó el nombre de la clase de entidad. ¿Por qué termina la clase de entidad en la geodatabase de archivos Toronto.gdb? Porque es el espacio de trabajo actual para el proyecto. El código de la ventana de Python respeta la configuración del entorno de la aplicación.

    Nota:
    Se utilizan dos barras invertidas (\\) en la ruta en lugar de una sola barra invertida (\). En Python se usa una sola barra invertida como carácter de escape y puede tener consecuencias no deseadas. En lugar de dos barras invertidas, también puede usar la letra r de raw (sin procesar en inglés) antes de la cadena de caracteres (es decir, r"C:\Lessons\PythonGP\Toronto.gdb") o utilizar una sola barra diagonal (es decir, "C:/Lessons/PythonGP/Toronto.gdb"). Las tres notaciones se consideran correctas y se pueden utilizar indistintamente.

    Ha ejecutado la herramienta Zona de influencia utilizando solo los tres parámetros obligatorios. A continuación, la ejecutará de nuevo con uno de los parámetros opcionales.

  14. Mire de nuevo la sintaxis de la herramienta Zona de influencia:

    arcpy.analysis.Buffer(in_features, out_feature_class, buffer_distance_or_field, {line_side}, {line_end_type}, {dissolve_option}, {dissolve_field}, {method})

    El parámetro denominado dissolve_option especifica cómo se tratan los polígonos de zona de influencia superpuestos. El valor predeterminado para este parámetro es NONE, lo que significa que se mantienen todas las zonas de influencia individuales, independientemente de cualquier superposición. Establecerá este valor en ALL, lo que significa que todas las entidades de salida se disolverán, eliminando cualquier superposición.

    En lugar de volver a escribir el código anterior, utilizará un acceso directo para recuperar la línea de código anterior.

  15. Con el puntero en la línea de comandos, presione la flecha hacia arriba del teclado.

    Con esto recupera la línea de código anterior utilizada para ejecutar la herramienta Zona de influencia. Funciona con cualquier línea de código anterior. Puede desplazarse por varias líneas de código con las flechas hacia arriba y hacia abajo. Una vez que haya encontrado la línea de código que le interesa, puede realizar cambios en la línea de comandos y pulsar Intro para volver a ejecutar el código.

  16. Coloque el puntero al final del tercer parámetro, entre la última comilla y el paréntesis de cierre.
  17. Escriba una coma seguida de un espacio.

    Ayuda del parámetro opcional Lado de la línea

    Muestra las sugerencias de autocompletado de código para el parámetro line_side. El valor predeterminado para este parámetro es Full y no es necesario cambiarlo. En lugar de especificar este valor, puede omitir el parámetro. Puede omitir el parámetro especificando una cadena de caracteres vacía.

  18. Escriba una comilla doble.

    Se agrega automáticamente una segunda comilla. El código ahora es:

    arcpy.analysis.Buffer('fire_stations', 'fire_buffer', "1000 meters", "")

    El valor del parámetro line_side se establece como "", que es una cadena de caracteres vacía. Significa que se utilizará el valor predeterminado para este parámetro.

    El siguiente parámetro es line_end_type, que también se puede omitir.

  19. Coloque el puntero al final del cuarto parámetro, entre la última comilla y el paréntesis de cierre.
  20. Escriba una coma, seguida de un espacio, seguido de una comilla doble.

    Se agrega automáticamente una segunda comilla. El código ahora es:

    arcpy.analysis.Buffer('fire_stations', 'fire_buffer', "1000 meters", "", "")

    Ahora puede especificar el valor del parámetro dissolve_option.

  21. Escriba una coma, seguida de un espacio, seguido de una comilla.
  22. En la lista de opciones que aparece, seleccione Disolver todas las entidades de salida en una única entidad.

    Disolver todas las salidas.

    Rellena el parámetro con el valor de ALL como una cadena de caracteres. Observe cómo las sugerencias de autocompletado proporcionan una descripción más larga, pero el código muestra 'ALL'. Se debe a que la palabra clave de parámetro es ALL, y esto es lo que encontrará en la documentación de la herramienta. La descripción más larga es la etiqueta de palabra clave y coincide con las opciones que ve para este parámetro en el cuadro de diálogo de la herramienta. Al escribir el código manualmente, debería escribir la palabra clave del parámetro como una cadena de caracteres de Python, por ejemplo, 'ALL' o "ALL".

    El código ahora es:

    arcpy.analysis.Buffer('fire_stations', 'fire_buffer_diss', "1000 meters", "", "", 'ALL')

    Finalmente, resulta útil en este caso cambiar el nombre de la clase de entidad de salida para que se pueda distinguir de la versión anterior que no está disuelta.

  23. Cambie el nombre de la clase de entidad de salida de 'fire_buffer' a 'fire_buffer_diss'.

    Zona de influencia con opción de disolución lista para ejecutarse

    arcpy.analysis.Buffer('fire_stations', 'fire_buffer_diss', "1000 meters", "", "", 'ALL')

    La herramienta ya está lista para ejecutarse.

  24. Pulse Entrar para ejecutar la herramienta.

    Resultado en la ventana de Python

    La clase de entidad resultante se agrega al mapa activo y el nombre y la ruta de la clase de entidad de salida se imprimen debajo de la línea de código. Las zonas de influencia se han disuelto y todas las superposiciones se han eliminado.

    Es posible que se haya preguntado por qué es necesario omitir los parámetros opcionales. Se debe a que, en la sintaxis de la herramienta, los parámetros tienen un orden predefinido. El parámetro dissolve_option es el sexto parámetro en ese orden. Cuando a los parámetros no se les hace referencia explícitamente por sus nombres, se debe mantener este orden. Verá qué sucede cuando no se mantiene este orden.

  25. Con el puntero en la línea de comandos, presione la flecha hacia arriba del teclado para recuperar la línea de código anterior.
  26. Modifique la línea de código eliminando los dos parámetros omitidos. El código debería tener este aspecto:

    arcpy.analysis.Buffer('fire_stations', 'fire_buffer_diss', "1000 meters", 'ALL')

  27. Pulse Intro para ejecutar el código.

    Da como resultado un error:

    Mensaje de error El valor no forma parte de Full.

    Significa que ALL se utiliza como valor para el cuarto parámetro, que es line_side. El único valor válido para este parámetro es Full, por lo que utilizar ALL aquí genera un error.

    Existen varias alternativas al uso de una cadena de caracteres vacía ("") para omitir los parámetros opcionales. También puede utilizar la almohadilla ("#") o el valor None. Así pues, todas las siguientes líneas son correctas y se pueden utilizar indistintamente:

    arcpy.analysis.Buffer('fire_stations', 'fire_buffer_diss', "1000 meters", "", "", 'ALL')

    arcpy.analysis.Buffer('fire_stations', 'fire_buffer_diss', "1000 meters", "#", "#", 'ALL')

    arcpy.analysis.Buffer('fire_stations', 'fire_buffer_diss', "1000 meters", None, None, 'ALL')

    La almohadilla debe estar entre comillas, es decir, "#" y no #. La almohadilla sin comillas se utiliza para comentarios en Python, por lo que no se puede usar aquí.

    Por otra parte, el valor None se usa sin comillas. None es una palabra clave y su propio tipo de datos en Python. Aunque no es lo mismo que una cadena de caracteres vacía, en este caso tiene el mismo efecto. Puede generar cierta confusión, ya que algunos parámetros de herramienta tienen "NONE" como uno de sus posibles valores. El valor None se utiliza para omitir un parámetro opcional y realmente quiere decir que se utiliza el valor predeterminado. El valor "NONE" se utiliza para establecer el valor del parámetro en ese valor específico mediante una cadena de caracteres.

Ha visto cómo utilizar el autocompletado para obtener la sintaxis correcta para ejecutar herramientas de geoprocesamiento en la ventana de Python. Ahora, verá cómo especificar varios parámetros por nombre y agregar varias líneas de entrada a la ventana de Python.

Especificar parámetros de herramienta por nombre

En lugar de omitir los parámetros opcionales que se puedan dejar en sus valores predeterminados utilizando una cadena de caracteres vacía, una almohadilla o None, puede especificar los parámetros por su nombre.

  1. Con el puntero en la línea de comandos, presione la flecha hacia arriba del teclado.
  2. Modifique la línea de código de la siguiente manera:

    arcpy.analysis.Buffer('fire_stations', 'fire_buffer_diss', "1000 meters", dissolve_option='ALL')

    Asigne el nombre dissolve_option al parámetro.

    El parámetro dissolve_option tiene el valor 'ALL'.

  3. Pulse Intro para ejecutar el código.

    La herramienta se ejecuta correctamente sin errores.

    Ha visto varias soluciones para trabajar con parámetros opcionales que necesitan un valor distinto del predeterminado:

    • Omitir los parámetros opcionales que se puedan dejar en su valor predeterminado utilizando una cadena de caracteres vacía (""), una almohadilla ("#") o la palabra clave None, hasta llegar al parámetro opcional que le interese.
    • Hacer referencia al parámetro opcional de interés por su nombre, dejando fuera todos los demás parámetros opcionales que se puedan dejar en sus valores predeterminados.

    Todas estas soluciones son correctas y la opción a utilizar es cuestión de preferencia. Puede ceñirse a un estilo en particular, pero es bueno tener en cuenta otros estilos, porque los verá todos en el código escrito por otros usuarios.

    Hacer referencia a los parámetros de las herramientas por su nombre se puede utilizar en los parámetros opcionales, pero el mismo enfoque se puede aplicar a todos los parámetros, por ejemplo:

    arcpy.analysis.Buffer(in_features='fire_stations', out_feature_class='fire_buffer_diss', buffer_distance_or_field="1000 meters", dissolve_option='ALL')

    Por convención, al referirse a los parámetros de las herramientas por su nombre, no se utilizan espacios alrededor del operador =, aunque el uso de espacios no afecta a la ejecución del código. Además, tenga en cuenta que, una vez que asigna un nombre a un parámetro, debe nombrar todos los parámetros que lo siguen.

    Observe cómo todos estos nombres hacen referencia a los nombres de los parámetros tal y como están escritos en la ayuda de la sintaxis de la herramienta, lo cual es necesario para que funcione.

    Aunque hace que el código sea considerablemente más largo, facilita la revisión y comprensión del código, ya que los parámetros están explicados en el propio código. Para herramientas relativamente simples con pocos parámetros, estas explicaciones pueden no ser necesarias. No obstante, especialmente cuando se revisa el código existente de herramientas más complejas con muchos parámetros, estas explicaciones facilitan la comprensión del código sin tener que buscar la sintaxis.

    Una desventaja del uso de los nombres de parámetros es que la línea de código puede ser muy larga: más que la longitud máxima recomendada de 79 caracteres para el código de Python. La solución es dividir la línea de código en varias líneas.

    arcpy.analysis.Buffer(in_features='fire_stations',
                          out_feature_class='fire_buffer_diss',
                          buffer_distance_or_field="1000 meters",
                          dissolve_option='ALL')

    La línea de código queda dividida en varias líneas para la facilitar su lectura, pero se sigue ejecutando como una sola línea de código. Este estilo utiliza lo que se denomina continuación implícita de línea. Python requiere que los paréntesis de apertura vayan seguidos de un paréntesis de cierre. Dado que este paréntesis de cierre no se produce en la primera línea, las siguientes líneas se consideran parte de la misma línea de código hasta que se aparece el paréntesis de cierre. El espacio en blanco adicional se utiliza con fines de alineación y no se considera sangría.

    A continuación, creará estas diversas líneas en la ventana de Python.

  4. Agregue el siguiente código a la ventana de Python (pero no pulse Intro).

    arcpy.analysis.Buffer(in_features='fire_stations', out_feature_class='fire_buffer_diss', buffer_distance_or_field="1000 meters", dissolve_option='ALL')

    Línea larga de código, todo en una línea

    El siguiente paso es dividir el código en varias líneas. Normalmente, se consigue pulsando Intro. Sin embargo, en la ventana de Python, con esto se ejecuta la línea de código. Para agregar una línea sin ejecutar el código, debe pulsar Mayús+Intro en su lugar.

  5. Coloque el puntero tras la coma después del primer parámetro, in_features='fire_stations',, y pulse Mayús+Intro.
  6. Agregue espacios antes del nombre del segundo parámetro para que se alinee con el primero.

    Línea larga de código con la primera línea y el espaciado agregado

  7. Coloque el puntero tras la coma después del segundo parámetro y pulse Mayús+Intro.
  8. Coloque el puntero tras la coma después del tercer parámetro y pulse Mayús+Intro.

    Cada parámetro aparece ahora en una línea nueva, pero como todos están dentro de los paréntesis, Python considera que el bloque es una sola línea de código.

    Todos los parámetros en distintas líneas

    Alinear los parámetros de la herramienta mejora la legibilidad.

  9. Pulse Intro para ejecutar la herramienta.

    Diferentes editores de Python utilizan la continuación implícita de línea de forma algo distinta. Por ejemplo, al escribir un script en editores como IDLE y PyCharm, no es necesario introducir manualmente el primer conjunto de espacios; la alineación de varias líneas está automatizada.

    Dividir los parámetros en varias líneas como esta podría parecer un trabajo extra solo para facilitar la lectura. En la ventana de Python, es posible que esta mejor legibilidad no sea excelente, pero cuando escriba scripts más largos en el editor de scripts, la mejora en la legibilidad puede ser significativa. También resulta útil conocer la continuación implícita de línea, ya que verá muestras que la utilizan.

Establecer un espacio de trabajo

Los ejemplos hasta el momento han utilizado la geodatabase Toronto.gdb como el espacio de trabajo. Un espacio de trabajo proporciona una ubicación predeterminada para los datasets con los que trabajará en el código, incluidos los datasets de entrada y salida de las herramientas de geoprocesamiento. Al utilizar la ventana de Python, el espacio de trabajo se controla mediante la configuración del entorno de ArcGIS Pro. Puede confirmar el espacio de trabajo actual en la ventana de Python.

  1. Escriba el siguiente código en la línea de comandos y pulse Intro:

    print(arcpy.env.workspace)

    Se devuelve la siguiente ruta:

    C:\\Lessons\\PythonGP\\Toronto.gdb

    Imprima el entorno actual.

    Para cambiar el espacio de trabajo, tiene varias opciones. Como primera opción, puede cambiar el espacio de trabajo de su proyecto de ArcGIS Pro. Resulta útil si se utiliza la ventana de Python, pero no funciona cuando se utiliza el mismo código de Python en un editor de Python fuera de ArcGIS Pro, como IDLE o PyCharm. Como segunda opción, puede utilizar las rutas completas de cualquier entrada y salida como el parámetro de la herramienta. Aunque esto funciona, se generan rutas muy repetitivas y potencialmente largas en el código, lo que hace que el código sea menos legible y menos sólido. Como tercera opción, puede configurar el espacio de trabajo utilizando código de Python, lo que es la práctica recomendada.

    Agregará una línea de código para establecer el espacio de trabajo.

  2. Escriba el siguiente código en la línea de comandos:

    arcpy.env.workspace =

    A continuación, debe proporcionar el espacio de trabajo como una cadena de caracteres de Python. Puede escribirlo, pero también puede arrastrar la ruta desde el panel Catálogo.

  3. Haga clic en Results.gdb en el panel Catálogo y arrástrela a la línea de comandos de Python.

    Arrastrar la geodatabase Results a la línea de comandos para obtener su ruta.

    La ruta se agrega a la línea de comandos.

    La ruta se agrega a la línea de comandos.

    Además de los espacios de trabajo, también puede arrastrar clases de entidad y otros elementos de datos a su código en la ventana de Python. Poder arrastrar estos elementos resulta cómodo, ya que se genera una ruta completa con el formato adecuado. Ahorra tiempo y evita errores de ortografía.

  4. Pulse Intro para ejecutar la línea de código.

    Se establece el espacio de trabajo y se invalida el espacio de trabajo en el nivel de la aplicación. Significa que cualquier código que se ejecute desde ahora en la ventana de Python empleará este espacio de trabajo. No cambia el espacio de trabajo establecido en Entornos, por lo que todas las herramientas que se ejecuten desde el cuadro de diálogo de su herramienta seguirán utilizando el espacio de trabajo anterior.

    A continuación, ejecutará de nuevo la herramienta Zona de influencia para ver el efecto del cambio del espacio de trabajo.

  5. Con su puntero en la línea de comandos, pulse la flecha hacia arriba del teclado para recuperar la última ejecución de la herramienta Zona de influencia.

    Defina el espacio de trabajo y vuelva a ejecutar Zona de influencia.

  6. Sitúe el puntero al final de la línea del código y pulse Intro dos veces.
  7. Expanda Results.gdb.

    La nueva clase de entidad se agrega a esta geodatabase.

    Nueva clase de entidad en la geodatabase Results.

    Tenga en cuenta que la clase de entidad de entrada es fire_stations. Esta clase de entidad no reside en el espacio de trabajo actual (Results.gdb). No obstante, fire_stations es una capa de entidades del mapa actual. Al ejecutar herramientas de geoprocesamiento en la ventana de Python, puede utilizar como entrada tanto capas de entidades en el mapa actual como clases de entidad en el disco. Así pues, es fundamental que entienda el espacio de trabajo utilizado.

  8. Escriba el siguiente código en la línea de comandos y pulse Intro:

    arcpy.management.AddXY("fountains")

    Da como resultado un error:

    ERROR 000732: Input Features: Dataset fountains does not exist or is not supported
    Failed to execute (AddXY).

    La clase de entidad fountains reside en la geodatabase Toronto, que ya no es el espacio de trabajo para la ventana de Python. La clase de entidad no se ha agregado al mapa activo, por lo que no se puede encontrar.

    Para trabajar con una clase de entidad que no está en el espacio de trabajo, primero debe agregarla al mapa activo o utilizar la ruta completa. Agregará la ruta completa.

  9. Pulse la flecha hacia arriba para recuperar la línea de código anterior.
  10. Elimine el nombre de la clase de entidad, "fountains".

    Ahora, el código debería tener este aspecto:

    arcpy.management.AddXY()

  11. En el panel Catálogo, expanda Toronto.gdb y arrastre la clase de entidad fountains a la línea de comandos de Python.

    Arrastrar la clase de entidad fountains a la herramienta.

    La ruta completa a la clase de entidad fountains se agrega a los parámetros de la herramienta.

    La ruta se agrega a la herramienta.

  12. Con el puntero al final de la línea del código y pulse Intro.

    La herramienta Agregar coordenadas XY se ejecuta sin ningún error. Utilizar la ruta completa invalida el espacio de trabajo solo para esta línea de código.

    En la mayoría de scripts, comienza por configurar el espacio de trabajo en la parte superior del script. Hay una configuración adicional que se utiliza comúnmente. Una de las opciones de un proyecto de ArcGIS Pro es permitir que el geoprocesamiento sobrescriba los datasets existentes. Facilita la ejecución de las mismas herramientas varias veces. En Python, puede establecer esta propiedad ejecutando esta línea de código:

    arcpy.env.overwriteOutput = True

    Un script típico que utiliza herramientas de geoprocesamiento suele empezar de esta manera:

    import arcpy
    arcpy.env.workspace = <path to workspace as a string>
    arcpy.env.overwriteOutput = True

    <path to workspace as a string> se reemplazaría por la ruta real al espacio de trabajo.

    Al utilizar la ventana de Python, las importaciones y los entornos se controlan mediante ArcGIS Pro, lo que significa que estas líneas no son necesarias. Sin embargo, los scripts independientes en editores de Python tales como IDLE y PyCharm requieren el uso de importaciones y la configuración de entornos, por lo que no está de más incluirlos.

Exportar código desde el Historial

Por último, hay una forma más de obtener ayuda con la escritura de código para ejecutar herramientas de geoprocesamiento. Puede ejecutar una herramienta desde su cuadro de diálogo y exportar el código para que se ejecute desde el panel Historial a la ventana de Python.

  1. En el panel Catálogo, vaya a la geodatabase Toronto.gdb.
  2. Agregue las clases de entidad greenspace y etobiocoke al mapa activo.
  3. En la cinta, haga clic en Análisis y, en el grupo Geoprocesamiento, haga clic en Herramientas.

    Haga clic en Análisis y, a continuación, haga clic en Herramientas.

  4. En el panel Geoprocesamiento, escriba Recortar en la barra de búsqueda y pulse Intro.
  5. Haga doble clic en la herramienta Recortar.

    Busque y abra la herramienta Recortar.

  6. En Entidades de entrada, seleccione greenspace.
  7. En Recortar entidades, seleccione etobicoke.
  8. En Entidades o dataset de salida, vaya a Results.gdb y asigne a la clase de entidad de salida el nombre greenspace_clip.

    Herramienta Recortar lista para ejecutarse.

  9. Haga clic en Ejecutar.

    La herramienta Recortar se ejecuta y la clase de entidad resultante se agrega al mapa.

  10. En la cinta, en el grupo Geoprocesamiento, haga clic en Historial.

    Abrir historial

    Aparece el panel Historial de geoprocesamiento.

    También puede hacer clic en Abrir historial, en la parte inferior de la ventana de la herramienta Recortar, para abrir el Historial.

  11. En la lista Historial de geoprocesamiento, haga clic con el botón derecho en Recortar y haga clic en Enviar a ventana de Python.

    El código de Python para ejecutar la herramienta Recortar se envía a la ventana de Python. Este código se denomina fragmento de código, es decir, un código breve.

    Código de Python de Recortar enviado a la ventana de Python desde el Historial de geoprocesamiento.

    Nota:
    Las otras opciones son Copiar comando de Python y Guardar como script de Python. El código resultante es el mismo, pero estas opciones resultan útiles a la hora de trabajar con un editor de Python fuera de ArcGIS Pro o con un notebook.

    El primer y segundo parámetros son los nombres de las capas de datos de entidad y no incluyen una ruta. El tercer parámetro es el nombre de las entidades de salida y sí incluye una ruta completa. Como previamente se estableció un espacio de trabajo mediante arcpy.env.workspace, esta ruta no es necesaria. El parámetro final (tolerancia clúster, que no se muestra en el cuadro de diálogo de la herramienta) se deja en su valor predeterminado None y, por lo tanto, puede no incluirse. De este modo, el código se puede acortar.

  12. Simplifique el código para que sea:

    arcpy.analysis.Clip("greenspace", "etobicoke", "greenspace_clip")

    Versión simplificada del código del Historial

  13. Ejecute el código para comprobar que funcione.

    Dado que la herramienta Recortar se ejecutó anteriormente con la misma configuración, puede parecer que no haya ocurrido nada. Puede probarlo eliminando la capa greenspace_clip del mapa activo y ejecutando de nuevo la herramienta. Esta vez notará que la clase de entidad resultante se ha agregado al mapa.

    Ya ha visto cómo copiar código de Python del historial de geoprocesamiento después de ejecutar la herramienta desde el cuadro de diálogo de la herramienta. Resulta útil para aprender la sintaxis de las herramientas, pero el código puede requerir cierta limpieza para seguir las mejores prácticas, como obviar los parámetros que se pueden dejar en sus valores predeterminados.

Revisión

  • El código de Python se puede usar para ejecutar herramientas de geoprocesamiento. Una buena comprensión de una herramienta de geoprocesamiento facilitará la escritura de este código.
  • La ventana de Python contiene varias funciones que le ayudan a escribir código, incluidas distintas sugerencias de autocompletado de código y otras ayudas de sintaxis.
  • Los parámetros de herramientas pueden ser obligatorios u opcionales. Si los parámetros opcionales se dejan en sus valores predeterminados, se pueden omitir en el código. Cuando es necesario utilizar un parámetro opcional, existen varias opciones para omitir el resto de parámetros opcionales si es necesario.
  • Los resultados de la ejecución de una herramienta desde su cuadro de diálogo se pueden exportar a código de Python como punto de partida para ejecutar la herramienta con Python.

En este tutorial, ha aprendido a ejecutar herramientas de geoprocesamiento en la ventana de Python y a obtener ayuda sobre la sintaxis de Python. Ha aprendido sobre los parámetros de las herramientas, sobre los parámetros obligatorios y opcionales y sobre cómo especificar parámetros. Ha aprendido cómo se comportan las rutas de acceso a datos y los entornos de geoprocesamiento en la ventana de Python. Por último, ha aprendido a copiar el código de una herramienta de geoprocesamiento ya ejecutada desde el Historial de geoprocesamiento a la ventana de Python.

Puede que también le interesen los cursos de escritura de scripts en Python para ArcGIS Pro y scripts avanzados en Python para ArcGIS Pro, desarrollados por el Dr. Paul A. Zandbergen y publicados por Esri Press.