¡Bienvenidos al maravilloso mundo de la imaginería satelital!
En este módulo, echaremos un vistazo a los fundamentos de Google Earth Engine (GEE) y exploraremos cómo inspeccionar y visualizar datos almacenados en bandas de imágenes satelitales. Los satélites ven el mundo de una manera que es similar y a la vez enormemente diferente a la del ojo humano, capturando una increíble gama de longitudes de onda y un campo de visión mucho más amplio. Con la API de GEE, seremos capaces de mostrar y analizar estas imágenes de una manera accesible y poderosa. También aprenderemos a utilizar la herramienta inspector, una práctica función de "punto y clic" que nos permite extraer datos e información sobre ubicaciones específicas. Descubriremos una colección de nuevos elementos de JavaScript que nos darán las herramientas que necesitamos para explorar nuestro fascinante mundo, a través de los ojos de los satélites.
“Satellite, in my eyes
Like a diamond in the sky
How I wonder”
Visualización de imágenes satelitales y bandas espectrales
Esta lección te enseña cómo inspeccionar y visualizar datos almacenados en bandas de imágenes satelitales.
Fundamentos de Google Earth Engine (GEE)
Comencemos haciendo clic en el siguiente enlace para agregar el repositorio de código para estos entrenamientos (link). La mayoría de los entrenamientos para este hackathon son versiones modificadas o condensadas de los entrenamientos encontrados en este libro de entrenamiento de Earth Engine basado en la web y gratuito.
Cuando hagas clic en el enlace al repositorio de código, debería llevarte al editor de código de GEE. Esta es una API de JavaScript basada en la web que es accesible incluso para aquellos que no están familiarizados con JavaScript. Aquí, puedes mostrar tus resultados en un mapa, guardar tus scripts, acceder a documentación, gestionar tareas y más.
La imagen a continuación muestra la pantalla del editor de código.
El panel central contiene el editor de código - esto es directo.
El panel izquierdo contiene las pestañas de Scripts y Docs. La pestaña de scripts es donde encontrarás todos tus códigos diferentes (como el explorador de archivos en Windows). La pestaña Docs es increíblemente útil para buscar entre las funciones pre-hechas de GEE que puedes usar durante todo el hackathon (muy parecido al comando "help" en MATLAB).
El panel derecho contiene las pestañas de Inspector y Consola. La pestaña de inspector te permite interactuar con el mapa en sí para "apuntar y hacer clic", lo que devolverá valores para cada píxel basado en los datos que hayas cargado - ¡verás esto en acción pronto! Finalmente, la pestaña de Consola es donde puedes mostrar salidas de datos (muy parecido a la ventana de comandos en MATLAB)
Bandas Espectrales
Una banda espectral es una porción del espectro energético. La imagen a continuación muestra el espectro energético completo. Las ondas visibles (azul, verde y rojo) son lo que los humanos ven, ¡pero los satélites pueden monitorear mucho más!
Diferentes objetos reflejan diferentes longitudes de onda de energía. Por ejemplo, la vegetación (clorofila) refleja una tonelada de luz verde en el espectro visible, por eso las plantas aparecen verdes para los humanos. Sin embargo, reflejan aún más luz cercana al infrarrojo que los humanos no pueden ver, ¡pero los satélites sí pueden!
En este hackatón, analizarás muchas de las bandas espectrales que los satélites pueden ver pero los humanos no pueden ver! ¡Consulta la hoja de trucos de bandas espectrales para obtener más información sobre bandas espectrales específicas, sus usos y fuentes de datos!
Accediendo a una imagen
Para comenzar, construirás una imagen con el Editor de Código. A medida que te encuentres con código en la lección, sigue adelante construyendo el mismo código en tu Editor de Código y haciendo clic en Ejecutar o Run en Ingles
Al crear la variable con la función ee.Image, Earth Engine carga una imagen capturada por el satélite Landsat 5 el 6 de junio de 2000, pero aún no verás ningún resultado. La función print te permite recuperar datos sobre la imagen, que se mostrarán en un desplegable en el panel de la Consola.
Deberías poder leer que esta imagen consta de 19 bandas diferentes. Para cada banda, los metadatos enumeran cuatro propiedades, pero por ahora simplemente notemos que la primera propiedad es un nombre o etiqueta para la banda encerrada entre comillas. or ejemplo, el nombre de la primera banda es "SR_B1".
Un sensor satelital como Landsat 5 mide la magnitud de la radiación en diferentes porciones del espectro electromagnético. TLas primeras seis bandas en nuestra imagen ("SR_B1" hasta "SR_B7") contienen mediciones para seis diferentes porciones del espectro. Las primeras tres bandas miden porciones visibles del espectro, o cantidades de luz azul, verde y roja. Las otras tres bandas miden porciones infrarrojas del espectro que no son visibles para el ojo humano.
Visualizando una imagen
Ahora vamos a agregar una de las bandas al mapa como una capa (usando la función Map.addLayer) para que podamos verla. Sigue junto con el ejemplo de código subsiguiente.
Nota las diferentes partes del código: la función, los valores, comentarios y cadenas. Hay cuatro componentes importantes del comando anterior:
first_image: Este es el conjunto de datos para mostrar en el mapa.
bandas: Estas son las bandas particulares del conjunto de datos para mostrar en el mapa. En nuestro ejemplo, mostramos una sola banda llamada "SR_B1".
min, max: Estos representan los límites inferior y superior de valores de "SR_B1" para mostrar en la pantalla. Por defecto, el valor mínimo proporcionado (8000) se mapea a negro, y el valor máximo proporcionado (17000) se mapea a blanco. Los valores entre el mínimo y el máximo se mapean linealmente a escala de grises entre negro y blanco. Los valores por debajo de 8000 se dibujan como negro. Los valores por encima de 17000 se dibujan como blanco. Juntos, los parámetros de bandas, min y max definen instrucciones para la visualización de datos.
'Capa 1': Esta es una etiqueta para la capa del mapa para mostrar en el Administrador de Capas. Esta etiqueta aparece en el menú desplegable de capas en la parte superior derecha del mapa.
Cuando ejecutes el código, es posible que no notes la imagen mostrada a menos que te desplaces por el mapa en busca de ella. Para hacer esto, haz clic y arrastra el mapa hacia Shanghái, China. (También puedes saltar allí escribiendo “Shanghái” en el panel de búsqueda en la parte superior del Editor de Código). Acércate al pequeño cuadrado oscuro: ¡esa es la imagen que acabas de crear!
¡Felicitaciones! Acabas de escribir tu primer script de Earth Engine y quizás quieras guardarlo. Haga clic en el botón Guardar. Al hacer clic en Guardar se le solicitará que cree una carpeta cuyo nombre no se podrá cambiar en el futuro. También le pedirá que agregue el código a un repositorio. Un repositorio es una forma conveniente de organizar y compartir su código. Una vez guardado el script, aparecerá en el panel del administrador de scripts en el lado izquierdo de su Editor de código.
La herramienta inspector
Exploremos esta imagen con la herramienta Inspector. Cuando haces clic en la pestaña Inspector en el lado derecho del Editor de código, tu cursor ahora debería verse como una cruz. Cuando hace clic en una ubicación en la imagen, el panel Inspector informará datos para esa ubicación en tres categorías de la siguiente manera:
Punto: datos sobre la ubicación en el mapa. Esto incluye la ubicación geográfica (longitud y latitud) y algunos datos sobre la visualización del mapa (nivel de zoom y escala).
Píxeles: datos sobre el píxel en la capa. Si expandes esto, verás el nombre de la capa del mapa, una descripción de la fuente de datos y un gráfico de barras. En nuestro ejemplo, vemos que "Capa 1" se dibuja a partir de un conjunto de datos de imagen que contiene 19 bandas. Bajo el nombre de la capa, el gráfico muestra el valor del píxel en la ubicación que hiciste clic para cada banda en el conjunto de datos. Cuando pasas el cursor sobre una barra, aparecerá un panel para mostrar el nombre de la banda y el "valor de banda" (valor del píxel). Para encontrar el valor del píxel para "SR_B1", pasa el cursor sobre la primera barra a la izquierda. Alternativamente, al hacer clic en el pequeño icono azul a la derecha de "Capa 1" (área B), cambiarás la visualización de un gráfico de barras a un diccionario que informa el valor del píxel para cada banda.
Objetos: datos sobre el conjunto de datos fuente. Aquí encontrarás metadatos sobre la imagen que son muy similares a lo que recuperaste anteriormente cuando dirigiste a Earth Engine para imprimir la imagen en la Consola
var first_image = ee.Image( 'LANDSAT/LT05/C02/T1_L2/LT05_118038_20000606'); print(first_image);
Map.addLayer( first_image, //dataset to display { bands: ['SR_B1'], //band to display min: 8000, //display range max: 17000 }, 'Layer 1' //name to show in layer manager );
En el ejemplo anterior, simplemente mostramos una imagen y proporcionamos un enlace a una imagen de China que identificamos previamente y que sabemos que será nítida: "LANDSAT/LT05/C02/T1_L2/LT05_118038_20000606". En este ejercicio utilizamos una imagen nítida, pero en realidad no nos proponemos encontrar y mostrar una imagen visual nueva y significativa.
Para encontrar una nueva imagen, dos puntos importantes son importantes. En primer lugar, en el ejercicio anterior utilizamos datos brutos de sensores de los satélites Landsat. Incluimos el enlace directo a una imagen que ya sé que es clara y útil. La mayoría de las imágenes Landsat no son nítidas. Muy a menudo incluyen cobertura de nubes, satélites físicos sobrevuelan el territorio en momentos aleatorios y, a veces, las imágenes se toman de noche. Por lo tanto, la imagen visual resultante puede no poder utilizarse automáticamente. Además, los distintos satélites Landsat cubren hasta una docena de bandas.
Para su información, desglosemos la información en el enlace:
LANDSAT = The general Landsat "folder" within GEE. LT05 = Landsat 5 Thematic Mapper (TM). C02 = Collection 2 (the newest major collection reprocessing from USGS). T1_L2 = Tier 1, Level-2 data (usually surface reflectance, with atmospheric corrections).
Pero no se puede saber de antemano cómo encontrar esta información. Por lo tanto, cuando se busca una imagen útil en un conjunto de datos sin procesar, como Landsat, una forma de encontrar imágenes interesantes es filtrar. En el editor de código, puede filtrar la colección de imágenes por metadatos (como fecha de adquisición y geografía) e incluso verificar la cobertura de nubes para garantizar que la escena seleccionada proporcione una vista clara. A continuación se muestra un ejemplo de codificación que muestra cómo filtrar datos brutos de Landsat 8 por rango de fechas, geografía y cobertura de nubes:
var landsat8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2') // Filter by date. .filterDate('2020-01-01', '2020-12-31') // filter by a region, where the region is some geometry you define. .filterBounds(region) // Filter by cloud cover (ie this means less than 10%). .filter(ee.Filter.ltLinks to an external site.('CLOUD_COVER', 10));
Dicho esto, el siguiente ejercicio trata sobre el uso de conjuntos de datos preprocesados, lo cual recomiendo. Por lo general, se ignoran datos como la cobertura de nubes, la hora nocturna y, a veces, las fechas. Así que hay muchos conjuntos de datos fácilmente explotables. Sin embargo, el filtrado sigue siendo una herramienta muy útil.
Resumen
Aquí está lo que aprendimos en este módulo:
La API de GEE es una herramienta accesible y poderosa para mostrar (y posteriormente analizar) imágenes satelitales.
Los satélites ven el mundo a través de bandas espectrales, justo como el ojo humano ve el mundo a través de bandas rojas, verdes y azules. Sin embargo, los satélites tienen el potencial de ver incluso más longitudes de onda fuera del espectro visible y con un campo de visión mucho más amplio que una persona en el suelo.
La herramienta de inspección es un método fácil de "señalar y hacer clic" para extraer datos/información sobre ubicaciones exactas en nuestro mapa interactivo.
Nuevos elementos de código:
var
crea una nueva variable en GEE que se utiliza para almacenar información. En nuestro ejercicio la usamos para almacenar una imagen.ee.Image
es una función que carga una imagen del catálogo de datos de GEE, la cual podemos utilizar a lo largo de nuestro código.print
es una función que mostrará información sobre nuestra variable en la pestaña Consola.Map.addLayer
es una función que permite agregar la imagen satelital que cargamos en la ventana del mapa debajo de nuestro editor de código.