Configuración

Primero, configurará un mapa web en Visor de mapas y agregará una nueva expresión de Arcade. Empezará con un mapa web preexistente que ya contenga algunas capas de datos y expresiones de Arcade. Copiará ese mapa en su cuenta de ArcGIS Online para empezar a editarlo y agregarle nuevos elementos.

  1. Abra el mapa web Global Power Generation and Consumption (Generación y consumo de energía globales) en su navegador web.

    El mapa aparece en Visor de mapas con el panel Leyenda abierto.

    Vista inicial

    El panel Leyenda enumera dos capas:

    • Global Power Plants, que contiene un inventario completo de centrales eléctricas de todo el mundo.
    • World Countries Electricity Consumption, que contiene información de población y consumo eléctrico de todos los países del mundo.
    Nota:

    Si ya completó el tutorial Introducción a ArcGIS Arcade, puede usar el mapa resultante de ese tutorial en su lugar.

  2. Haga clic en el botón Iniciar sesión.

    Botón Iniciar sesión

  3. Inicie sesión en su cuenta de la organización de ArcGIS.
    Nota:

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

  4. En la barra de herramientas Contenido (oscura), haga clic en Guardar y abrir y seleccione Guardar como.

    Botón Guardar como

  5. En la ventana Guardar mapa, en Título, agregue sus iniciales al final del título para asegurarse de que sea único en su organización y luego haga clic en Guardar.

    Ventana Guardar mapa

    Aparece la copia del mapa, que ahora está lista para su edición. A continuación, agregará una nueva Arcade expresión de al mapa, para utilizarla en los elementos emergentes de la capa Global Power Plants.

    Nota:

    ArcGIS Arcade es un lenguaje de expresión portátil, ligero y seguro escrito para trabajar de forma dinámica con sus datos en ArcGIS. Al igual que otros lenguajes de programación, es capaz de realizar operaciones matemáticas, manipular texto y evaluar sentencias lógicas. Permite a los usuarios manipular datos existentes y obtener nuevas perspectivas mediante la creación, el uso compartido y la ejecución de expresiones personalizadas en ArcGIS Pro, ArcGIS Runtime, ArcGIS Online, ArcGIS Enterprise y ArcGIS API for JavaScript. En Visor de mapas, Arcade resulta útil al trabajar con datos en ventanas emergentes y etiquetas, y al aplicar estilos a una capa. Para ver más tutoriales en Arcade, consulte esta ruta de aprendizaje de Arcade.

  6. En la barra de herramientas Contenido, haga clic en Capas.

    Botón Capas

    Nota:

    De forma predeterminada, las barras de herramientas laterales solo pueden mostrar el icono de la herramienta en lugar de su nombre. Puede hacer clic en el botón de expandir situado en la parte inferior de cada barra de herramientas para ver los nombres. Las imágenes del tutorial son de las barras de herramientas expandidas.

    Se muestra el panel Capas.

  7. En el panel Capas, haga clic en la capa Global Power Plants para seleccionarla.

    Capa Global Power Plants

  8. En la barra de herramientas Configuración (clara), haga clic en Elementos emergentes.

    Botón Configurar elementos emergentes

    Se abre el panel Elementos emergentes y una vista previa de un elemento emergente.

    Ejemplo de elemento emergente

    Es el elemento emergente para la central eléctrica de SMN Barka de Arabia Saudí. Ya contiene alguna información relevante sobre esta central eléctrica en concreto. La expresión Arcade que creará en este tutorial agregará un párrafo más de texto en el elemento emergente.

  9. Cierre la ventana emergente.
    Nota:

    Como alternativa, puede abrir el elemento emergente de cualquier central eléctrica del mapa. En el mapa, utilice el botón de rueda del ratón para acercarse a un área de interés, por ejemplo, Sevilla, España. A continuación, haga clic en uno de los puntos de la central eléctrica.

  10. En el panel Elementos emergentes, haga clic en Expresiones de atributos.

    Haga clic en Expresiones de atributos.

    Nota:

    Ya existen dos expresiones para el elemento emergente de la capa Global Power Plants. Estas expresiones se utilizan para determinar el color de texto para el tipo de energía y para calcular el número de bombillas de 60 vatios que puede alimentar la central eléctrica, ambas actualmente mostradas en el elemento emergente de las centrales eléctricas. Arcade le permite reutilizar todas o partes de estas expresiones existentes en sus nuevas expresiones. Esta es una de las cosas que aprenderá en este tutorial.

    Aparece el panel Expresiones de atributos.

  11. En el panel Expresiones de atributos, haga clic en Agregar expresión para abrir el editor de expresiones de Arcade.

    Botón Agregar expresión

    Aparece el editor de expresiones de Arcade. Aquí es donde creara y editará las expresiones de Arcade. Primero revisará sus componentes.

    • La ventana Expresión es donde se escribe el código.
    • En la pestaña Variables de perfil, se ofrece una lista de variables predefinidas, incluidos campos de atributos y geometría para las entidades de la capa.
    • En la pestaña Funciones, se muestra una lista de todas las funciones de Arcade. Puede hacer clic en el botón de información situado a la derecha de cada función para acceder a la ayuda integrada de la función sobre parámetros, sintaxis y uso.
    • La pestaña Sugerencias le permite acceder a los atributos y la geometría de las entidades de la capa a través de una lista de variables predefinidas. También permite acceder a entidades desde otras capas del mapa web, cosa que hará más adelante en este tutorial.
    • La pestaña Ayuda abre la página web de ayuda de Arcade.

    Descripción general del editor de expresiones de Arcade

    El editor de expresiones de Arcade también le permite probar la expresión a medida que la desarrolla utilizando el botón Ejecutar.

  12. Haga clic en Ejecutar.

    Botón Ejecutar

    Aparecen las pestañas Salida , Consola y Registro. Una vez que haya creado la expresión, puede utilizar el botón Ejecutar para probar la salida de la expresión. Por ahora, no ha escrito ningún código de Arcade, por lo que estas pestañas no contienen mucha información.

    Pestañas Salida, consola y Registro

    • La pestaña Salida mostrará la salida de la expresión.
    • También puede agregar funciones Console() al código y ver su valor en la pestaña Consola.

Iniciar variables

A continuación, empezará a escribir el código para su expresión de Arcade. Se organizará tres partes:

  • En primer lugar, iniciará (creará) varias variables para albergar valores que necesitará más adelante en la expresión de Arcade.
  • A continuación, creará un FeatureSet a partir de la capa World Countries Electricity Consumption para poder utilizar los atributos de esa capa en su expresión.
  • Por último, utilizará todos esos datos para obtener información nueva, calculando para cuántos ciudadanos puede proporcionar electricidad cada central.

En esta sección, se centrará en iniciar y probar las variables.

  1. En la ventana Expresión, escriba (o copie y pegue) var countryName =.

    Cree la variable countryName.

    Creará una primera variable, countryName, que contendrá el nombre del país en el que se encuentra la central eléctrica. En Arcade, utilice la sintaxis Var <variableName> = <someValue> para establecer variables para usarlas más tarde en la expresión. Especificará el valor de la variable recuperando el atributo correspondiente en la capa Global Power Plants.

  2. Si es necesario, haga clic en la pestaña Variables de perfil. Expanda el elemento $feature haciendo clic en la flecha.

    Expanda el elemento $feature.

    Aparece la lista de atributos de la capa Global Power Plants.

    Nota:

    Como ya se ha mencionado, esta expresión de Arcade se ejecutará cuando el usuario haga clic en una central eléctrica específica del mapa y se mostrará el elemento emergente informativo de esa entidad. El elemento $feature le da acceso a los datos de esa entidad de central eléctrica concreta de la capa Global Power Plants. Esto incluye todos sus atributos y su geometría.

    Esto difiere de $layer, que permite acceder a todas las entidades de la capa en lugar de a una sola entidad. Por ejemplo, puedes usar $layer para obtener el promedio de un valor de atributo en todas las entidades de una capa de entidades.

  3. En la lista de atributos, desplácese hacia abajo y haga clic en $feature.country_long.

    Haga clic en $feature["country_long"].

    Su primera línea de código está completa.

    Primera línea de código

    La expresión también necesitará variables que contengan el nombre de la central eléctrica y su generación de energía anual estimada. En lugar de crear estas dos variables desde cero, copiará el código existente desde una de las expresiones de Arcade preexistentes.

  4. Pulse Intro para iniciar la siguiente línea de la expresión.

    Agregue una línea return.

  5. Resalte las dos líneas de código siguientes y pulse Ctrl+C para copiarlas.

    var plantName = $feature.name

    var annualGenerationGwh = $feature["estimated_generation_gwh"]

    Nota:

    También puede copiar las líneas haciendo clic con el botón derecho en el texto resaltado y seleccionando Copiar.

  6. En la ventana Expresión, pulse Ctrl+V para pegar el código. Haga clic en la línea 3 y pulse la tecla Retroceso.

    Pegue las definiciones de variables.

    Nota:

    También puede pegar las líneas haciendo clic con el botón derecho en el punto de inserción y seleccionando Pegar.

    Ahora probará estas instrucciones de variables para asegurarse de que funcionan como deberían. Para ello, agregue una instrucción return al final del código, empezando por la primera variable.

  7. Haga clic al final de la línea 3, pulse Intro para iniciar la siguiente línea de código y escriba return countryName. Haga clic en Ejecutar.

    Agregue la línea return countryName.

    En la ventana Salida, aparece la salida final de la secuencia de comandos. Se trata del valor de la instrucción return y muestra Afganistán.

    Ventana Resultados mostrando Afganistán

    Esto se debe a que, para realizar pruebas, el editor de expresiones utiliza la primera entidad de la tabla de atributos. En este caso, la primera entidad es una central eléctrica de Afganistán. Ahora probará el valor de la segunda variable.

  8. En la ventana Expresión, edite la última línea de su secuencia de comandos para que ponga return plantName. Haga clic en Ejecutar.

    En la ventana Salida, aparece el valor Kajaki Hydroelectric Power Plant Afghanistan, que es el nombre de esa misma central eléctrica afgana predeterminada.

    Ventana Resultados mostrando Kajaki Hydroelectric Power Plant Afghanistan

    Ahora probará el valor de la tercera variable.

  9. En la ventana Expresión, vuelva a editar la línea para que ponga return annualGenerationGwh y haga clic en Ejecutar.

    En la ventana Salida, no se muestra ningún valor y el resultado es Nulo.

    Ventana Resultados mostrando un resultado nulo

    Esto se debe a que la central eléctrica predeterminada, Kajaki Hydroelectric Power Plant Afghanistan, no tiene datos de generación de energía anual estimada. En tal caso, puede especificar manualmente un valor diferente para fines de prueba.

  10. Sobre la línea return annualGenerationGwh, agregue la función annualGenerationGwh = 10 y haga clic en Ejecutar.

    Agregar una línea de código

    En la ventana Salida, se devuelve el valor 10 (gigavatios/hora o GWh). Utilizará este valor de prueba para las próximas secciones del tutorial.

  11. En la ventana Expresión, elimine la línea return annualGenerationGwh, ya que ya no la necesitará.

    Eliminar la instrucción Return

    Antes de seguir desarrollando la expresión, asígnele un nombre y guárdela. Es importante dar un nombre a cualquier expresión que cree para facilitar su identificación y uso en el mapa.

  12. En la parte superior de la ventana del editor, haga clic y resalte Nueva expresión y elimine el texto. Escriba Número de ciudadanos que la central eléctrica puede abastecer anualmente.

    Nuevo título para la expresión

  13. En la parte inferior de la ventana del editor, haga clic en Hecho para cerrar el editor de expresiones.

    La expresión aparece en el panel Expresiones de atributo.

    Lista de expresiones de atributos

  14. En la barra de herramientas Contenido, haga clic en Guardar y abrir y seleccione Guardar para guardar el mapa y la expresión de Arcade.

    Botón Guardar

    Nota:

    Se recomienda guardar la expresión de Arcade y el mapa con regularidad.

Obtener datos de una capa diferente

Para determinar el número de ciudadanos a los que una central eléctrica puede abastecer en el elemento emergente Global Power Plants, debe dividir la generación de energía anual estimada de la central eléctrica por el consumo de electricidad per cápita en el país donde se encuentra la central eléctrica.

Ya obtuvo el primer número de la sección anterior, y está almacenado en la variable annualGenerationGwh. El segundo número se puede obtener a partir de los atributos de población y consumo de electricidad total de la capa World Countries Electricity Consumption. Esto significa que tendrá que acceder a los atributos de World Countries Electricity Consumption en el elemento emergente Global Power Plants. Lo hará creando un FeatureSet.

Un FeatureSet le permite acceder a entidades desde cualquier capa del mapa o desde un servicio de entidades externo al mapa. A continuación, puede filtrar las entidades a las que se accede según criterios de relevancia. En su caso, accederá a las entidades de World Countries Electricity Consumption (es decir, la lista de todos los países del mundo con sus atributos) y buscará el país en el que se encuentra la central eléctrica actual. Por ejemplo, para la central hidroeléctrica de Kajaki, filtrará la lista hasta la única entidad de Afganistán. De esta forma, la entidad Global Power Plants se conectará a la entidad World Countries Electricity Consumption pertinente, debido a los valores de atributo de nombre de país coincidentes. Obtenga más información sobre los FeatureSets en la documentación de Arcade.

Nota:

Debido al tiempo de procesamiento de las consultas que devuelven una gran cantidad de datos, es posible que FeatureSets no funcione tan bien con datasets grandes.

Ahora creará el FeatureSet mediante el uso de FeatureSetByName.

Nota:

FeatureSetByName es una de las distintas opciones para crear un FeatureSet.

  1. En el panel Expresiones de atributos, haga clic en Número de ciudadanos que la central eléctrica puede abastecer anualmente para volver a abrir la expresión en el editor de expresiones de Arcade.

    Vuelva a abrir la expresión.

  2. En la ventana Expresión, en la siguiente línea vacía, escriba var countriesGenFset =.
  3. Haga clic en la pestaña Variables de perfil. Expanda el elemento $map haciendo clic en la flecha.

    Expanda $map.

    Aparece la lista de todas las capas contenidas en el mapa.

  4. En Capas, para World Countries Electricity Consumption, haga clic en la flecha.

    Expanda la capa World Countries Electricity Consumption.

  5. En World Countries Electricity Consumption, haga clic en FeatureSetByName($map, "World Countries Electricity Consumption").

    Haga clic en FeatureSetByName.

    La función FeatureSetbyName se agrega a la ventana Expresión. En la ventana Expresión, la instrucción tiene este aspecto:

    var countriesGenFset = FeatureSetByName($map, "World Countries Electricity Consumption")

    Defina la variable countriesGenFset.

    FeatureSetByName() utiliza el valor $map para su primer parámetro, que esencialmente indica que esta capa se busca en el mapa actual. El segundo parámetro es el nombre de la capa. Debe coincidir con el nombre de la capa en el panel Capas.

    Ahora agregará algunos argumentos opcionales a la función FeatureSetByName() para que su definición de FeatureSet sea más específica.

    Nota:

    Puede especificar qué atributos específicos le interesan para evitar cargar toda la tabla de atributos. Por ejemplo, en este tutorial, solo le interesan el nombre del país, el consumo total anual de electricidad y la población total. Solicitar solo los campos que necesita aumenta el rendimiento porque se deben enviar menos datos.

    También puede solicitar que se incluya la geometría en el FeatureSet, de modo que pueda obtener acceso a los polígonos de cada país. Esto se realiza con un booleano (un valor que es verdadero o falso). En este tutorial, no necesitará la geometría, por lo que cambiará el valor booleano a falso. No solicitar la geometría también mejora el rendimiento y, como regla general, la geometría solo se debe incluir cuando es necesaria en la expresión.

    Si estos parámetros se dejan en blanco, todos los atributos y la geometría se incluyen en el FeatureSet.

    A continuación, modificará la línea FeatureSetByName() para que el FeatureSet solo contenga los tres campos que necesita y no contenga la geometría.

    Nota:

    Dado que la instrucción es larga, se recomienda dividirla en varias líneas para mejorar la legibilidad. Debe agregar los saltos de línea entre argumentos (después de cada coma).

  6. Para la línea FeatureSetByName(), después de "World Countries Electricity Consumption", elimine el paréntesis final y escriba una coma. Copie y pegue el siguiente texto:

    ['COUNTRY', 'Annual_Electricity_Consumption_', 'POP'], false)

    Agregue parámetros a FeatureSetByName().

    Agregará una instrucción return para probar e inspeccionar el FeatureSet.

  7. En la ventana Expresión, en la siguiente línea vacía, escriba return countriesGenFset.

    Escriba return countriesGenFset.

  8. Haga clic en Ejecutar.

    En la ventana Salida, se devuelve el FeatureSet. Se trata de un conjunto de todas las entidades de la capa World Countries Electricity Consumption, con solo los atributos que solicitó.

    Resultados mostrando la tabla FeatureSet

    Ahora utilizará la función Filtrar() para filtrar las filas de FeatureSet utilizando el valor almacenado en la variable countryName. Filtrar() usa dos parámetros: la capa o FeatureSet que se va a filtrar y la expresión SQL que realiza el filtrado.

  9. En la ventana Expresión, encima de la instrucción return countriesGenFset, pulse Intro para agregar una nueva línea y escriba var filteredCountryFSet =.
  10. Haga clic en la pestaña Funciones y, en el cuadro de búsqueda, escriba Filter. En los resultados de búsqueda, haga clic en Filter(features, sqlExpression) para agregarlo a su instrucción.

    Función Filtrar

    Filter() se agrega al editor de expresiones con dos marcadores de posición de argumento, features y sqlExpression.

    La función Filter() se agrega a la expresión.

    Nota:

    En la pestaña Funciones, puede obtener más información sobre cualquier función haciendo clic en el botón de flecha situado junto al nombre de la función.

    Haga clic en la flecha para obtener más información sobre una función.

  11. Edite los marcadores de posición de argumento Filtrar() para formar la siguiente instrucción:

    var filteredCountryFSet = Filter(countriesGenFset, 'COUNTRY = @countryName')

    La @ en @countryName significa que countryName es una variable definida anteriormente en la expresión. Esta expresión de SQL examina todas las filas del FeatureSet y conserva solo aquellas en que el atributo COUNTRY tiene el mismo valor que la variable CountryName (por ejemplo, Afganistán). La variable filteredCountryFSet solo contendrá las filas de FeatureSet que pasen la prueba.

  12. Modifique la instrucción return para que ponga return filteredCountryFSet y haga clic en Ejecutar.

    Escriba return filteredCountryFSet.

    En la ventana Salida, ahora la ventana solo contiene la fila de Afganistán.

    Ventana Resultados mostrando una sola fila para Afganistán

    Nota:

    Existen otras formas de filtrar las entidades en un FeatureSet. Si un FeatureSet incluye la geometría de las entidades, las funciones de Arcade Interseca() y Contiene() pueden lograr el mismo objetivo final de conectar entidades en el FeatureSet con las entidades de la capa emergente. Esto resulta útil en situaciones en las que las dos capas no comparten un atributo común, pero las entidades de las capas se intersecan espacialmente de forma significativa.

    Aunque la variable filteredCountryFset contiene solo una fila, sigue siendo un FeatureSet y la fila se ajusta en una estructura de tabla. A continuación, extraerá los datos de la tabla para que pueda usarlos con más facilidad. En este caso, en Arcade, se utiliza habitualmente la función Primera(). Esta extrae la primera entidad de un FeatureSet y la devuelve.

  13. En la ventana Expresiones, agregue una nueva línea encima de la instrucción return filteredCountryFSet y escriba var filteredCountry =.

    Escriba var filteredCountry =.

  14. En la pestaña Funciones, en el cuadro de búsqueda, escriba first. En Funciones FeatureSet, haga clic en First(features) -> Feature para agregarlo a la expresión.

    Haga clic en la función First().

    La función se agrega con un marcador de posición de argumento: First(features).

  15. Reemplace el marcador de posición de argumento para que ponga lo siguiente:

    var filteredCountry = First(filteredCountryFset)

  16. Modifique la instrucción return para que ponga return filteredCountry y haga clic en Ejecutar.

    Forme la instrucción return filteredCountry.

    En la ventana Salida, los datos aparecen ahora como una sola entidad.

    Ventana Resultados mostrando una sola entidad

    Utilizará estos datos en las siguientes instrucciones de la expresión de Arcade.

Calcular el suministro eléctrico

Ahora utilizará la información extraída del FeatureSet para calcular el número de ciudadanos a los que puede abastecer una central eléctrica. A continuación, dará formato al número resultante.

Primero, obtendrá el consumo de electricidad anual del país de la central eléctrica. Estos datos se almacenan en la entidad filteredCountry, en su campo de atributo Annual_Electricity_Consumption_. Para acceder a los atributos de una entidad en Arcade, use la sintaxis feature["attribute"] o feature.attribute.

En los resultados de prueba anteriores, vio que este atributo se llama Annual_Electricity_Consumption_. Sin embargo, otra forma de encontrar esta información es explorar los campos interactivamente en el panel Globales.

  1. Haga clic en la pestaña Variables de perfil. Si es necesario, haga clic en el botón Atrás. Expanda el elemento $map haciendo clic en la flecha.
  2. En el grupo Capas, haga clic en la flecha de World Countries Electricity Consumption.

    Aparece la lista de atributos de la capa, incluido el atributo Annual_Electricity_Consumption_.

    Atributo Annual_Electricity_Consumption_

    Ahora que ha identificado con certeza el nombre del atributo de interés, escribirá la instrucción para agregarla a una variable.

  3. En la ventana Expresión, agregue una línea nueva encima de la línea return filteredCountry y escriba lo siguiente:

    var electricityConsumption = filteredCountry.Annual_Electricity_Consumption_

  4. Modifique la instrucción return para que ponga return electricityConsumption y haga clic en Ejecutar.

    Forme la instrucción return electricityConsumption.

    En la ventana Salida, dado que el país de prueba es Afganistán, verá el consumo de electricidad anual de Afganistán devuelto: 5526000000 (kilovatios/hora o kWh).

    Ventana Resultados mostrando el valor 5526000000

    Del mismo modo, accederá a los datos de población almacenados en la entidad filteredCountry.

    Dado que ha configurado annualGenerationGwh = 10, la salida es 0. Debe eliminar este valor del código para que se ejecute en función de los valores especificados de la tabla de atributos.

  5. Elimine la línea annualGenerationGwh = 10 y haga clic en Ejecutar.
  6. En la ventana Expresión, agregue una línea nueva encima de la instrucción return y escriba var population = filteredCountry.POP;.
  7. Modifique la instrucción return para que ponga return population y haga clic en Ejecutar.

    Forme la instrucción return population.

    En la ventana Resultados, puede ver la población total de Afganistán: 37466414.

    Ventana Resultados que muestra el valor 37466414

    A continuación, calculará el consumo per cápita, que es el consumo anual estimado dividido por la población.

  8. En la ventana Expresión, agregue una línea nueva encima de la instrucción return y escriba lo siguiente:

    var consumptionPerCapita = electricityConsumption / population

  9. Modifique la instrucción return para que ponga return consumptionPerCapita y haga clic en Ejecutar.

    Forme la instrucción return consumptionPerCapita.

    En la ventana Salida, verá que el consumo per cápita es 147,4920978559624 (kWh).

    Ventana Resultados que muestra el valor 147,4920978559624

    Para obtener el número estimado de ciudadanos a los que la central eléctrica puede suministrar electricidad durante un año, dividirá los datos estimados de generación de electricidad anual de la central eléctrica (convertidos de gWh a kWh al multiplicarlos por 1000000) por el consumo de electricidad per cápita para el país que acaba de calcular (en kWh).

    La fórmula correspondiente será annualGenerationGwh * 1000000) / consumptionPerCapita.

    A continuación, usará la función Redondear() para devolver un número entero en lugar de un decimal, ya que el número de personas debería representarse en números enteros.

  10. En la ventana Expresión, agregue una línea nueva encima de la instrucción return y escriba var numCitizensAnnually =.
  11. En la pestaña Funciones, busque la función Redondear y haga clic en ella para introducirla en su instrucción.

    La función se agrega con los marcadores de posición de argumento: Round(value, ). En lugar de value, introducirá la fórmula definida anteriormente.

  12. En la función Round, en los paréntesis, sustituya valor por (annualGenerationGwh * 1000000) / consumptionPerCapita.

    El segundo argumento de Redondear(), numPlaces, indica el número de posiciones decimales al que se redondeará el número.

  13. Después de la expresión, escriba una coma, un espacio y un 0.
  14. Modifique la instrucción return para que ponga return numCitizensAnnually y haga clic en Ejecutar.
    Nota:

    Si el resultado es 0 para usted, agregue de nuevo annualGenerationGwh = 10 por encima de la línea var NumCitizensAnnually = Round.

    Forme la instrucción return numCitizensAnnually.

    En la ventana Salida, puede ver el resultado de esta fórmula: 67800 (ciudadanos).

    Ventana Resultados que muestra el valor 67800

    Ahora dará formato este número redondeado para agregar separadores de millares con la función Texto().

  15. En la ventana Expresión, agregue una línea nueva encima de la instrucción return, escriba var displayNumCitizensAnnually = y agregue un espacio.
  16. Haga clic en la pestaña Funciones, busque la función Texto y haga clic en ella para introducirla en su instrucción.

    Función Text

    La función se agrega con los marcadores de posición de argumento: value

  17. Sustituya value por numCitizensAnnually y, después, escriba , '###,###,###' para acomodar valores de hasta 9 dígitos.
  18. Modifique la instrucción return para que ponga return displayNumCitizensAnnually y haga clic en Ejecutar.

    Forme la instrucción return displayNumCitizensAnnually.

    En la ventana Resultados, 67800 se convierte en 67.800, que es el formato que buscaba.

    Ventana Resultados que muestra el valor 67.800

    La central eléctrica Kajaki Hydroelectric Power Plant Afghanistan puede suministrar electricidad cada año a 67.800 ciudadanos de Afganistán.

    Ahora que ha calculado el número estimado de ciudadanos a los que la central eléctrica puede proporcionar electricidad durante un año, devolverá este valor en una sentencia que se mostrará en el elemento emergente. Para ello, utilizará un literal de plantilla e incorporará más formato de texto. Un literal de plantilla está delimitado por comillas inversas (`) y utiliza la sintaxis ${variableName} para insertar variables o expresiones en una cadena de caracteres. Esto significa que la sentencia devuelta variará en función del valor de las variables de cada central eléctrica del mapa.

  19. En la ventana Expresión, agregue una línea nueva encima de la instrucción return y copie y pegue la siguiente línea:

    var dataTL = `On average, a citizen in ${ countryName } consumes ${ text(round(consumptionPerCapita, 0), '###,###,###,###') } kilowatt-hours of electricity per year. ${ plantName } supplies electricity for ${ displayNumCitizensAnnually } citizens in ${ countryName } annually.`

    Nota:

    No debe agregar saltos de línea, porque aparecerán en la salida.

  20. Modifique la instrucción return para que ponga return dataTL y haga clic en Ejecutar.

    Forme la instrucción return dataTL.

    En la ventana Salida, puede ver la sentencia de salida, donde las variables han sido reemplazadas por sus valores evaluados.

    Ventana Resultados mostrando la sentencia de salida

Administrar valores faltantes

Su expresión de Arcade está casi lista. Sin embargo, aún debe abordar los casos inusuales en los que faltan algunos de los valores de atributos. Se dan tres casos importantes:

  • Es posible que una entidad de una central eléctrica no tenga datos estimados anuales de generación de energía.
  • Una entidad de central eléctrica de la capa Global Power Plants puede mencionar un país que no existe en la capa World Countries Electricity Consumption.
  • Es posible que el país de la capa World Countries Electricity Consumption no disponga de datos sobre el consumo de electricidad.

Primero, abordará el caso en el que la central eléctrica no tiene datos estimados de generación de energía anual. Ya ha visto este caso anteriormente en el tutorial con la entidad de la central eléctrica de prueba, la central hidroeléctrica Kajaki de Afganistán. Reutilizará el trabajo realizado en la expresión preexistente Generación anual estimada en bombillas para abordar la ausencia de estos valores.

  1. Haga clic en la pestaña Sugerencias. En Generación anual estimada en bombillas, haga clic en la flecha para expandir y ver una vista previa del código.
  2. Resalte el extracto de la expresión que empieza por var generationCheck y termina con la llave de cierre que sigue a return noGenerationTL. Pulse Ctrl+C para copiarlo.

    Copie el código generationCheck.

  3. En la ventana Expresión, busque la línea que declara la variable annualGenerationGwh, agregue una nueva línea y pulse Ctrl+V para pegar el texto copiado.

    Pegue el código generationCheck.

    Nota:

    Las pocas líneas que empiezan con // son comentarios, que no afectarán al comportamiento de la expresión. Si lo desea, puede eliminarlos.

    El código insertado crea una variable booleana (verdadero o falso) a partir del valor de la función IsEmpty(). IsEmpty() comprueba si una variable está vacía o es nula y devuelve el valor Verdadero si es así. Así, comprobará si la variable annualGenerationGwh, que contiene el valor de campo de generación anual estimada, está vacía. Si es así, la instrucción if devuelve una sentencia que explica el problema. Puede obtener más información sobre el código que acaba de reutilizar en el tutorial Introducción a ArcGIS Arcade.

    Modificará el literal de plantilla para reflejar mejor el escenario concreto que está abordando su expresión de Arcade.

  4. En el texto que acaba de pegar, resalte el texto después de var noGenerationTL = y reemplácelo por el siguiente texto:

    `${ plantName } does not have estimated annual generation data. Unable to calculate the number of citizens the power plant can supply electricity for annually.`

    Para probar este caso, eliminará el valor de prueba de 10 agregado al atributo $feature.estimated_annual_generation.

  5. En el código, busque la línea annualGenerationGwh = 10 y escriba // delante de ella para establecerla como comentario.
  6. Haga clic en Ejecutar.

    El resultado muestra la sentencia de datos faltantes, lo cual tiene sentido porque la entidad de prueba no tiene datos estimados de generación de energía anual.

    Ventana Resultados mostrando la sentencia de datos faltantes

  7. En el código, elimine los comentarios de la línea annualGenerationGwh = 10.

    Por último, se ocupará del tercer caso de falta de valores: cuando un país de la capa World Countries Electricity Consumption no tiene datos de consumo de electricidad. Aprovechará el saber que si el país no tiene datos estimados de consumo anual, la variable electricityConsumption será nula.

  8. En la ventana Expresión, después de la línea que declara la variable electricityConsumption, agregue una nueva línea y escriba lo siguiente:

    if (electricityConsumption == null) {

    var noConsumptionTL = `There is no annual electricity consumption data for ${ countryName }. Unable to calculate the number of citizens the power plant can supply electricity for annually.`

    return noConsumptionTL

    }

    Agregue la prueba de electricityConsumption.

    Nota:

    Usar la función IsEmpty() también funcionaría, pero utilizar == null prueba específicamente si la variable es nula.

    Para probar este caso, utilizará el ejemplo de Boulaos, en Yibuti, que es un país de la capa World Countries Electricity Consumption que no tiene datos anuales de consumo eléctrico.

  9. Haga clic en Hecho en la ventana Expresión.
  10. En el mapa, haga clic en el botón Buscar, busque Djibouti y haga clic en el símbolo de punto Global Power Plant para abrir la ventana emergente.

    Ventana emergente de la central eléctrica de Boulaos

    Ahora que ha abordado los distintos casos de falta de datos, puede estar seguro de que su expresión devolverá siempre un mensaje significativo al usuario. Su expresión de Arcade ya está completa.

  11. En la barra de herramientas Contenido, haga clic en Guardar y abrir y seleccione Guardar para guardar el mapa y la expresión de Arcade.

    Como referencia, la expresión completa del tutorial se encuentra a continuación. Se han agregado comentarios para orientar al lector sobre el significado del código.


// Save the country and power plant name to variables for later use
var countryName = $feature["country_long"]

// Save the power plant name and annual generation to a variable
// for later use
var plantName = $feature.name
var annualGenerationGwh = $feature["estimated_generation_gwh"]

// Check if there is a value in the estimated annual generation
// attribute field. isEmpty(fieldOrValue) returns true if empty
var generationCheck = isEmpty(annualGenerationGwh)

// If there is not annual generation data, return a sentence for use
// in the pop-up that informs the user about this.
// The below expression uses conditional logic and a template literal:
if (generationCheck) {
  var noGenerationTL = `${ plantName } does not have estimated annual generation data. Unable to calculate the number of citizens the power plant can supply electricity for annually.`
  return noGenerationTL
}

// If there is average annual generation data, the script continues:
// Create a FeatureSet from the World Countries Electricity Consumption layer
var countriesGenFset = FeatureSetByName($map,
"World Countries Electricity Consumption",
['COUNTRY', 'Annual_Electricity_Consumption_', 'POP'], false)

// Filter the countries feature set. COUNTRY is attribute field in World
// Countries Population and Annual Electricity Consumption
// filteredCountryFset will be a FeatureSet with only one feature,
// because the powerplant country value is only equal to one country
var filteredCountryFset = filter(countriesGenFset,
'COUNTRY = @countryName')

// Select the first country in the filtered FeatureSet
// This essentially changes the data type from FeatureSet to a feature
// because in this case, there is only one feature in each FeatureSet
var filteredCountry = first(filteredCountryFset)

}
// Access the electricity consumption value for the country
// from the countries layer
// Note: bracket [] and . notation are both accepted
var electricityConsumption = filteredCountry.Annual_Electricity_Consumption_;

// Check if there is annual electricity consumption data for the country
// Instead of using isEmpty, we will check if the value is null
// If it isn't, return a sentence indicating this and exit the script
if (electricityConsumption == null) {
  var noConsumptionTL = `There is no annual electricity consumption data for ${ countryName }. Unable to calculate the number of citizens the power plant can supply electricity for annually.`
  return noConsumptionTL
}

// Access the population value for the country from the countries layer
var population = filteredCountry.POP;
// Compute the consumption per capita for that country
var consumptionPerCapita = electricityConsumption / population

// Calculate the number of citizens the plant can supply annually
var numCitizensAnnually = round(
  (annualGenerationGwh * 1000000) /
  (consumptionPerCapita), 0)

// Change the number to text so we can add thousand separators
var displayNumCitizensAnnually = Text(numCitizensAnnually,"###,###,###");

// Use a template literal to return the string we will display
// in the pop-up
var dataTL = `On average, a citizen in ${ countryName } consumes ${ text(round(consumptionPerCapita, 0), '###,###,###,###') } kilowatt-hours of electricity per year. ${ plantName } supplies electricity for ${ displayNumCitizensAnnually } citizens in ${ countryName } annually.`
return dataTL

Mostrar resultados en el elemento emergente

Ahora que su expresión de Arcade está completa, ha llegado el momento de usarla en el texto de los elementos emergentes de la capa Global Power Plants.

  1. En el panel Capas, asegúrese de que la capa Global Power Plants esté seleccionada.
  2. En el panel Expresiones de elementos emergentes, haga clic en el botón Atrás.

    Botón Atrás

  3. En el panel Elementos emergentes, en la parte inferior del panel, haga clic en Texto y luego en Editar texto.

    Botón Editar texto

    Aparece la ventana del editor de texto emergente y muestra el texto que aparece actualmente en la capa Global Power Plants. Agregará el resultado de su expresión de Arcade al texto existente.

  4. En el editor de texto emergente, coloque el cursor al final de {expression/expr1} y pulse Intro.
  5. Escriba una serie de guiones (-------------------------------) para crear un divisor entre párrafos. Pulse Intro.

    Escriba una serie de guiones.

  6. Escriba una sola llave: {.

    Aparece una lista de campos disponibles y expresiones de Arcade.

    Escriba una sola llave.

  7. Haga clic en la expresión que acaba de crear, Número de ciudadanos que la central eléctrica puede abastecer anualmente.

    Seleccione la expresión Número de ciudadanos que la central eléctrica puede abastecer anualmente.

    Nota:

    Puede ver que la expresión de Arcade que ha creado aparece en la lista como cualquier otro campo de atributo disponible. Puede reconocerla fácilmente gracias al nombre significativo que le asignó antes.

    La expresión se agrega al elemento Texto con el identificador único {expression/expr2}.

    Nueva expresión agregada al elemento Texto

    Nota:

    Si ha agregado o eliminado cualquier otra expresión, el identificador único puede utilizar un número distinto de 2, por ejemplo, {expression/exp3}.

  8. Haga clic en Aceptar para cerrar el editor de texto emergente.
  9. Guarde el mapa.

    Ahora probará los elementos emergentes.

  10. Cierre los paneles Elementos emergentes y Capas para liberar más espacio en el mapa.
  11. Acerque la visualización a un área de interés, por ejemplo, Sevilla, España.
  12. Haga clic en una central eléctrica para mostrar el elemento emergente.

    Ventana emergente final

    El elemento emergente muestra ahora el nuevo párrafo de texto generado por su expresión de Arcade.

  13. En el elemento emergente, revise la información sobre el consumo de electricidad por ciudadano y el número de ciudadanos a los que presta servicio la central eléctrica.
  14. Haga clic en otras centrales eléctricas para ver sus elementos emergentes.

En este tutorial, ha desarrollado una expresión de ArcGIS Arcade para calcular el número de ciudadanos a los que una central eléctrica puede suministrar electricidad durante un año. Ha aprendido a acceder a los datos desde más de una capa utilizando los FeatureSets y la función Filtrar(). Después, ha usado esos datos en algunos cálculos, ha abordado varios casos de falta de datos y ha usado la expresión en elementos emergentes. La expresión de Arcade se ejecuta de forma dinámica, sin ningún efecto en los datos subyacentes. En este tutorial se han tratado solamente algunas de las tareas que puede hacer con Arcade. Para obtener más información, explore la ruta de aprendizaje de Arcade.

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