Introducción a Google Earth Engine

Hoja de ruta

Leccion: 20 min
Prácticas: 40 min
Preguntas
  • ¿Qué es Google Earth Engine (GEE)?

  • ¿Cuáles son las ventajas y limitaciones de esta plataforma?

  • ¿Cuáles son los tipos de objetos disponibles para programar en GEE?

Objetivos
  • Comprender el funcionamiento de Google Earth Engine

  • Adquirir conocimientos básicos de la estructura de la plataforma

  • Entender los tipos de objetos usados en GEE

IALS - 06.10.23

¿Qué es Google Earth Engine?

Gorelick et al. (2017) indican en su articulo publicado en la revista Remote Sensing of the Environment:

Google Earth Engine es una plataforma basada en la nube para trabajos a escala planetaria que presenta capacidades para realizar análisis geoespacial y proporciona el poder computacional de Google. Provee de capacidades para incidir en una variedad de cuestiones sociales de gran impacto incluyendo la deforestación, las inundaciones, la sequía, los desastres naturales, las enfermedades y la > seguridad alimentaria, la gestión del agua, el monitoreo climático y la protección ambiental.

¿Por qué usar Google Earth Engine?

Google Earth Engine permite a los usuarios manejar petabytes de datos sobre la marcha sin tener que navegar por las complejidades de la paralelización basada en la nube. La mejora del acceso inclusivo ha estimulado el crecimiento de la observación de la Tierra a escalas antes inimaginables.

Razón # 1: Ciencia a escala planetaria

Desde que GEE entró en funcionamiento, han surgido varios estudios innovadores que demuestran el poder de la computación a gran escala para incidir en los problemas ambientales y sociales. Los siguientes tres ejemplos muestran la base de datos, las publicaciones de alto impacto y los exploradores web que se han generado a partir de las investigaciones realizadas en esta plataforma.


Caso 1: Monitoreo global de bósques

Lanzado en el año 2013, Global Forest Watch fundamentalmente cambió nuestra comprensión de la pérdida de bosques a escala planetaria. Esta herramienta de monitoreo y conservación de los bosques muestra interactivamente la ganancia y la pérdida de los bosques a escala mundial. La base de datos subyacente de la deforestación de Hansen está disponible en Google Earth Engine y aprovecha más de 3 millones de imágenes de Landsat para trazar un mapa de la dinámica mundial de los bosques.

Puede obtener más información aquí:

Forest loss in Sumatra’s Riau province, Indonesia, 2000-2012. Credit: Hansen, Potapov, Moore, Hancher et al., 2013


Caso 2: Variabilidad espacial, a escala global, de los cuerpos de agua superficial

En 2016 el centro de investigación European Commission’s Joint Research Centre (EC-JRC) publicó una base de datos denominada Global Surface Water Occurrence, que muestra la intensidad del cambio en la ocurrencia de aguas superficiales a escala global. En resumen, los autores cartografiaron la pérdida y la ganancia de cuerpos de agua a escala mundial desde 1984.


Caso 3: Tiempo de viaje a escala global

El proyecto Oxford Malaria Atlas, el centro EC-JRC y la University of Twente se unieron para crear un mapa de los tiempos de viaje desde cualquier punto del mundo hasta el centro urbano más cercano. Este trabajo permite localizar áreas con poco acceso a servicios para informar los esfuerzos de salud pública y las decisiones políticas.


Razón # 2: Procesamiento gratuito en la nube usando una variedad de funciones preestablecidas

Google Earth Engine está diseñado para el análisis de datos geoespaciales utilizando cloud computing. GEE se encarga de toda la infraestructura computacional y la paralelización por el usuario. Estas operaciones se denominan “server-side”.

Usando GEE, se puede llamar a un amplio conjunto de funciones que han sido desarrolladas específicamente para la computación en Earth Engine y aplicarlas sobre muchas imágenes simultáneamente usando la infraestructura computacional de Google. Así se evitan descargas y el análisis local de los mosaicos individuales a la vez o el costo de su almacenamiento local.

Razón # 3: Archivo online de datos públicos

El catálogo GEE alberga múltiples petabytes de imágenes satelitales en la nube, incluyendo toda la misión Landsat. Otras misiones de sensoramiento remoto incluyen Sentinel-1, Sentinel-2, MODIS y otros productos. Además de las imágenes, GEE también alberga bases de datos de productos de precipitación, densidad poblacional, topografía, cobertura de suelos y el clima. Se añaden diariamente más de 6000 escenas de misiones satelitales activas.




Razón # 4: Cargar su propio catálogo de datos

Se pueden subir datos raster y vectorial a la plataforma. También se puede recomendar agregar otros datos desde la ventana del Code Editor de la API de Javascript yendo al botón Help en la parte superior derecha y seleccionando Suggest a dataset.




Razón # 5: GEE se encarga del control de versiones

GEE hace una copia de seguridad del código en un repositorio git sin que los usuarios tengan que preocuparse por ello. Se pueden compartir esos repositorios con otros usuarios y ver versiones anteriores de los scripts fácilmente desde el Code Editor.

Razón # 6: Acceso flexible a través de Application Programming Interface (API)

El equipo de desarrollo de GEE trabaja para hacer que la plataforma sea de fácil acceso. Se puede acceder a Google Earth Engine a través de diferentes canales, incluyendo una interfaz gráfica de usuario no programada, la API de JavaScript y la API de Python.

Para estas lecciones vamos a utilizar el JavaScript API, sin embargo el material de entrenamiento para acceder a GEE usando Python está ahora disponible en la website de GEE. Si está interesado en usar el Python API, hay que seguir las instrucciones mostradas en el link para la instalación y revisar los notebooks de ejemplo aquí. La Javascript API ha incorporado herramientas de visualización de mapas, así que eso es lo que usaremos para aprender como usar la plataforma inicialmente.

Si todavía no está seguro de para qué sirve GEE, puede revisar la siguiente presentación What is Google Earth Engine? disponible del equipo GEE.


¿Cómo interactuamos con la plataforma?

Usando el Code Editor, se escriben comandos que son enviados como un objeto a Google para ser procesados en paralelo en la nube (server-side). Los usuarios pueden visualizar los resultados de Google en su navegador (client-side), incluyendo objetos como mapas, gráficos o resultados estadísticos.

Utilizando su API los usuarios pueden filtrar enormes colecciones de imágenes a las fechas y áreas de su interés, asignar algoritmos sobre colecciones de imágenes, aplicar algoritmos a imágenes individuales o colecciones de imágenes y estimar estadísticos a través del tiempo y el espacio sin tener que descargar una sola imágen a su computadora.




Objetos en GEE

Existen dos lados de programación en GEE: el lado del servidor y el lado del cliente. Un objeto puede ser convertido entre los dos tipos (p.ej. una cadena de texto). Igualmente, algunas operaciones se pueden realizar usando objetos de los dos lados, siempre y cuando se use la sintaxis apropiada.




Hay que tener en cuenta que la mayoría de las veces hay que usar la programación del lado del servidor ya que es allí donde se realiza la mayoría de los procesos.

Tipos de objetos del lado del servidor




Cada uno de los objetos del lado del servidor (p.ej. ee.ImageCollection, ee.Image, ee.Geometry, eee.Feature, ee.FeatureCollection) tiene sus correspondientes métodos. Mas informacion se encuentra aquí.

JavaScript con objetos del servidor

En esta sección seguimos conociendo un poco más de JavaScript en GEE.

Se puede crear una lista de números así:

// This generates a list of numbers from 1 to 10.
var myList = ee.List.sequence(1, 10);
print('esta es mi lista, myList);

Se puede acceder a los elementos de la lista así:

// Obtener el segundo elemento de la lista
print('el segundo elemento es', myList.get(1));




// El metodo de iterar es muy usado en programación
// Imprima secuencialmente los elementos 
var n = myList.size().getInfo();
for (var i = 0; i < n; i += 1) {
  print(myList.get(i));
}




Esta es una función rudimentaria que utiliza la instrucción FOR para elevar al cuadrado cada item de una lista:

// El metodo de iterar una colección de objetos usando FOR  
// no se recomienda al programar en GEE 

// Esta es una funcion que utiliza la instruccion FOR
// para elevar al cuadrado cada item de una lista

var computeSquares1 = function(lista){
    var nueva_lista = ee.List([]);
    var n = ee.List(lista).size().getInfo();
    for (var i = 0; i < n; i += 1) {
      var old_value = ee.List(lista).get(i);
      var new_value = ee.Number(old_value).pow(2);
      nueva_lista = nueva_lista.insert(i, new_value);
    }
   return nueva_lista;
};

// Uso de la funcion en la lista
var squares1 = computeSquares1(myList);
print('este es el resultado 1', squares1);

Esta es una función simple que utiliza el método .map para operar en una colección de objetos:

// El método map() toma una función que trabaja en cada elemento
// de manera independiente y retorna un valor.
// Esta función calcula el cuadrado de cada número
var computeSquares2 = function(number) {
  return ee.Number(number).pow(2);
};
// Ahora se aplica la función a cada elemento de la lista:
var squares2 = myList.map(computeSquares2);
print(squares2);  




Quizz práctico

Escriba una función que permita realizar la multiplicación de cada elemento de una lista por cualquier número. Pruebe la función con varias multiplicaciones.

Resumen

¿Cuáles son los usos comunes de GEE?

¿Para qué no ha sido diseñado GEE?

¿Cuáles son los dos tipos de objetos en la programación GEE?

Puntos Clave

  • Google Earth Engine es una herramienta útil para realizar procesos de percepción remota.

  • El catálogo de datos de GEE cubre una extensa variedad de temas.

  • GEE ayuda a entender el funcionamiento de los sistemas terrestres.

  • Cada uno de los objetos del lado del servidor tiene métodos y funciones asociadas.