Conjuntos de Datos Preprocesados

¡Bienvenido al módulo de conjuntos de datos preprocesados!

En este módulo, aprenderemos sobre las diferentes maneras de navegar a través de la plétora de conjuntos de datos disponibles en GEE.

¡GEE ofrece acceso fácil a millones de imágenes de toda la vida útil de numerosos satélites de imágenes! Estas grandes colecciones pueden ser difíciles de manejar, lo que hace que sea desalentador encontrar las que necesitas. ¡Pero no temas! Te mostraremos las maneras más fáciles de navegar a través del catálogo de datos de GEE y encontrar el conjunto de datos que estás buscando. También exploraremos algunos conjuntos de datos pre-elaborados que están disponibles para nosotros, ¡específicamente para las pistas de este hackathon!

In the age of big data, it’s easy to feel like a needle in a haystack. But sometimes, the haystack is the dataset.
— Abimelec Mercado Rivera

Navegando por los conjuntos de datos de EE

Comienza escribiendo "Landsat 7 Collection 2" en la barra de búsqueda del Editor de Código de Earth Engine.

Puedes seleccionar un conjunto de datos de este menú desplegable inicial, o presionar enter para ver todos los resultados de la búsqueda. Desde ahí, veamos los "USGS Landsat 7 Collection 2 Tier 1 Raw Scenes" mostrados a la derecha.

Al hacer clic en dicho conjunto de datos, se mostrará el cuadro de información también mostrado a la derecha. Aquí, podemos ver información sobre el conjunto de datos, incluyendo una descripción, bandas disponibles, propiedades de la imagen y términos de uso de los datos en la parte superior. En el lado izquierdo de esta ventana, verás un rango de fechas cuando los datos están disponibles, un enlace a la página web del proveedor del conjunto de datos y un fragmento de la colección. Este fragmento de la colección se puede utilizar para importar el conjunto de datos pegándolo en tu script, como hiciste en capítulos anteriores. También puedes usar el gran botón de Importar para importar el conjunto de datos a tu espacio de trabajo actual. Además, si haces clic en el enlace de Ver ejemplo, Earth Engine abrirá una nueva ventana de código con un fragmento de código que muestra el uso del conjunto de datos. Fragmentos de código como este pueden ser muy útiles cuando aprendes a usar un conjunto de datos que es nuevo para ti.

Ahora vuelve a tus Resultados de Búsqueda. En la esquina inferior derecha, haz clic en Abrir en Catálogo. Esto ofrece una vista alternativa de los datos disponibles.

Preprocesamiento de datos

Repasemos algunos conceptos básicos más que serán útiles durante todo el hackathon. No puedes analizar ninguna imagen satelital si no tienes las imágenes para empezar, ¿verdad?

Visualizando una colección de imágenes Landsat

Dependiendo de cuánto tiempo haya estado en operación una plataforma de teledetección, puede haber miles o millones de imágenes recopiladas de la Tierra. En Earth Engine, estas están organizadas en una ImageCollection, un tipo de datos especializado que tiene operaciones específicas disponibles en la API de Earth Engine. Al igual que las imágenes individuales, pueden ser visualizadas con Map.addLayer.

El programa Landsat de la NASA y el USGS ha lanzado una secuencia de satélites de observación terrestre que han estado devolviendo imágenes desde 1972, haciendo que esa colección de imágenes sea la observación basada en satélites más larga de la superficie terrestre. Veamos colecciones de escenas tomadas por el Operational Land Imager a bordo del Landsat 8, que fue lanzado en 2013. (Nota, no tienes que ejecutar este código ya que tomará mucho tiempo, ¡solo sigue para entender que las imageCollections pueden ser enormes!)

 /////
// View an Image Collection
/////

// Import the Landsat 8 Raw Collection.
var landsat8 = ee.ImageCollection('LANDSAT/LC08/C02/T1');

// Print the size of the Landsat 8 dataset.
print('The size of the Landsat 8 image collection is:', landsat8
.size());

// Try to print the image collection.
// WARNING! Running the print code immediately below produces an error because 
// the Console can not print more than 5000 elements.
print(landsat8);

// Add the Landsat 8 dataset to the map as a mosaic. The collection is 
// already chronologically sorted, so the most recent pixel is displayed.
Map.addLayer(landsat8,
    {
        bands: ['B4', 'B3', 'B2'],
        min: 5000,
        max: 15000
    },
    'Landsat 8 Image Collection');

Las imágenes pueden tardar unos minutos en cargarse, acerca el zoom en un área para acelerar el proceso.

Ten en cuenta que imprimir la ImageCollection devolvió un mensaje de error porque llamar a print en una ImageCollection escribirá el nombre de cada imagen en la colección en la Consola (Console). Este es el resultado de una salvaguarda intencional dentro de Earth Engine. ¡No queremos ver un millón de nombres de imágenes impresos en la Consola! Y ciertamente no queremos ver un millón de imágenes impresas en el mapa!

Puedes ver que esto tomará mucho tiempo en ejecutarse, así que pasa al siguiente ejercicio sobre filtrar colecciones de imágenes para hacerlas más manejables.

Filtrando colecciones de imágenes

El código anterior muestra el conjunto de datos crudos de Landsat 8, por lo que vemos toneladas de nubes y otras perturbaciones atmosféricas que incluso pueden ser indetectables para los humanos. Algunos conjuntos de datos han sido corregidos para tener en cuenta factores como estos. Un conjunto de datos que ha sido tratado con esta corrección atmosférica se llama ImageCollection de "reflectancia de superficie".

Escribe y ejecuta el código a continuación para importar y filtrar los datos de reflectancia de superficie de Landsat 8 (landsat8SR) por fecha y en un punto sobre San Francisco, California, EE. UU. (pointSF). La función filterDate filtra los datos a un cierto rango de tiempo, filterBounds filtra los datos a una región específica, y first especifica que solo queremos mirar la primera (la más temprana) imagen en este conjunto de datos entre las fechas especificadas.

// Create and Earth Engine Point object over San Francisco.
var pointSF = ee.Geometry.Point([-122.44, 37.76]);

// Import the Landsat 8 Surface Reflectance collection.
var landsat8SR = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2');

// Filter the collection and select the first image.
var landsat8SRimage = landsat8SR.filterDate('2014-03-18',
        '2014-03-19')
    .filterBounds(pointSF)
    .first();

print('Landsat 8 Surface Reflectance image', landsat8SRimage);


Visualiza los metadatos en la Consola (Console) para ver qué bandas están presentes en el conjunto de datos. Luego utiliza el código a continuación para mostrar las bandas de Reflectancia de Superficie 2, 3 y 4 en RGB.

// Center map to the first image.
Map.centerObject(landsat8SRimage, 8);

// Add first image to the map.
Map.addLayer(landsat8SRimage,
    {
        bands: ['SR_B4', 'SR_B3', 'SR_B2'],
        min: 7000,
        max: 13000
    },
    'Landsat 8 SR');

Conjuntos de datos preestablecidos

EE tiene una amplia gama de varios conjuntos de datos preestablecidos para su uso. Algunos ejemplos incluyen:

  • áreas quemadas mensuales (seguimiento de incendios forestales)

  • detección de metano

  • datos meteorológicos y climáticos

  • datos de uso de la tierra preclasificados

  • cambio forestal global

  • conteos de población

  • modelos de elevación

  • etc.

Piensa en algunas formas en que puedes usar estos conjuntos de datos o incluso combinar varios para obtener resultados novedosos. Por ejemplo, puedes comparar los datos de población y las áreas quemadas por incendios forestales para determinar las vidas en riesgo debido a incendios forestales en diferentes áreas. O, comparar el uso de la tierra con la presencia de metano para determinar si hay mejores maneras de utilizar ciertas tierras. Las posibilidades son infinitas con tal amplia gama de datos a tu disposición.

Recapitulación

Aquí está lo que aprendimos en este entrenamiento:

  • Existen múltiples formas de navegar por los muchos conjuntos de datos en GEE. Una de las más fáciles es la barra de búsqueda en el editor de código.

  • Hacer clic en uno de estos conjuntos de datos nos mostrará una descripción, las bandas del conjunto de datos), valores mínimos y máximos de píxeles para cada banda, una opción de importación, ¡e incluso ejemplos!

  • ImageCollections puede contener millones de imágenes de toda la vida útil del satélite de imágenes

  • Las grandes ImageCollections pueden ser difíciles de analizar y mostrar de manera eficiente, por lo que filtramos nuestros datos para obtener justo la imagen que necesitamos

  • Algunos conjuntos de datos pre-hechos ya se pueden encontrar que son increíblemente útiles para nosotros. ¡Busca en el catálogo de datos de google earth engine para más!

Nuevos elementos de código:

  • La función filterDate filtra los datos a un cierto rango de tiempo, filterBounds filtra los datos a una región específica, y first especifica que solo queremos mirar la primera (la más temprana) imagen en este conjunto de datos entre las fechas especificadas.

Ejemplos de código (para conjuntos de datos predefinidos)

A continuación se presentan algunos ejemplos de código que puedes utilizar para acceder a algunos de los conjuntos de datos mencionados anteriormente. Para fines de tutorial, no es necesario que sigas estos ejemplos porque no presentan ningún material de aprendizaje nuevo. Más bien, están aquí simplemente como referencia en caso de que estés interesado en usar uno de los conjuntos de datos diversos.

Monthly burned areas

Methane

European Space Agency landcover data

Global forest change

Population

// Import the MODIS monthly burned areas dataset.
var modisMonthly = ee.ImageCollection('MODIS/006/MCD64A1');

// Filter the dataset to a recent month during fire season.
var modisMonthlyRecent = modisMonthly.filterDate('2021-08-01');

// Add the dataset to the map.
Map.addLayer(modisMonthlyRecent, {}, 'MODIS Monthly Burn');
// Import a Sentinel-5 methane dataset.
var methane = ee.ImageCollection('COPERNICUS/S5P/OFFL/L3_CH4');

// Filter the methane dataset.
var methane2018 = methane.select(
        'CH4_column_volume_mixing_ratio_dry_air')
    .filterDate('2018-11-28', '2018-11-29')
    .first();

// Make a visualization for the methane data.
var methaneVis = {
    palette: ['black', 'blue', 'purple', 'cyan', 'green',
        'yellow', 'red'
    ],
    min: 1770,
    max: 1920
};

// Center the Map.
Map.centerObject(methane2018, 3);

// Add the methane dataset to the map.
Map.addLayer(methane2018, methaneVis, 'Methane');
// Import the ESA WorldCover dataset.
var worldCover = ee.ImageCollection('ESA/WorldCover/v100').first();

// Center the Map.
Map.centerObject(worldCover, 3);

// Add the worldCover layer to the map.
Map.addLayer(worldCover, {
    bands: ['Map']
}, 'WorldCover');
// Import the Hansen Global Forest Change dataset.
var globalForest = ee.Image(
    'UMD/hansen/global_forest_change_2020_v1_8');

// Create a visualization for tree cover in 2000.
var treeCoverViz = {
    bands: ['treecover2000'],
    min: 0,
    max: 100,
    palette: ['black', 'green']
};

// Add the 2000 tree cover image to the map.
Map.addLayer(globalForest, treeCoverViz, 'Hansen 2000 Tree Cover');

// Create a visualization for the year of tree loss over the past 20 years.
var treeLossYearViz = {
    bands: ['lossyear'],
    min: 0,
    max: 20,
    palette: ['yellow', 'red']
};

// Add the 2000-2020 tree cover loss image to the map.
Map.addLayer(globalForest, treeLossYearViz, '2000-2020 Year of Loss');
// Import and filter a gridded population dataset.
var griddedPopulation = ee.ImageCollection(
        'CIESIN/GPWv411/GPW_Population_Count')
    .first();

// Predefined palette.
var populationPalette = [
    'ffffe7',
    '86a192',
    '509791',
    '307296',
    '2c4484',
    '000066'
];

// Center the Map.
Map.centerObject(griddedPopulation, 3);

// Add the population data to the map.
Map.addLayer(griddedPopulation,
    {
        min: 0,
        max: 1200,
        'palette': populationPalette
    },
    'Gridded Population');