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 vaya a utilizar.

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

    El archivo .zip contiene una carpeta llamada NotebookStart.

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

  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. Haga clic en Abrir otro proyecto.

    Abrir otro proyecto

  4. En la ventana Abrir proyecto, vaya a la carpeta que extrajo del archivo NotebookStart.zip, haga clic en Notebooks Getting Started.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á ya visible, haga clic en la pestaña Ver y haga clic en el panel Catálogo.
  6. Acople el panel Catálogo al lado derecho del mapa.
  7. En el panel Catálogo, expanda Carpetas y a continuación NotebookStart.
  8. Expanda la geodatabase Toronto.gdb.

    La 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 etobicoke y haga clic en Agregar al mapa actual.

    Estos polígonos representan varias comunidades dentro de la ciudad de Toronto.

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

    Estas clases de entidad representan la ubicación de los parques de bomberos y las zonas verdes dentro de la ciudad de Toronto, respectivamente. Utilizará estas clases de entidad para ejecutar varias herramientas de geoprocesamiento con Python.

  11. La carpeta NotebookStart también contiene una geodatabase llamada Notebooks Getting Started.gdb, que es la geodatabase predeterminada para el proyecto y actualmente está vacía.

Crear un notebook y ejecutar código en Python

En esta sección, creará un notebook en ArcGIS Pro y lo usará para ejecutar código en Python.

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

    Abra un nuevo notebook de Python en ArcGIS Pro.

    Al hacer clic en el botón Python, también se abre un nuevo notebook, pero el menú desplegable le permite ver que puede elegir entre Notebook de Python y Ventana de Python. La Ventana de Python es otra forma de ejecutar código de Python en ArcGIS Pro.

    El nuevo notebook puede tardar unos segundos en aparecer, y es posible que vea el mensaje Inicializalizando kernel en la pantalla mientras espera. Significa que ArcGIS Pro está preparando la ejecución de código en el notebook. El kernel es un software que se ejecuta en segundo plano y que ejecutará el código de Python que introduzca en el notebook.

    Una vez abierto, el notebook aparece como una vista nueva en la ventana principal de ArcGIS Pro.

    El nuevo notebook se almacena como un archivo .ipnyb en la carpeta de inicio de su proyecto. El nuevo notebook también aparece bajo la carpeta Notebooks en el panel Catálogo.

  2. Haga clic en el interior de la celda vacía del notebook.

    Aparece un nuevo notebook en ArcGIS Pro y la celda pasa a ser de color verde al hacer clic en ella.

    El contorno cambia a verde.

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

    print("Hello Notebook!")

    Agregar código para imprimir Hello Notebook!

    Este código llama a la función de impresión con un único parámetro de entrada entre paréntesis. Este parámetro es una cadena de caracteres, porque está entre comillas. Las cadenas de caracteres son un tipo de datos importante y útil con el que puede trabajar en Python.

  4. En la barra de herramientas situada encima de la celda, haga clic en el botón Ejecutar.

    Haga clic en el botón Ejecutar.

    Se ejecuta el código en la celda y el resultado se imprime debajo de la celda. La función de impresión se ejecuta tomando como parámetro la cadena de caracteres "Hello Notebook!" y la imprime. Las comillas no se imprimen porque no forman parte de la cadena de caracteres, solo sirven para delimitarla. El número 1 aparece entre corchetes a la izquierda de la celda. Se agrega una nueva celda vacía debajo.

    El mensaje «Hello Notebook!» aparece debajo de la celda, y se agrega una nueva celda.

    También puede ejecutar la celda actualmente seleccionada pulsando Ctrl+Intro.

    Puede agregar varias líneas de código dentro de una misma celda pulsando la tecla Intro después de cada línea. Puede ser contraintuitivo si tiene la costumbre de ejecutar código en la ventana de Python o en la ventana interactiva de un editor de Python, donde al presionar la tecla Intro se ejecuta la línea de código.

  5. En la celda situada debajo de su código Hello Notebook!, escriba las siguientes líneas de código:

    a = 5
    b = 7
    c = 9
    print(a * b * c)

    Este código crea tres variables, a, b y c, y les asigna valores iguales a los números 5, 7 y 9. La última línea imprime el resultado de multiplicar las variables.

    Celda con tres variables definidas y una línea para multiplicarlas

  6. Pulse Ctrl+Intro.

    Resultados después de ejecutar la segunda celda

    Después de ejecutar la celda, el valor 315 aparece debajo. El número 2 aparece entre corchetes a la izquierda de la celda para indicar que es la segunda celda ejecutada.

  7. En la parte superior del notebook, haga clic en el menú Insertar y a continuación en Insertar celda debajo.

    Insertar celda debajo

    En el notebook se creará una nueva celda debajo de la celda actualmente seleccionada.

  8. Cuando se solicite, introduzca la siguiente línea de código:

    a * b * c

    ¿Cuál cree que será el resultado de ejecutar la celda?

  9. Ejecute la celda y mire el resultado.

    ¿El resultado era el que esperaba?

    Una vez asignados, los valores de las variables a, b y c quedan almacenados en la memoria, de modo que puede utilizar las variables en otra celda.

    A por b por c

    Al ejecutar la celda se imprime el resultado de multiplicar los valores almacenados en a, b y c.

    La sentencia de impresión no es necesaria porque en un notebook, en la ventana de Python y en el intérprete de Python, Python imprime el valor de sentencia de las expresiones simples tras evaluarlas.

  10. Si ejecutó la celda pulsando Ctrl+Intro, inserte una nueva celda debajo de ella.

    Si ejecutó la celda pulsando el botón Ejecutar, ya debería haber una nueva celda debajo de ella.

  11. Cuando se solicite, introduzca la siguiente línea de código:
    a * t

    ¿Cuál cree que será el resultado de ejecutar la celda?

  12. Ejecute la celda y mire el resultado.

    ¿El resultado era el que esperaba?

    A la variable a se le ha asignado el valor numérico 5, pero a la nueva variable t aún no se le ha asignado un valor. Esto genera un error. En Python, no se pueden utilizar variables sin haberles asignado antes un valor.

    El error indica que el nombre t no está definido.

  13. Edite el código en la celda del siguiente modo:

    a * "t"

    ¿Cuál cree que será el resultado de ejecutar la celda?

  14. Ejecute la celda y mire el resultado.

    ¿El resultado era el que esperaba?

    Resultado de a multiplicado por la cadena de caracteres t

    Al colocar t entre comillas, está indicando a Python que lo trate como una cadena de caracteres. Python evalúa la expresión como cinco veces la cadena de caracteres t, lo que da como resultado el nuevo valor de cadena de caracteres 'ttttt'.

  15. Agregue una nueva celda e introduzca el siguiente código:

    t = 10
    a * t

    ¿Cuál cree que será el resultado de ejecutar la celda?

  16. Ejecute la celda.

    ¿El resultado era el que esperaba?

    Asignar valor a t y multiplicar a por t

    Dado que en la primera línea de la celda se definió la variable t como igual al número 10, Python pudo multiplicarla por el valor almacenado en la variable a.

Ha abierto un nuevo notebook en ArcGIS Pro y ha agregado y ejecutado algún código básico en Python. A continuación, usará las funciones del notebook para gestionar el código de las celdas.

Administrar código en celdas

El código de Notebooks se ejecuta en celdas. El orden en que se ejecutaron las celdas se indica mediante los números situados junto a las celdas una vez ejecutadas. Notebooks tienen herramientas para administrar celdas. Ahora explorará estos aspectos del trabajo con Python en un notebook.

  1. En la siguiente celda vacía (agregue una nueva, si lo necesita), escriba la siguiente línea de código y ejecute la celda.

    mylist = [1, 2, 3, 4, 5]

    ¿Qué ha pasado?

    Este código definió una nueva variable y estableció su valor, pero no imprimió nada.

    Se define la variable mylist.

    La variable mylist es una lista, como indican los corchetes. Las listas son un tipo de datos importante en Python que constan de una secuencia de elementos. En este caso, esos elementos son números, pero las listas también pueden contener otros tipos de datos. Los elementos de una lista están separados por comas.

  2. En la siguiente celda vacía, escriba el siguiente código y ejecute la celda.

    mylist[-1]

    ¿Qué ha pasado?

    Variable mylist en la posición de índice -1

    Los elementos de una lista están indexados, empezando por el número de índice cero. Puede acceder a elementos específicos de una lista utilizando su número de índice. El número de índice -1 hace referencia al primer elemento comenzando desde el final de la lista, es decir, el último elemento de la lista. Da como resultado el número 5.

    Como ha visto, las indicaciones de entrada y salida de la celda muestran un número tras ejecutar la celda. Este número comienza en 1 y se incrementa para las celdas adicionales. El número se incrementa cada vez que ejecute una celda, incluso cuando ejecute de nuevo una celda ya ejecutada. Estos números ayudan a realizar un seguimiento del orden en el que se ejecutaron las celdas.

  3. Cambie el código en la celda que define la variable mylist por lo siguiente agregando más elementos, pero no ejecute la celda.

    mylist = [1, 2, 3, 4, 5, 6, 7, 8]

    Código para redefinir mylist aún no ejecutado.

  4. Haga clic en la celda debajo de esta, con el código mylist[-1], y haga clic en el botón Ejecutar.

    ¿Sucedió lo que esperaba?

    Ejecute de nuevo el código que devuelve el último elemento.

    El resultado es el número 5. ¿Por qué no es el número 8?

    El código de un notebook se introduce celda por celda, y cualquier variable utilizada previamente se almacena en la memoria.

    Hasta que ejecute la celda con el código que redefina la variable mylist, el valor de mylist sigue siendo el valor almacenado en la memoria, [1, 2, 3, 4, 5], y el valor en la posición -1 en esa lista sigue siendo 5.

  5. Haga clic en la celda con mylist = [1, 2, 3, 4, 5, 6, 7, 8] y ejecútela.
  6. Haga clic en la celda con mylist[-1] y ejecútela.

    Ahora, el valor en la última posición de la lista es 8.

    Actualización la variable de lista e impresión del valor en la última posición.

    Una alternativa a la ejecución de celdas individuales es seleccionar varias celdas y ejecutarlas juntas, o ejecutar todas las celdas de un notebook haciendo clic en el menú Celda y a continuación en Ejecutar todas.

    Es una buena práctica colocar líneas de código relacionadas en una misma celda. Por ejemplo, tendría sentido que las dos celdas anteriores se combinaran en una sola celda. Puede copiar y pegar manualmente el código de una celda a otra, pero también puede combinar celdas.

  7. Haga clic en la celda que define la variable mylist.

    Esa celda tiene mylist = [1, 2, 3, 4, 5, 6, 7, 8] en ella.

  8. Haga clic en el menú Editar y a continuación en Combinar con celda siguiente.

    Combinar con celda siguiente

    El resultado es una sola celda con las líneas de código combinadas. Los resultados debajo de las celdas se han eliminado. Se agrega una línea vacía entre las líneas de código de las dos celdas combinadas, pero puede editar la celda para eliminarla si lo desea.

  9. Ejecute la celda combinada.

    Ejecute la celda combinada.

    El menú Editar proporciona muchas otras formas útiles de manipular las celdas de su notebook. Puede copiar y pegar celdas, eliminarlas, dividirlas y combinarlas, y mover una celda seleccionada hacia arriba o hacia abajo en relación con las demás celdas.

    Dispone de herramientas adicionales en las opciones de menú Vista, Insertar y Celda.

    Algunas de las herramientas más utilizadas también están disponibles como botones en la barra de herramientas del notebook.

    Barra de herramientas del notebook

    Estas incluyen lo siguiente:

    • Insertar celda debajo
    • Cortar celdas seleccionadas
    • Copiar celdas seleccionadas
    • Pegar celdas debajo
    • Mover valores seleccionados arriba
    • Mover valores seleccionados abajo

    Encontrará más herramientas en la Paleta de comandos.

  10. Haga clic en el botón Paleta de comandos.

    Haga clic en el botón Paleta de comandos.

    Aparece una lista de comandos.

    Puede ejecutar un comando haciendo clic en él. El comando se aplica a las celdas seleccionadas en el notebook o a todas las celdas, dependiendo del comando.

  11. En la Paleta de comandos, haga clic en Borrar la salida de todas las celdas.

    Haga clic en Borrar la salida de todas las celdas.

    El código no se altera, pero los datos de salida se borran. Las indicaciones de entrada y salida están en blanco, dado que no se ha ejecutado ninguna celda. Al ejecutar una celda, las indicaciones empiezan de nuevo en 1.

    La Paleta de comandos contiene también accesos directos para muchas de las tareas.

  12. Haga clic en el botón Paleta de comandos y desplácese hacia abajo para insertar celda debajo.

    Paleta de comandos Insertar celda debajo

    El acceso directo del teclado para este comando aparece a la derecha del mismo. El acceso directo es la letra B cuando la celda del notebook está en modo de comando.

  13. Oculte la Paleta de comandos haciendo clic fuera de la paleta, pero dentro del notebook.
  14. Haga clic en el espacio a la izquierda de la segunda celda para que cambie a azul.

    Haga clic a la izquierda de la celda para seleccionar en el modo de comando.

    Asegúrese de no hacer clic dentro de la sección de código, lo que haría que la celda se tiñese de verde.

    El borde de la celda es azul para indicar que está en modo de comando.

  15. Presione la tecla B del teclado.

    Se agrega una nueva celda debajo de la celda seleccionada.

    Se inserta una nueva celda debajo de la primera. Si la celda tuviera color verde, habría agregado la letra b al código en la celda.

    Estos accesos directos no distinguen entre mayúsculas y minúsculas, por lo que b y B son indistintos.

    No hay necesidad de memorizar estos comandos, pero los programadores experimentados memorizan y utilizan algunos de ellos para acelerar su trabajo. Para la mayoría de las tareas básicas, los botones y opciones de menú del notebook son una buena opción.

    Si desea conocer el comando para una tarea específica, utilice la barra de búsqueda de la parte superior de la Paleta de comandos.

  16. Abra la Paleta de comandos y escriba run en el cuadro Buscar.

    Busque la Paleta de comandos para ejecutarla.

    Esto reduce la lista a las herramientas cuyo nombre contiene ‘run’. Algunos comandos tienen un acceso directo. Por ejemplo, el acceso directo para ejecutar las celdas seleccionadas es Ctrl +Intro.

  17. Oculte la Paleta de comandos haciendo clic fuera de la paleta, pero dentro del notebook.
  18. Cierre el notebook.

    Cierre el notebook.

Ha visto cómo introducir y editar el código en Python en las celdas del notebook y cómo interactuar con el notebook para ejecutar y administrar el código. A continuación, utilizará un notebook para ejecutar herramientas de geoprocesamiento en ArcGIS Pro.

Ejecutar herramientas de geoprocesamiento en un notebook

Ahora que ya ha practicado la introducción de código en un notebook, ha llegado el momento de utilizar algunas herramientas de geoprocesamiento. Empezará con un nuevo notebook.

  1. En la pestaña Análisis, en el grupo Geoprocesamiento, haga clic en Python.
    Haga clic en Análisis y, a continuación, haga clic en Python.

    Se abre el nuevo notebook.

  2. En el panel Catálogo, expanda la sección Notebooks.
  3. Haga clic con el botón derecho en el nuevo notebook, New notebook (1).ipynb, y haga clic en Cambiar nombre.

    Cambie el nombre del notebook.

  4. Escriba geoprocessing_demo y pulse Intro.

    El nuevo notebook cambia de nombre. En el panel Catálogo, puede ver que la extensión de archivo .ipynb se agregó automáticamente al nombre. En la pestaña del notebook ahora se lee geoprocessing_demo.

    Para los siguientes pasos, resulta útil ver el mapa y el notebook en paralelo.

  5. Arrastre la pestaña del notebook Geoprocessing_demo hasta el destino de acoplamiento que aparece a continuación.

    Acople la pestaña del notebook debajo del mapa.

    El notebook está acoplado debajo del mapa. Ahora podrá ver los resultados de su código al utilizar Python en el notebook para trabajar con las clases de entidad en el mapa.

  6. En la celda vacía, escriba la siguiente línea de código y ejecute la celda:

    import arcpy

    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.

    Dado que está utilizando este notebook en ArcGIS Pro, el código que utiliza herramientas de geoprocesamiento no generará ningún error si no ha importado ArcPy. Sin embargo, se recomienda incluir siempre import arcpy en la parte superior del código de geoprocesamiento para que también funcione cuando se ejecute fuera de ArcGIS Pro.

  7. En la misma celda, agregue una nueva línea y escriba el siguiente código:

    arcpy.GetCount_management("fire_stations")

    Este código utiliza ArcPy para ejecutar la herramienta Obtener recuento con el fin de determinar el número de entidades en la clase de entidad fire_stations.

  8. Ejecute la celda.

    Herramienta Obtener contador ejecutada en el notebook

    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.

    El resultado aparece debajo de la celda de código. Hay 84 filas (entidades) en la clase de entidad. Estos resultados son muy similares a los mensajes que ve después de ejecutar una herramienta con el cuadro de diálogo de la herramienta en ArcGIS Pro. Notebooks se integran en el marco de geoprocesamiento de ArcGIS Pro. Significa que ejecutar una herramienta en un notebook es similar a ejecutar una herramienta mediante el cuadro de diálogo de la herramienta. Cualquier herramienta que ejecute en un notebook aparecerá también en el panel Historial.

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

    La herramienta aparece en el historial de geoprocesamiento.

    La herramienta aparece en el historial de geoprocesamiento.

  10. Cierre el panel Historial.
  11. Cambie la línea de código arcpy.GetCount por lo siguiente:

    arcpy.GetCount_management("ambulances")

  12. Ejecute la celda.

    Este código da como resultado un mensaje de error. Al final del mensaje aparece la siguiente información:

    ExecuteError: Failed to execute. Parameters are not valid.
    ERROR 000732: Input Rows: Dataset ambulances does not exist or is not supported
    Failed to execute (GetCount).

    ¿Por qué falla el código, si el código para obtener el número de parques de bomberos funcionaba?

    La clase de entidad fire_stations es una capa del mapa activo. En un notebook, puede hacer referencia a un dataset por el nombre de la capa en el mapa activo, igual que cuando ejecuta una herramienta de geoprocesamiento de forma interactiva utilizando su interfaz gráfica de usuario.

    La clase de entidad ambulances no está presente como capa en el mapa activo y tampoco es una clase de entidad en la geodatabase predeterminada para el proyecto. Puede hacer referencia a una clase de entidad que no esté en el mapa activo o geodatabase predeterminada especificando su ruta completa.

    A continuación, buscará la ruta a la clase de entidad ambulances.

  13. En el panel Catálogo, expanda la sección Bases de datos y a continuación Toronto.gdb.
  14. Haga clic con el botón derecho en ambulances y haga clic en Copiar ruta.

    Copiar ruta

    Se copia la ruta del archivo de la clase de entidad de ambulancias. Esta ruta también incluye el nombre de la clase de entidad.

    La ruta de este ejemplo es la siguiente:

    C:\Tutorials\NotebookStart\Toronto.gdb\ambulances

    La ruta en su equipo será diferente, dependiendo de dónde y cómo haya descomprimido el archivo .zip con los datos. Es posible que no haya colocado los datos en una carpeta de la unidad C, o dentro de una carpeta llamada Tutorials, por ejemplo. En el paso siguiente deberá utilizar la ruta de acceso en su equipo.

  15. Haga clic en la celda del notebook y resalte ambulances. Pegue la ruta que ha copiado.
    arcpy.GetCount_management("C:\Tutorials\NotebookStart\Toronto.gdb\ambulances")

    La celda está casi lista para ejecutarse. La ruta parece correcta, pero no lo es. Falta algo.

  16. Haga clic inmediatamente después de los paréntesis de apertura y antes de la primera comilla, y escriba la letra r.
    arcpy.GetCount_management(r"C:\Tutorials\NotebookStart\Toronto.gdb\ambulances")

    Debe agregar la letra r para indicar a Python que esta ruta es una cadena de caracteres sin procesar. Los equipos con Windows utilizan el carácter de barra invertida como separador de ruta. En Python, el carácter de barra invertida es un carácter de escape que, cuando está junto a otros caracteres de una cadena de caracteres, codifica el tabulador, el salto de línea u otros caracteres especiales. Significa que cuando \N está junto a \NotebookStart en la ruta, Python lo interpreta como un carácter de salto de línea. Al colocar la r delante de la cadena de caracteres, se indica a Python que ignore los caracteres de escape.

  17. Ejecute la celda.

    La herramienta Obtener contador se ejecuta y devuelve un mensaje que indica que hay 48 entidades en la clase de entidad.

    También puede utilizar el carácter de barra diagonal (/) como separador de ruta en el código de Python, o puede duplicar los caracteres de barra invertida.

    A continuación, se muestran formas válidas de escribir esta ruta en Python:

    r"C:\Tutorials\NotebookStart\Toronto.gdb\ambulances"
    "C:/Tutorials/NotebookStart/Toronto.gdb/ambulances"
    "C:\\Tutorials\\NotebookStart\\Toronto.gdb\\ambulances"

    Si utiliza una barra diagonal (/) o doble barra invertida (\\) como separador de ruta, no debe agregar la r antes de la cadena de ruta.

    Para alguien que está habituado a las rutas de Windows delimitadas por barras invertidas, esto puede parecer algo extraño al principio, pero es importante recordarlo.

    Una manera de evitar tener que especificar las rutas completas para las herramientas es establecer el espacio de trabajo.

  18. Edite el código para agregar un salto de línea entre las dos líneas que comienzan por import arcpy y arcpy.GetCount. Agregue la siguiente línea:
    arcpy.env.workspace =

    Agregue un inicio de línea para definir el espacio de trabajo.

    Esta línea establece que una propiedad de la clase de entorno, arcpy.env, sea igual a algún valor. A continuación, corte la ruta hasta Toronto.gdb y péguela después de este código para definir la ruta.

  19. Corte la ruta a la geodatabase, incluida la extensión .gdb, de la línea que contiene arcpy.GetCount, y péguela después del signo igual.
    arcpy.env.workspace = r"C:\Tutorials\NotebookStart\Toronto.gdb

    Línea de configuración del entorno prácticamente completada

    Recuerde que su ruta puede ser diferente a la que se muestra aquí. Utilice la ruta de acceso correspondiente a su equipo.

    Aún hay algunas cosas que hay que cambiar. ¿Las puede identificar?

    Si ejecuta el código ahora, obtendrá un error de sintaxis como este:

    Error de sintaxis de EOL

    EOL significa final de la línea, y el mensaje significa que Python llegó al final de la línea de código al procesar la cadena de caracteres en la línea 2. A la cadena de caracteres de la ruta le falta la comilla de cierre.

  20. Agregue una comilla para cerrar la cadena de caracteres.

    La línea debería tener este aspecto:

    arcpy.env.workspace = r"C:\Tutorials\NotebookStart\Toronto.gdb"

    Cadena de caracteres cerrada

    La segunda línea está ahora completa y correcta. ¿Ve si hay otras cosas que haya que cambiar?

  21. Cambie el carácter de barra diagonal inversa antes de ambulances por una comilla.

    Código listo para ejecutarse ahora que ‘ambulances’ es una cadena de caracteres.

    El código está listo para ejecutarse.

  22. Ejecute la celda.

    Se debería ejecutar correctamente e informar del número de entidades de la clase de entidad ambulances.

    Hay nueve clases de entidad en la geodatabase Toronto. Ahora puede obtener recuentos de cualquiera de ellas.

  23. Inserte una nueva celda en el notebook, copie y pegue la línea GetCount en una nueva celda, cambie el nombre a bikeways y, a continuación, ejecute la celda.
    arcpy.GetCount_management("bikeways")

    Obtenga el número de carriles bici.

    Es posible que desee conocer el recuento de cada clase de entidad en la geodatabase. Puede copiar la celda y editar el nombre de la clase de entidad, pero Python le permite obtener una lista de todas las clases de entidad y, a continuación, ejecutar la función GetCount sobre ellas.

  24. Inserte una nueva celda en el notebook y agregue el siguiente código:
    # List the feature classes in a workspace
    # works on the current workspace or a path
    fc_list = arcpy.ListFeatureClasses()
    # Print the list
    print(fc_list)
    
    # use a loop to set the variable fc to be
    # equal to each feature class name in the list
    for fc in fc_list:
        # Run Get Count on the current fc from the list
        # Set the variable count equal to the result of Get Count
        count = arcpy.GetCount_management(fc)
        # Print out the name of the feature class and the count
        print(fc, count)

    Código para enumerar las clases de entidad del espacio de trabajo y contar sus entidades

    Este código incluye comentarios para explicar lo que hace cada paso. Los comentarios son texto que aparece después de los signos #. Las líneas que son comentarios no se ejecutan; están ahí para ayudarle a entender lo que hace el código.

    Anteriormente utilizó una lista y una indexación de lista. Este código crea una nueva variable llamada fc_list y le asigna el resultado de ejecutar arcpy.ListFeatureClasse sobre el espacio de trabajo actual, Toronto.gdb. La lista anterior contenía enteros. Esta vez la lista contiene cadenas de caracteres que representan los nombres de las clases de entidad.

    A continuación, el código imprime esa lista. Imprimir la lista no es necesario, pero es una buena forma de asegurarse de que la variable contiene los resultados esperados. Si algo sale mal, es útil saber qué hay en esa variable.

    La parte siguiente del código utiliza un bucle ‘for’. Los bucles ‘for’ toman un conjunto de entradas y un bloque de código en sangrado que se ejecuta para cada una de las entradas.

    En este caso, las entradas son los nombres de la lista; la variable fc toma como valor un nombre en cada iteración del bucle, y el código del bloque indentado se ejecuta con dicho valor.

    El bloque de código crea una variable denominada count y le asigna el resultado de ejecutar GetCount tomando como parámetro el elemento actual de la lista.

    El bloque de código imprime a continuación el nombre de la clase de entidad (el contenido de la variable fc) y el recuento (el contenido de la variable count).

    El código, sin los comentarios, ocupa solo unas pocas líneas.

    
    fc_list = arcpy.ListFeatureClasses()
    print(fc_list)
    for fc in fc_list:
        count = arcpy.GetCount_management(fc)
        print(fc, count)

  25. Ejecute la celda.

    Los resultados muestran la lista de clases de entidad en la geodatabase y el número de entidades que contienen.

    Resultados de ejecutar el código

Ejecutar un análisis con un notebook

A continuación, realizará algún trabajo de análisis SIG con el notebook. Supongamos que desea saber qué áreas del distrito administrativo de Etobicoke están más alejadas de los parques de bomberos. Puede utilizar herramientas de geoprocesamiento en un notebook para identificar estas áreas.

  1. Agregue una nueva celda debajo de la actual.
  2. Coloque el cursor dentro de la celda y empiece a escribir lo siguiente:

    arcpy.

  3. Pulse la tecla Tabulador.

    Pulse la tecla Tab para ver las opciones.

    Aparece una lista de todas las opciones de ArcPy disponibles.

    Puede desplazarse hacia abajo y hacer clic en un elemento para seleccionarlo de esta lista, o bien puede seguir escribiendo.

  4. Escriba una B mayúscula.

    La lista se reduce a las opciones que empiezan por B.

  5. Haga clic en Buffer_Analysis.

    En la celda ahora pone arcpy.Buffer_analysis.

    Este proceso de empezar a escribir un código y luego presionar la tecla Tabulador para ver y elegir entre las opciones de geocodificación se denomina completado por tabulador, y le puede ayudar a buscar y acceder más rápidamente a los comandos que necesita.

  6. Sitúe el cursor al final de la línea del código y pulse Mayús.+Tab.

    Firma de Buffer_Analysis

    Aparece una ventana con las sugerencias de sintaxis para la herramienta Buffer_analysis. Puede hacer clic en el botón de flecha para expandirlo y leer todo el tema.

  7. Haga clic en el botón Cerrar para cerrar la ventana Firma.
  8. Teclee un paréntesis de apertura.

    Buffer_Analysis con paréntesis.

    También se agrega un paréntesis de cierre y el cursor se coloca entre ellos. Aquí es donde puede agregar parámetros para la herramienta Buffer_analysis.

  9. Escriba una comilla.

    Buffer_Analysis con comillas.

    La comilla de cierre se agrega automáticamente. En Python, las cadenas de caracteres deben estar entre comillas, de modo que la comilla de cierre se agrega automáticamente, con el cursor entre ellas.

    La herramienta Buffer_analysis requiere tres parámetros: la clase de entidad de entrada, la clase de entidad de salida y el radio de la zona de influencia. Existen otros parámetros opcionales, pero estos son los únicos que son necesarios.

    Creará una zona de influencia para la clase de entidad fire_stations, asignará el nombre fire_buffer a la clase de entidad de salida y hará que la herramienta cree una zona de influencia de 1000 metros alrededor de los parques de bomberos.

  10. Complete la línea de código de la siguiente manera:
    arcpy.Buffer_analysis("fire_stations", "fire_buffer", "1000 METERS")

    Zona de influencia de 1000 metros de radio.

    Todos los parámetros de la herramienta son opcionales. La herramienta puede localizar la clase de entidad fire_stations utilizando solo su nombre porque es una capa del mapa y porque ya ha establecido el espacio de trabajo como Toronto.gdb. La herramienta puede escribir una clase de entidad de salida utilizando solo el nombre "fire_buffer" porque el espacio de trabajo está establecido. La herramienta tiene lógica integrada para detectar el valor del radio de la zona de influencia y las unidades de medida en la cadena de caracteres "1000 METERS".

  11. Ejecute la herramienta.

    Zonas de influencia de 1000 metros en el mapa

    Las entidades de salida se agregan al mapa.

    Los resultados muestran qué áreas quedan a menos de 1000 metros, o 1 kilómetro, de un parque de bomberos, y qué áreas no. Tener abiertos simultáneamente el notebook y el mapa facilita la visualización de los resultados de las distintas opciones.

  12. Cambie el radio de la zona de influencia a 1750 metros y vuelva a ejecutar la celda.
    arcpy.Buffer_analysis("fire_stations", "fire_buffer", "1750 METERS")

    Zonas de influencia de 1750 metros en el mapa

    Nota:

    Si recibe un mensaje de error, "ExecuteError: Error al ejecutar. Los parámetros no son válidos", que menciona que fire_buffer ya existe, entonces la configuración del entorno ArcGIS Pro, las opciones de geoprocesamiento, no se establecen para permitir que las clases de entidad existentes se sobrescriban. Para solucionar este problema, inserte una nueva línea en la celda antes de la línea arcpy.Buffer_analysis. En la nueva línea, agregue el siguiente código:

    arcpy.env.overwriteOutput = True

    Así, la herramienta Zona de influencia podrá sobrescribir la salida anterior. La celda debe contener ahora:

    arcpy.env.overwriteOutput = True
    arcpy.Buffer_analysis("fire_stations", "fire_buffer", "1750 METERS")

    Ejecute la celda.

    Las áreas fuera de estas zonas de influencia están más alejadas de los parques de bomberos, lo que puede aumentar el tiempo que un camión de bomberos tarda en responder a una llamada. Para buscar las áreas que se ven afectadas, en lugar de las que no lo están, utilizará la herramienta Borrar para borrar las áreas dentro de las zonas de influencia del distrito administrativo Etobicoke.

  13. Agregue otra celda e introduzca el siguiente código:
    arcpy.PairwiseErase_analysis("etobicoke", "fire_buffer", "no_service")

    Así, se llama a la herramienta PairwiseErase_analysis en la clase de entidad etobicoke, lo que borra las áreas dentro de la clase de entidad fire_buffer y escribe los resultados en una nueva clase de entidad llamada "no_service".

    Borrar por pares es una versión alternativa de la herramienta Borrar que utiliza un conjunto diferente de bibliotecas y que gestiona las relaciones topológicas de los vértices de manera diferente que Borrar. Si hay alguna duda en cuanto a la calidad de los datasets de entrada, antes de ejecutar Borrar por pares debe ejecutar Integrar por pares sobre sus datos. En este ejemplo sencillo esto no es necesario.

  14. Ejecute la celda.
  15. En el panel Contenido, desmarque las capas fire_buffer, greenspace, etobicoke y boundary.
  16. Haga clic con el botón derecho en la capa no_service y a continuación haga clic en Zoom a capa.

    La capa no_service muestra los lugares más alejados de los parques de bomberos.

    La capa no_service muestra los lugares más alejados de los parques de bomberos.

  17. Haga clic en la celda arcpy.PairwiseErase_analysis y, en el panel Notebook, haga clic en el menú Editar y a continuación en Combinar con celda anterior.

    Combinar la celda actual con la celda anterior.

    Las celdas se combinan.

    Las celdas se combinan.

    Una ventaja de los Notebooks y el código de Python en general es que puede ejecutar rápidamente una secuencia de herramientas. En este caso, la secuencia solo consta de dos herramientas, pero ilustra el concepto.

  18. Cambie el valor del radio de 1750 a 2500 y ejecute la celda.

    Cambie el radio y vuelva a ejecutar.

  19. Desactive la nueva capa fire_buffer para ver la nueva capa no_service.

    Es posible que deba acercarse a la capa para ver las áreas más pequeñas restantes.

    Las áreas resultantes son potencialmente las más comprometidas con respecto al servicio de bomberos. Se podía obtener este resultado actualizado ejecutando las distintas líneas de código como una única celda en el notebook. Si hubiera utilizado las herramientas de sus interfaces gráficas de usuario, hubiera tenido que ejecutar de nuevo la herramienta Zona de influencia y la herramienta Borrar por pares para obtener el resultado actualizado.

    El ahorro de tiempo con solo dos herramientas es menor, pero muchos flujos de trabajo contienen secuencias de herramientas más largas. Además, la capacidad de ejecutar una o varias herramientas en un bucle hace que Python sea útil cuando es necesario ejecutar el mismo proceso en varias entradas.

  20. Guarde el proyecto.

El código en Python se ejecuta dentro y fuera de los Notebooks

Ha aprendido a crear un notebook y a escribir y ejecutar código en Python en un notebook. El uso de Notebooks ofrece varias ventajas, y no todas ellas se han visto en este tutorial:

  • Los Notebooks son una forma rápida de comenzar a escribir código en Python y no requieren la instalación ni configuración de un editor de Python.
  • Puede interactuar con datos y mapas directamente en ArcGIS Pro. Esto le permite ver rápidamente los resultados de la ejecución del código.
  • Los Notebooks se integran en el marco de geoprocesamiento de ArcGIS Pro. Esto hace que la experiencia de ejecución de herramientas sea similar a la ejecución de herramientas con su cuadro de diálogo. Los resultados se agregan al mapa activo, y las herramientas ejecutadas aparecen en el historial de geoprocesamiento.
  • Los Notebooks de ArcGIS Pro incluyen varias características de finalización de código para facilitar la escritura del código correcto.
  • Los Notebooks también se pueden ejecutar fuera de ArcGIS Pro, incluidos algunos editores de Python y Jupyter Notebook.
  • Los Notebooks incluyen herramientas de visualización integradas (por ejemplo, widgets de mapas y otros).
  • Todo el contenido se guarda como un archivo .ipynb, que se puede compartir con otros usuarios.
  • Notebooks se puede alojar en ArcGIS Enterprise o ArcGIS Online. De esta forma, es posible poner un archivo .ipynb a disposición de otras personas de su organización.

Ejecutar código de Python en un Notebooks también tiene algunos posibles inconvenientes:

  • Los Notebooks carecen de algunas características existentes en otros IDE de Python, como la comprobación de sintaxis, la depuración y otras.
  • La ayuda de finalización de código requiere accesos directos del teclado y no es tan intuitiva ni tan completa como en otros editores de Python.
  • No todas las funciones de Jupyter Notebook funcionan en ArcGIS Pro (pero se sigue mejorando).

Existen otras varias formas de ejecutar código de Python, como ejecutar código en un Notebooks, ejecutar un script mediante 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 código en Python en un notebook en ArcGIS Pro. Aprendió qué son las variables y los 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. Próximamente habrá más lecciones.

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.