Configurar un proyecto y revisar datasets

Antes de comenzar a escribir el código de Python, descargará los datasets, creará un nuevo proyecto y revisará los datasets que va a utilizar.

  1. Descargue los datos de este tutorial y extraiga el contenido a la carpeta de la unidad C:\.

    El archivo .zip contiene una carpeta denominada PythonStart.

    Nota:

    Puede utilizar otro nombre de carpeta, pero deberá usar esa carpeta al crear el proyecto en los siguientes pasos.

  2. Inicie ArcGIS Pro. Si se le pide, inicie sesión en su cuenta de organización con licencia de ArcGIS.
    Nota:

    Si no tiene acceso a ArcGIS Pro o una cuenta de organización de ArcGIS, consulte las opciones de acceso a software.

  3. En Nuevo proyecto, haga clic en Mapa.

    Plantilla de mapa

  4. En la ventana Nuevo proyecto, en Nombre, escriba Introducción a Python. En Ubicación, vaya a la carpeta C:\PythonStart.
  5. Desactive la casilla Crear una nueva carpeta para este proyecto local.

    Ventana Crear nuevo proyecto con la opción Crear una nueva carpeta para este proyecto local desactivada

  6. Haga clic en Aceptar.

    El proyecto se abre con un mapa en blanco.

  7. Si el panel Catálogo no está visible, en la pestaña Vista, haga clic en Panel Catálogo. Si es necesario, acople el panel Catálogo en el lado derecho de la interfaz de ArcGIS Pro.
  8. En el panel Catálogo, expanda Carpetas y expanda PythonStart.

    Vista de catálogo de la carpeta PythonStart con seis shapefiles

    La carpeta contiene seis shapefiles. En este tutorial solo trabajará con algunos datasets, pero se puede utilizar el mismo código para trabajar con un número mucho mayor.

    Primero determinará manualmente el número de entidades de una sola clase de entidad y, a continuación, ejecutará una herramienta para obtener el mismo resultado. En el resto del tutorial, utilizará Python para determinar el número de entidades de todos los shapefiles.

  9. Haga clic con el botón derecho en ambulances.shp y seleccione Agregar al mapa actual.

    El mapa se acerca a Toronto, Canadá, donde se encuentran los puntos de la capa de ambulancias.

  10. En el panel Contenido, haga clic con el botón derecho en la capa de ambulancias y elija Tabla de atributos.

    Se abre la tabla de atributos. En la parte inferior de la tabla, se muestra el número de registros.

    Recuento del número de entidades en el shapefile ambulances

    El shapefile contiene 48 registros, lo que significa que hay 48 entidades únicas. A continuación, determinará el mismo recuento utilizando una herramienta.

  11. Cierre la tabla de atributos.

Ejecutar una herramienta mediante Python

A continuación, ejecutará una herramienta de geoprocesamiento en ArcGIS Pro. Luego ejecutará la misma herramienta utilizando código Python.

  1. En la cinta, haga clic en la pestaña Análisis. En el grupo Geoprocesamiento, haga clic en Herramientas.

    Botón Herramientas

    Se abre el panel Geoprocesamiento.

  2. En la barra de búsqueda del panel Geoprocesamiento, escriba recuento y pulse Intro.
  3. Haga clic en la herramienta Obtener recuento.
  4. En el panel de la herramienta Obtener recuento, en el parámetro Filas de entrada, elija ambulancias.

    Panel de la herramienta Obtener recuento

  5. Haga clic en Ejecutar.

    Cuando la herramienta termina de ejecutarse, aparece un mensaje en la parte inferior del panel.

    Mensajes de finalización de la herramienta Obtener recuento

  6. Haga clic en Ver detalles.

    Aparece la ventana Obtener recuento (Herramientas de administración de datos) con la pestaña Mensajes abierta.

    Mensajes generados al ejecutar la herramienta Obtener recuento

    En el mensaje aparece Recuento de filas = 48, que es el mismo recuento que ha determinado manualmente abriendo la tabla de atributos. Puede repetir estos pasos para determinar el recuento de todos los shapefiles, pero eso llevaría mucho tiempo si tuviera muchos datasets. En su lugar, desarrollará un script de Python para realizar esta tarea.

  7. Cierre la ventana Obtener recuento.

    A continuación, utilizará Python para ejecutar la misma herramienta.

  8. En la cinta, en la pestaña Análisis del grupo Geoprocesamiento, haga clic en Historial.

    Historial del grupo Geoprocesamiento de la pestaña Análisis

    Aparece el panel Historial con una lista de herramientas que se han ejecutado. La única entrada es la herramienta Obtener recuento que se acaba de ejecutar.

    Panel Historial con una entrada de la herramienta

  9. En la pestaña Análisis, en el grupo Geoprocesamiento, haga clic en el menú desplegable del botón Python y seleccione Ventana de Python.

    Opción Ventana de Python

    Aparece la ventana de Python.

    Ventana de Python con la sección de transcripción y línea de comandos vacía

    Nota:

    Puede mover o acoplar la ventana de Python donde desee. Las imágenes de ejemplo muestran la ventana acoplada bajo el mapa.

    La sección superior de la ventana de Python se conoce como transcripción y la sección inferior se denomina línea de comandos. En un principio, la transcripción está en blanco. La transcripción proporciona un registro del código introducido anteriormente y sus resultados.

    En la línea de comandos se introduce el código. Cuando la ventana de Python aparece por primera vez, el mensaje de la línea de comandos indica Inicializando intérprete de Python, lo que significa que la ventana se está preparando para recibir el código. Después de unos segundos, el mensaje se sustituye por Introducir código de Python aquí, lo que significa que puede comenzar a escribir el código. Después de abrir la ventana de Python por primera vez, estos mensajes no vuelven a aparecer en la sesión actual.

  10. En la ventana de Python, escriba arcpy.administración.GetCount("ambulances").

    Ventana de Python con código del panel Historial

    ArcPy es un paquete Python que pone a su disposición una gran parte de la funcionalidad de ArcGIS Pro desde Python. GetCount() es una función de ArcPy que ejecuta la herramienta de geoprocesamiento Obtener recuento ubicada en la caja de herramientas Herramientas de administración de datos.

    Nota:

    Todos los temas de ayuda para las herramientas de geoprocesamiento incluyen ejemplos de Python. Por ejemplo, en el tema de ayuda Obtener recuento, en Parámetros, haga clic en Python para ver el código de ejemplo del tema.

  11. Pulse Intro

    El código se ejecuta y el resultado es <Result '48'>.

    El resultado de ejecutar la herramienta Obtener recuento se imprime en la sección de transcripción

    Aunque el formato es un poco diferente, es el mismo recuento de registros que ha determinado anteriormente. Al ejecutar la línea de código en la ventana de Python, se producen los mismos resultados que al ejecutar la herramienta mediante el panel de la herramienta. Al ejecutar el código en la ventana de Python también se crea una nueva entrada en el panel Historial.

    Panel Historial con dos entradas de la herramienta

    Salvo por la marca de tiempo, estas dos entradas son idénticas y no hay ninguna diferencia entre ejecutar una herramienta mediante el panel de la herramienta y utilizar Python. Sin embargo, mediante Python, puede utilizar el código para controlar cómo se ejecutan las herramientas, incluida la ejecución de la misma herramienta muchas veces en diferentes clases de entidad.

  12. En la ventana de Python, haga clic con el botón derecho en el código y elija Borrar transcripción.

    Borrar transcripción en la ventana de Python

    Todo lo que se ejecutó en el código anterior permanece en la memoria.

Ejecutar un código en la ventana de Python

La ventana de Python es un lugar conveniente para poner en práctica la escritura de código de Python.

  1. En la ventana de Python, haga clic en la línea de comandos y escriba la siguiente línea de código:

    print("GIS is cool")

    Línea de código en la línea de comandos de la ventana de Python

    En esta línea de código, print() es una función. Una función de Python realiza una tarea específica. En este caso, la función imprime texto. La mayoría de las funciones de Python tienen argumentos o parámetros, que se proporcionan entre paréntesis después de la función. En este caso, el argumento es una cadena de caracteres. Una cadena de caracteres de Python es una secuencia de caracteres. Puede crear una cadena de caracteres poniendo los caracteres entre comillas.

    Python utiliza comillas simples y dobles para identificar cadenas de caracteres, siempre que se utilicen de forma coherente. Por lo tanto, tanto print("GIS is cool") como print('GIS is cool') son correctos, pero print("GIS is cool') generan un error. Las comillas en Python siempre son rectas (en lugar de oblicuas). Adoptan este formato automáticamente al escribir el código en la ventana de Python u otro entorno de programación. A veces, si copia un código al que se le ha dado formato o que se ha escrito en un software de procesamiento de texto, es posible que las comillas rectas se hayan reemplazado por comillas oblicuas. Por ejemplo, print(“GIS is cool”) genera un error.

  2. Haga clic al final de la línea de código y pulse Intro.

    La línea de código se ejecuta y se copia en la transcripción, seguida por el resultado.

    Cadena de texto impresa en la transcripción

    La línea de comandos está vacía de nuevo, lista para recibir la siguiente línea de código.

    Este ejemplo es sencillo, pero ilustra un aspecto clave de la ejecución de un código de Python. Debe escribir una sola línea de código que incluya las instrucciones específicas que se van a llevar a cabo. Al pulsar Intro, se ejecuta la línea de código y se llevan a cabo las instrucciones. En este ejemplo, las instrucciones consisten en imprimir texto en la pantalla, pero pueden incluir muchas otras tareas, como pudo ver al ejecutar la herramienta Obtener recuento.

    A continuación, practicará con algunas líneas más de código.

  3. En la línea de comandos, introduzca la siguiente línea de código:

    x = 37

    En esta línea de código, x es una variable. Una variable es como un contenedor que almacena un valor. En este ejemplo, ese valor es el número entero 37, pero podría ser otro número, texto o el nombre de un dataset. La línea de código se denomina asignación, ya que a la variable se le asigna un valor. El signo igual se utiliza en la asignación de variables para indicar que la variable se está estableciendo igual al valor. Las variables se asignan para que se puedan utilizar más adelante en el código.

  4. Al final de la línea de código, pulse Intro.

    La asignación se movió a la transcripción, pero no se realizó ninguna impresión

    Se ejecuta la línea de código, pero no se imprime ningún resultado. A la variable se le asigna un valor, pero no hay más instrucciones que llevar a cabo.

  5. En la línea de comandos, introduzca la siguiente línea de código y pulse Intro:

    y = 73

    Esta línea es otra sentencia de asignación.

  6. En la línea de comandos, introduzca la siguiente línea de código y pulse Intro:

    x * y

    Esta línea realiza un cálculo; en este caso, se multiplican los valores x y y. Se muestra el resultado.

    Resultado del cálculo impreso en la transcripción

    Hasta ahora, ha introducido las líneas de código sin preocuparse demasiado sobre cómo escribir exactamente cada línea. Al utilizar una sentencia de asignación, los espacios son opcionales. Por lo tanto, x = 37 es igual que x=37. Normalmente, los espacios se agregan para mejorar la legibilidad.

  7. En la línea de comandos, introduzca la siguiente línea de código y pulse Intro:

    X * y

    Esto da como resultado un error:

    NameError: name 'X' is not defined. Did you mean: 'x'?

    Error generado al utilizar X en mayúsculas

    Python distingue entre mayúsculas y minúsculas, por lo que X es diferente de x. Ha definido x asignándole el valor 37, pero a la X mayúscula no se le ha asignado ningún valor, por lo que se genera un error.

    A medida que sigue ejecutando líneas de código en la ventana de Python, todo el código ejecutado anteriormente y los resultados aparecen en la transcripción. Puede borrar la transcripción, pero esto no borra los valores de ninguna variable que haya asignado, pero sí se borrarán al reiniciar su sesión de ArcGIS Pro.

  8. Haga clic con el botón derecho en la transcripción y seleccione Borrar transcripción.

    A continuación, observe un ejemplo más aplicado: la conversión entre la temperatura en grados Fahrenheit (F) y Celsius (C). La fórmula general es:

    F = 9/5 * C + 32

    Se puede escribir en Python como un cálculo sencillo.

  9. En la línea de comandos, introduzca las siguientes líneas de código y pulse Intro al final de cada línea:

    temp_c = 17

    temp_f = temp_c * 9 / 5 + 32

    print(temp_f)

    El resultado del cálculo se imprime.

    Valor calculado para la temperatura

    La primera línea del código asigna un valor numérico a la variable temp_c. La segunda línea realiza un cálculo utilizando la variable temp_c y el resultado se asigna a una nueva variable temp_f. La tercera línea imprime el valor de la variable temp_f. Esta tercera línea también se puede escribir como temp_f, pero es habitual el uso de la función print(), ya que proporciona mejores opciones de formato.

    También se puede obtener el mismo resultado sin utilizar variables.

  10. En la línea de comandos, introduzca la siguiente línea de código y pulse Intro:

    17 * 9 / 5 + 32

    El resultado también es 62,6.

    Hay buenas razones para utilizar variables. En primer lugar, en muchos casos, no desea realizar el cálculo en un solo valor, sino en muchos valores. En segundo lugar, a menudo debe escribir el código para realizar el cálculo, pero no sabe de antemano los valores que se van a utilizar. Cuando escribe el cálculo como la relación entre dos variables, puede reutilizar el cálculo y no depende de un solo valor.

Obtener ayuda al escribir código

La ventana de Python incluye varias características que le ayudarán con la escritura del código. Considere el ejemplo anterior de uso de la función print().

  1. Borre la transcripción.
  2. En la línea de comandos, introduzca el código siguiente:

    pri

    Incluso antes de terminar de escribir print, aparece un elemento emergente con la función print(). El icono azul con la letra F indica que se trata de una función. Esto se denomina finalización automática o finalización del código.

    Elemento emergente para la función print()

  3. Señale la ventana emergente print().

    Se muestra la ayuda de sintaxis para la función.

    Sintaxis de la función print()

    La ayuda para la función print() proporciona información sobre los parámetros que toma y su orden.

    Puede seguir escribiendo o puede hacer clic en el elemento emergente para completar automáticamente este código.

  4. Haga clic en el elemento emergente print().

    La función print() aparece ahora en la línea de comandos. Se agrega automáticamente un par de paréntesis. Si no hace clic en el elemento emergente y sigue escribiendo, después de escribir print(, se agrega automáticamente un paréntesis de cierre. Este es otro ejemplo de finalización de código para ayudarle a escribir la sintaxis correcta.

    Cuando el cursor está dentro de los paréntesis, vuelve a aparecer la ayuda de sintaxis para la función.

  5. Escriba una comilla entre los paréntesis de la función print().

    Se agrega automáticamente la segunda comilla.

    Comillas para el parámetro de la función print()

    La ventana de Python proporciona elementos emergentes de finalización automática, una visualización interactiva de la ayuda de sintaxis y sugerencias relacionadas con los errores de sintaxis.

  6. Elimine el código de la línea de comandos.
  7. Confirme que el mapa activo aún contenga una capa de entidades denominada ambulances.
  8. En la línea de comandos, introduzca el código siguiente:

    arc

    Aparece un elemento emergente con el paquete de ArcPy, que viene indicado por el icono rojo con la letra P.

    Los paquetes son una forma de ampliar el conjunto básico de un código de Python. ArcPy es un paquete que agrega la funcionalidad de ArcGIS a Python.

  9. Haga clic en el elemento emergente arcpy.

    Ahora, el paquete de arcpy aparece en la línea de comandos, seguido de un punto. Para fragmentos de código muy cortos, como este ejemplo, escribir todos los caracteres es muy rápido y hacer clic en los elementos emergentes no ahorra mucho tiempo. Sin embargo, para los elementos de código más largos, utilizar la finalización del código ahorra tiempo, evita errores tipográficos y proporciona ayuda con la sintaxis.

  10. Después de arcpy., escriba Get, como en el texto siguiente:

    arcpy.Get

    Aparece una lista de elementos de código que comienzan por Get y que seguirían de forma lógica a arcpy.

    Elemento emergente para los elementos de código que comienzan por arcpy.Get

    La finalización del código distingue el contexto. Por ejemplo, si empezó a escribir Get al inicio de una línea de código (sin arcpy.), las opciones mostradas son muy diferentes en comparación con arcpy.Get.

  11. Haga clic en GetCount()management en la lista de opciones.
    Nota:

    La palabra management después de GetCount() indica que GetCount() forma parte del conjunto de herramientas de administración.

    La línea de comandos se completa con el siguiente código:

    arcpy.management.GetCount()

    Es idéntico al código utilizado anteriormente en este tutorial, donde management hace referencia a la caja de herramientas Herramientas de administración de datos y GetCount() hace referencia a la herramienta Obtener recuento.

    Con el cursor entre los paréntesis, aparecen dos elementos emergentes.

    Sintaxis de GetCount

    El elemento emergente inferior muestra la sintaxis de la herramienta Obtener recuento. La sintaxis explica que el único parámetro se denomina in_rows y consta de una vista de tabla de entrada o una capa ráster. El elemento emergente superior muestra el nombre de la capa ambulances en el mapa activo. Esta es una línea de comandos de finalización de código para el parámetro in_rows de la herramienta Obtener recuento. Es decir, la ventana de Python reconoce que la capa del mapa activo es un parámetro válido de la herramienta. Puede optar por utilizar esta capa o escribir otra cosa.

  12. Haga clic en el elemento emergente ambulances.

    La línea de comandos se completa con el siguiente código:

    arcpy.management.GetCount('ambulances')

    En este caso, la finalización del código agrega automáticamente un par de comillas alrededor del nombre de la capa. La finalización del código en la ventana de Python es una buena forma de aprender la sintaxis adecuada. Aunque la finalización del código agrega comillas simples, también puede utilizar comillas dobles.

    No es necesario ejecutar este código, ya que es idéntico al código que ejecutó anteriormente.

  13. Elimine el código de la línea de comandos.

Iterar con un bucle for

A continuación, probará la iteración, es decir, la repetición de los mismos pasos varias veces. Creará una lista de valores y realizará el mismo cálculo en cada elemento de la lista.

  1. En la línea de comandos, introduzca la siguiente línea de código y pulse Intro:

    templist_c = [17, 19, 24, 21, 16]

    Este código crea una lista de Python que contiene cinco elementos del mismo tipo; en este caso, son valores de temperatura en grados centígrados. Las listas son un tipo de datos muy común en Python. Una lista consta de una secuencia de elementos entre corchetes [ ] y los elementos están separados por comas.

  2. En la línea de comandos, introduzca la siguiente línea de código y pulse Intro:

    for temp_c in templist_c:

    Línea de comandos después de introducir un código de bucle en la ventana de Python.

    Cuando pulse Intro al final de esta línea de código, el código no se ejecuta, pero la línea de comandos se mueve a la siguiente línea. La línea de código termina con dos puntos, lo que significa que el código continúa, y la línea no se puede ejecutar por sí sola.

    La línea de código es el inicio de un bucle for, que tiene la siguiente estructura general:

    for <element> in <list>:

    <execute one or more lines of code>

    Un bucle for le permite iterar los elementos de una lista existente y repetir los mismos pasos para cada elemento. La línea de código que contiene la palabra clave for termina con dos puntos. La siguiente línea de código está sangrada. Todas las líneas de código situadas inmediatamente después de esta y que tienen la misma sangría se ejecutarán con cada iteración. El bloque de código que se repite se puede identificar mediante su sangría.

    La ventana de Python reconoce el bucle for gracias a los dos puntos y, por lo tanto, la siguiente línea de código está sangrada.

  3. En la línea de comandos, introduzca la siguiente línea de código y pulse Intro:

    temp_f = temp_c * 9 / 5 + 32

    Este código debería conservar la sangría. Si elimina accidentalmente la sangría, puede aplicar sangría a la línea agregando cuatro espacios al inicio. Los cuatro espacios son el nivel de sangría predeterminado para un bloque de código.

  4. En la línea de comandos, introduzca la siguiente línea de código y pulse Intro:

    print(temp_f)

    No es obligatorio el uso de print(), pero en muchos casos, da como resultado un mejor formato en las salidas.

    Un bucle for en la sección de línea de comandos antes de la ejecución

    El bucle for está completo y está listo para ejecutarse.

  5. Con el cursor todavía en la línea de código vacía, pulse Intro.

    Se muestra el resultado.

    Valores de temperatura calculados

    El bucle for itera todos los elementos de la lista y realiza el mismo cálculo. Se trata de un concepto muy potente en programación, ya que el esfuerzo al escribir el código es el mismo independientemente de si la lista contiene 5 o 5.000 elementos.

Crear e iterar una lista de clases de entidad

Ahora que ha practicado la escritura y ejecución de un código en la ventana de Python, volverá a la tarea original de determinar el número de entidades para cada clase de entidad en la carpeta de interés.

Utilizará la herramienta Obtener recuento otra vez.

  1. Borre la transcripción. Confirme que el mapa activo aún contenga una capa de entidades denominada ambulances.
  2. Ejecute las siguientes líneas de código:

    count = arcpy.management.GetCount("ambulances")

    print(count)

    El resultado es el valor 48. Este código es casi idéntico al código que ejecutó anteriormente en este tutorial, pero ahora el resultado de la herramienta Obtener recuento se asigna a una variable. Esto facilita el trabajo con el resultado, aunque por ahora lo único que va a hacer con el resultado es imprimir su valor.

    Hasta el momento, el código utiliza el nombre de la capa de entidades que está abierta en el mapa activo. Aunque en principio es cómodo, no resulta muy práctico tener que agregar todos los shapefiles a un mapa y ejecutar el código manualmente para cada capa de entidades. En su lugar, puede apuntar a la clase de entidad en el disco especificando la ruta completa.

  3. Ejecute las siguientes líneas de código:

    count = arcpy.management.GetCount("C:/PythonStart/ambulances.shp")

    print(count)

    Se imprime el mismo resultado.

    Nota:

    Si guardó la carpeta PythonStart en una ubicación de su equipo distinta de la carpeta de la unidad C:\, deberá actualizar la ruta en consecuencia para esta línea de código y las futuras líneas de código que hagan referencia a la ubicación de la carpeta.

    La ruta está entre comillas dado que es una cadena de caracteres. Se utiliza una barra diagonal (/) en la ruta, en lugar de una barra invertida (\). En Python se utiliza una barra invertida como carácter de escape que puede cambiar el significado del carácter que lo sigue. Esto puede tener consecuencias no deseadas si utiliza barras invertidas en cadenas de caracteres. Asimismo, se hace referencia a la clase de entidad como ambulances.shp, ya que la extensión de archivo .shp forma parte del nombre. Si se utilizara solamente ambulances, se generaría un error porque no existe ninguna clase de entidad llamada ambulances en la carpeta.

    En lugar de especificar la ruta completa, puede establecer el espacio de trabajo. Un espacio de trabajo es una de las distintas configuraciones del entorno que influyen en las operaciones de geoprocesamiento. Además del espacio de trabajo, los entornos incluyen el sistema de coordenadas de salida predeterminado, el tamaño de celda predeterminado para el procesamiento de datos ráster y otros.

  4. Ejecute las siguientes líneas de código:

    arcpy.env.workspace = "C:/PythonStart"

    count = arcpy.management.GetCount("ambulances.shp")

    print(count)

    Se imprime el mismo resultado.

    Aunque la configuración del espacio de trabajo requiere una línea de código adicional, suele ser efectivo utilizar un espacio de trabajo, ya que todas las líneas siguientes de código de ArcPy lo utilizarán automáticamente. La segunda línea de código ya no requiere la ruta completa. Si no se establece ningún espacio de trabajo en el código, se utiliza el espacio de trabajo predeterminado del proyecto.

    El paso final para realizar la tarea original de determinar el número de entidades para cada dataset de la carpeta es agregar algo de código para crear una lista de shapefiles en el espacio de trabajo y ejecutar la herramienta Obtener recuento en cada elemento de esta lista. Una vez establecido el espacio de trabajo, puede crear una lista de clases de entidad en este espacio de trabajo utilizando una función de ArcPy.

  5. Introduzca la siguiente línea de código y pulse Intro:

    fc_list = arcpy.ListFeatureClasses()

    La función ListFeatureClasses() crea una lista de clases de entidad. Al asignarla a una variable, puede utilizar la lista en otras tareas.

    Para comprobar el contenido de la lista, puede imprimir sus valores.

  6. Ejecute la siguiente línea de código:

    print(fc_list)

    El resultado es:

    ['ambulances.shp', 'boundary.shp', 'fire_stations.shp', 'fire_zones.shp', 'voting_divisions.shp', 'voting_sites.shp']

    A continuación, creará un bucle para iterar los elementos de la lista.

  7. Introduzca la siguiente línea de código y pulse Intro para iniciar un bloque de código:

    for fc in fc_list:

  8. Introduzca la siguiente línea de código y pulse Intro:

    count = arcpy.management.GetCount(fc)

    Esta línea de código utiliza la misma herramienta Obtener recuento que usted utilizó antes, pero ahora utiliza la variable fc en lugar del nombre de una clase de entidad específica. Dado que fc se actualiza para contener cada nombre de clase de entidad en la lista de clases de entidad, con cada iteración se utiliza la siguiente clase de entidad.

  9. Introduzca la siguiente línea de código y pulse Intro dos veces:

    print(count)

    El resultado imprime el número de entidades de cada uno de los shapefiles en los espacios de trabajo.

    Número de entidades de cada shapefile

    El código que ha desarrollado tiene como tarea contar las entidades de cada shapefile. El código no está muy depurado, ya que si hubiera un gran número de shapefiles sería engorroso leer la impresión. Puede agregar código para crear una salida más significativa, como incluir el nombre de la clase de entidad después de cada recuento, escribir los resultados en un archivo de texto, calcular un número total de entidades en el espacio de trabajo o determinar la clase o las clases de entidad con más entidades.

    El mismo código utilizado en la ventana de Python también se puede utilizar en un ArcGIS Notebooks en ArcGIS Pro (o en un Jupyter Notebook, fuera de ArcGIS Pro). Estos pasos no se tratan aquí, pero puede copiar el código desde la ventana de Python y pegarlo en una celda de un Notebooks.

    También puede utilizar el código fuera de ArcGIS Pro en un editor de Python; es lo que hará a continuación. Puede guardar el código desde la ventana de Python en un archivo de script de Python para iniciar su trabajo en un editor de Python.

  10. Haga clic con el botón derecho en el código de la transcripción de la ventana de Python y seleccione Guardar transcripción.
  11. En la ventana Guardar transcripción, vaya a la carpeta C:\PythonStart y guarde su trabajo como count_features.py.
  12. Guarde el proyecto y cierre ArcGIS Pro.

    Ahora ya tiene todo listo para abrir el script en un editor de Python.

Ejecutar un script en un editor de Python

Aunque ejecutar código de Python en ArcGIS Pro utilizando la ventana de Python o dentro de un notebook resulta conveniente, a veces debe ejecutar el código fuera de ArcGIS Pro. Un ejemplo típico es cuando se desea programar un script para que se ejecute a una hora predeterminada, pero también existen otros escenarios. Por ejemplo, los proyectos más complejos requieren a menudo varios elementos de código que trabajan juntos y, por lo general, supone la necesidad de organizar el código en varios archivos .py diferentes. Puede utilizar un script como parte de la creación de una herramienta personalizada que también requiere un archivo .py.

La ejecución del código de Python fuera de ArcGIS Pro requiere un editor de código de Python, también denominado entorno de desarrollo integrado (IDE). Utilizará un IDE llamado IDLE, sigla en inglés de Integrated DeveLopment Environment (observe la L mayúscula). IDLE viene con cada instalación de Python, por lo que, si su equipo tiene Python, también tiene IDLE.

Existen muchos otros IDE de Python, incluidos PyCharm y Spyder, pero IDLE es un buen comienzo. Se requieren pasos adicionales para descargar, instalar y configurar IDE como PyCharm y Spyder, mientras que IDLE forma parte de cualquier instalación de Python y está listo para su uso.

  1. Inicie el Explorador de archivos.
  2. Vaya a la carpeta C:\PythonStart.
  3. Haga clic con el botón derecho en el archivo count_features.py y seleccione Editar con IDLE (ArcGIS Pro).

    Opción Editar con IDLE en el Explorador de archivos

    El script de Python se abre en una ventana de script de IDLE. También puede ver la opción para Editar con IDLE si tiene ArcGIS Desktop 10.x instalado. Debe utilizar Editar con IDLE (ArcGIS Pro), ya que con ello se abre el script con la versión de Python instalada con ArcGIS Pro. ArcGIS Desktop 10.x utiliza una versión anterior de Python.

    Nota:

    Si Editar con IDLE (ArcGIS Pro) no está visible en el menú contextual, haga clic en Inicio, expanda ArcGIS y abra la ventana de comandos de Python. En la ventana de comandos de Python, escriba inactivo y pulse Intro. Aparece la ventana IDLE (Python 3.9 Shell). Haga clic en Archivo y elija Abrir. Busque y abra el archivo count_features.py.

    Ventana de script en IDLE con código exportado

    La parte superior de la ventana de script muestra la versión de IDLE utilizada en Python. Se trata de la versión de Python que se instala la aplicación de ArcGIS Pro. Es posible que un script escrito en Python 3.7 no funcione en versiones anteriores (2.x) de Python.

    El código incluye todo el contenido de la transcripción de la ventana de Python, incluidos los resultados. Los resultados están precedidos por el símbolo # o almohadilla, lo que significa que se interpretan como comentarios. Python omite los comentarios, pero pueden ser una forma muy útil de documentar qué hacen las distintas partes del código.

    Antes de trabajar con este código, vamos a echar un vistazo rápido a cómo funciona el Shell de Python en IDLE.

  4. En el menú superior de IDLE, haga clic en Ejecutar y seleccione Shell de Python.

    Se abre el shell de Python o intérprete interactivo. El símbolo >>> se conoce como línea de comandos. Mientras utiliza el intérprete interactivo, puede dejar abierta la ventana de script con el archivo count_features.py, ya que la utilizará más adelante.

  5. Coloque el cursor después de la línea de comandos (después de >>>) y escriba el siguiente código:

    print("GIS is cool")

    Imprimir el código en la ventana del Shell de Python

  6. Pulse Intro.

    El resultado se imprime en la siguiente línea y aparece una nueva línea de comandos.

    Resultado de Imprimir en el Shell de Python

    La ejecución del código en el intérprete interactivo es similar a la ejecución del código línea por línea en la ventana de Python. Cada vez que pulse Intro, se ejecuta la línea de código y el resultado, si lo hay, se imprime en la siguiente línea. Una diferencia clave es que el Shell de Python no tiene secciones separadas para la transcripción y la línea de comandos, pero por lo demás los dos planteamientos son prácticamente idénticos.

    A continuación, limpiará el script y ejecutará el código.

  7. Cierre la ventana del Shell de Python y vuelva a la ventana de script del script count_features.py.
  8. Borre el código quitando todas las líneas anteriores a la línea que empiece por arcpy.env.workspace y elimine todas las líneas que sean resultados, indicados por el símbolo #, lo que significa que se trata de un código de comentario.
  9. Elimine estas dos líneas consecutivas:

    count = arcpy.management.GetCount("ambulances.shp")

    print(count)

  10. Elimine esta línea:

    print(fc_list)

    El código restante es:

    
    arcpy.env.workspace = "C:/PythonStart"
    fc_list = arcpy.ListFeatureClasses()
    for fc in fc_list:
        count = arcpy.management.GetCount(fc)
        print(count)

    Script de entidades Count en IDLE

  11. Asegúrese de que la línea final esté sangrada cuatro espacios para que coincida con la línea anterior.
  12. Haga clic en Archivo y seleccione Guardar para guardar el script.
  13. Haga clic en Ejecutar y seleccione Ejecutar módulo para ejecutar el script.

    El resultado se imprime en la ventana interactiva.

    Shell de Python con un mensaje de error

    En lugar de imprimir los recuentos de entidades, la ventana interactiva imprime el siguiente error:

    NameError: name 'arcpy' is not defined

    El motivo del error es que está utilizando el paquete de ArcPy, pero el código se está ejecutando fuera de ArcGIS Pro. Para utilizar un paquete, se debe importar en la parte superior del script.

  14. Cierre la ventana Shell de Python.
  15. Coloque el cursor en la posición del primer carácter de la primera línea del script. Pulse Intro.

    Al comienzo del script se agrega una línea en blanco.

  16. Agregue el siguiente código en la primera línea del script:

    import arcpy

    Ventana de script en IDLE con el script final

  17. Guarde y ejecute su script.

    Los recuentos resultantes se imprimen en la ventana interactiva.

    Shell de Python con el número de entidades impreso

    La primera vez que utiliza ArcPy en su script, puede que los resultados tarden unos minutos en aparecer porque a Python le lleva unos segundos importar ArcPy.

    El resultado es idéntico al de ejecutar el código en ArcGIS Pro, pero no es necesario que ArcGIS Pro esté abierto para que el script se ejecute (aunque sí es necesario que esté instalado y tenga una licencia en el equipo que está utilizando).

    Utilizar un editor de Python para trabajar con su código aporta grandes ventajas. Una de las ventajas clave es que puede escribir scripts más largos y guardar el código como archivos .py. Guardar el código como un archivo también facilita la depuración y reutilización del código.

Comparaciones de planteamientos al ejecutar el código de Python

Ha visto dos formas de escribir y ejecutar el código de Python. A continuación, se presenta un resumen de las ventajas e inconvenientes de cada planteamiento. En este tutorial, no se han tratado todos estos elementos en profundidad, pero resultará útil recordar estos puntos a medida que continúa aprendiendo Python.

MétodoVentajasDesventajas

Ventana de Python en ArcGIS Pro

  • Empezar es sencillo
  • Se interactúa con datos y mapas dentro de ArcGIS Pro
  • Proporciona ayuda con la finalización de código intuitiva
  • Se limita a fragmentos de código relativamente cortos
  • Faltan varias características habituales en los editores de Python
  • No se ha diseñado para guardar y organizar los scripts
  • Solo se puede utilizar en ArcGIS Pro

Editor de Python (IDE)

  • El código se ejecuta sin que ArcGIS Pro esté abierto
  • Incluye muchas características para ayudar a escribir y probar con código más complejo
  • El trabajo se guarda como archivos .py para organizar los proyectos con código más complejo
  • Los diferentes IDE satisfacen las necesidades de los diversos tipos de usuarios y aptitudes
  • Algunos IDE se pueden utilizar para varios lenguajes de programación
  • La funcionalidad varía según el IDE específico que se utilice
  • Es posible que falten línea de comandos de finalización de código en función del IDE
  • Algunos IDE requieren una configuración personalizada para poder utilizarlos con ArcGIS Pro
  • Algunos IDE pueden resultar complicados para principiantes

Nota:

Para el código que se ejecuta en ArcGIS Pro, incluida la ventana de Python, no es necesario importar arcpy. Para código que se ejecuta fuera de ArcGIS Pro, por ejemplo, en un editor de Python, debe utilizar arcpy importado antes de poder utilizar la funcionalidad del paquete de ArcPy.

Existen varias maneras de ejecutar un código de Python. Incluye ejecutar el código en un notebook, ejecutar un script utilizando una línea de comandos o programar la ejecución de un script desde el sistema operativo. Estos se cubren en otros tutoriales.

Ha aprendido a escribir y ejecutar un código de Python en la ventana de Python y en IDLE. Aprendió sobre variables y bucles, dos conceptos muy importantes en Python. También aprendió a configurar el entorno de Python y a utilizar las herramientas de geoprocesamiento estándar de ArcGIS en Python. Esta es la primera de una serie de tutoriales sobre cómo utilizar Python en ArcGIS Pro ¡Manténgase al tanto para seguir aprendiendo!

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

Encontrará más tutoriales en la galería de tutoriales.