Visualiza imágenes y bandas de imágenes

Ahora que ya puedes comenzar a escribir código de JavaScript de Earth Engine, copia el siguiente código en el editor de código:

Editor de código (JavaScript)

// Instantiate an image with the Image constructor.
var image = ee.Image('CGIAR/SRTM90_V4');

// Zoom to a location.
Map.setCenter(-112.8598, 36.2841, 9); // Center on the Grand Canyon.

// Display the image on the map.
Map.addLayer(image);

Haz clic en el botón Run en la parte superior del editor de código y observa que aparece una imagen muy gris en el mapa. No te preocupes, pronto harás que se vea mejor. Si la sintaxis de cualquier parte de este ejemplo no te resulta familiar, asegúrate de revisar el instructivo de JavaScript para Earth Engine.

Image Constructor

La primera novedad de este ejemplo es el constructor de imágenes ee.Image(). El argumento proporcionado al constructor es el ID de cadena de una imagen en el Data Catalog de Earth Engine. (Consulta la pestaña Docs, a la izquierda del editor de código, para ver una lista completa de los posibles argumentos para el constructor de imágenes. La pestaña Docs representa la información más actualizada sobre lo que puede hacer Earth Engine).

Para descubrir un ID de imagen, busca en el Data Catalog de Earth Engine con la herramienta de búsqueda que se encuentra en la parte superior del Code Editor. Por ejemplo, escribe "elevation" en el campo de búsqueda y observa que se devuelve una lista de imágenes de trama. Haz clic en la entrada "SRTM Digital Elevation Data Version 4" para ver más información sobre ese conjunto de datos. En el lado derecho de la descripción del conjunto de datos, hay un campo ID de imagen. Observa que el ID de la imagen en el ejemplo se copia del ID de la imagen que se muestra en la descripción del conjunto de datos.

Una alternativa a copiar y pegar los IDs de imagen es usar el botón Importar en la descripción del conjunto de datos o el vínculo importar que se encuentra en el lado derecho de los resultados de la búsqueda. Si haces clic en el vínculo o botón de importación, se creará automáticamente una variable en una sección especial, llamada "Imports", en la parte superior de la secuencia de comandos. Para cambiar el nombre de la variable, haz clic en su nombre en la sección de importaciones.

Configura el mapa

La segunda parte nueva de este ejemplo es la llamada a Map.setCenter(). Este método en el objeto Map, que representa la visualización del mapa en el editor de código, centra el mapa en la longitud y latitud dadas (en grados decimales) y el nivel de zoom, donde 1 se aleja para que el mapa muestre toda la superficie de la Tierra. Los números más grandes acercan la imagen desde allí. Para descubrir todos los métodos del objeto Map, consulta la sección Map en la pestaña Docs en el lado izquierdo del editor de código.

Cómo agregar una capa al mapa

La última línea del ejemplo dice: usa el método addLayer() del objeto Map para agregar una imagen a la visualización del mapa en el editor de código.

¡Felicitaciones! Creaste tu primera secuencia de comandos de Earth Engine. En la siguiente sección, aprenderás a mejorar el aspecto de esa imagen.

Digresión: Imágenes en Earth Engine

Las imágenes de Earth Engine (consulta esta página para obtener más detalles) se componen de una o más bandas. Cada banda de una imagen tiene su propio nombre, valores de píxeles, resolución de píxeles y proyección. Como descubrirás pronto, la imagen de SRTM tiene una banda: "elevation".

Cuando agregas una imagen a un mapa con Map.addLayer(), Earth Engine debe determinar cómo asignar los valores de las bandas de la imagen a los colores de la pantalla. Si se agrega una imagen de una sola banda a un mapa, Earth Engine muestra la banda en escala de grises de forma predeterminada, en la que el valor mínimo se asigna al negro y el valor máximo, al blanco. Si no especificas cuáles deben ser los valores mínimo y máximo, Earth Engine usará los valores predeterminados. Por ejemplo, la imagen que acabas de agregar al mapa se muestra como una imagen en escala de grises estirada al rango completo de los datos o un número entero de 16 bits con signo [-32768, 32767]. (Las bandas float se extienden a [0, 1] y las bandas byte se extienden a [0, 255] de forma predeterminada).

Para descubrir el tipo de datos de la imagen, imprímela y, luego, inspecciona el objeto de imagen en la pestaña Console. Por ejemplo, pega lo siguiente después del código anterior:

Editor de código (JavaScript)

print('SRTM image', image);

Cuando hagas clic en Ejecutar, verás que aparece un objeto en la consola. Para investigar las propiedades del objeto, haz clic en el botón de expansión () que se encuentra a la izquierda del objeto o la propiedad. Expande el objeto de imagen, la propiedad "bands", la banda "elevation" en el índice "0" y la propiedad "data_type" de la banda "elevation" para descubrir que es un tipo de datos signed int16.

Cómo personalizar la visualización de capas

Para cambiar la forma en que se estiran los datos, puedes proporcionar otro parámetro a la llamada a Map.addLayer(). Específicamente, el segundo parámetro, visParams, te permite especificar los valores mínimo y máximo que se mostrarán. Para descubrir qué valores usar, activa la pestaña Inspector y haz clic en el mapa para tener una idea del rango de valores de píxeles. Como alternativa, usa el administrador de capas para estirar los datos de forma interactiva y, luego, observa los valores mínimo y máximo correspondientes a los percentiles o las desviaciones estándar. Supongamos que, a través de esa experimentación, determinas que los datos deben estirarse a [0, 3000]. Para mostrar la imagen con este rango, usa lo siguiente:

Editor de código (JavaScript)

Map.addLayer(image, {min: 0, max: 3000}, 'custom visualization');

Ten en cuenta que el parámetro visParams es un objeto con propiedades que especifican el min y el max. (Obtén más información sobre los objetos de JavaScript en el instructivo de JavaScript o esta referencia externa). Ten en cuenta que el tercer parámetro para Map.addLayer() es el nombre de la capa que se muestra en el Administrador de capas. El resultado debería ser similar al de la Figura 1. Coloca el cursor sobre el cuadro Layers de la derecha para ver el efecto de cambiar el nombre de esa capa.

Tutorial_api_01_elevation.png
Figura 1. Imagen de elevación en escala de grises, estirada a [0, 3000].

Para mostrar una sola banda con una paleta de colores, agrega una propiedad palette al objeto visParams:

Editor de código (JavaScript)

Map.addLayer(image, {min: 0, max: 3000, palette: ['blue', 'green', 'red']},
    'custom palette');

El resultado debería ser similar al de la Figura 2.

Tutorial_api_02_palette.png
Figura 2. Imagen de elevación como una rampa de color de azul a rojo, estirada a [0, 3000].

Digresión: Paletas

Las paletas te permiten establecer el esquema de colores para las imágenes de una sola banda. Una paleta es una lista delimitada por comas de cadenas de color que se interpolan de forma lineal entre los valores máximo y mínimo en los parámetros de visualización (o los valores predeterminados según el tipo de banda, como se describió anteriormente). Por ejemplo, los píxeles menores o iguales que el mínimo se mostrarán con el primer color de la lista; los píxeles mayores o iguales que el máximo se mostrarán con el último color de la lista. Los colores intermedios se extienden de forma lineal a los valores de píxeles intermedios.

Los colores se definen con el esquema de valores de color CSS estándar de la Web (consulta esta referencia externa para obtener más información). Los colores se pueden especificar por nombre o como cadenas hexadecimales que indican la combinación de rojo, verde y azul. El valor más bajo en cualquiera de las tres posiciones es 00 (que representa el número decimal 0), mientras que el más alto es FF (que representa el número decimal 255). La cadena "000000" representa el color negro, "FFFFFF" es blanco, "FF0000" es rojo, "00FF00" es verde y "0000FF" es azul. Consulta la sección Paletas de colores para obtener más detalles. Se pueden realizar otros estiramientos con los descriptores de capas con diseño, como se describe en esta sección.

Más adelante en este instructivo, aprenderás a mostrar imágenes multibanda. Pero primero, visita la siguiente página para obtener información sobre cómo realizar cálculos con imágenes.