Mapear cuerpos de agua usando 4 índices de vegetación  de imagenes Landsat y Sentinel-2 en GEE

Mapear cuerpos de agua usando 4 índices de vegetación de imagenes Landsat y Sentinel-2 en GEE

Play this article

En esta entrada vamos a calcular índices de vegetación que se usan comúnmente para clasificar pixeles de cuerpos de agua y vamos a delimitar estos cuerpos de agua. Para ello vamos a usar la librería de VICAL (Jiménez-Jiménez et al., 2022) en Google Earth Engine.

Son muchos los índices de vegetación que se emplean para el mapeo de cuerpos de agua, algunos de estos se describen con detalle en la entrada Índices de vegetación para mapear cuerpos de agua.

Con VICAL se pueden calcular los siguientes en GEE:

  • AWEI (Automated Water Extraction Index)
  • NDWI (Normalized difference water index)
  • MNDWI (Modified Normalized difference water index)
  • WI (water index)
  • ANDWI (Augmented Normalized Difference Water Index)

Para saber como extraer cuerpos de agua con imagenes Sentinel-2 o Landsat vamos a seguir los siguientes pasos:

  1. VICAL cuenta con tres archivos que puede importar a su Script, estos son
    // archivo para las colecciones de imagenes);
    var imp = require('users/InifapCenidRaspa/VICAL:Exportaciones');
    // archivo para los indices de vegetacion
    var imp2= require('users/InifapCenidRaspa/VICAL:VegetationIndex'); 
    // archivo para las visualizaciones
    var St= require('users/InifapCenidRaspa/VICAL:Style');
    
  1. Antes de importar el conjunto de colecciones de imágenes (Landsat o sentinel-2 o ambos) se deben definir ciertas variables que son útiles para filtrar esta colección, estos son: i) un polígono; ii) intervalo de fechas y iii) valor umbral de nubes en las imágenes.
var fecha = ['2021-03-01', '2022-03-18']; //Fecha inicial y final 
var table = ee.FeatureCollection( //poligono
    ee.Geometry.Polygon(
        [[[-105.09741449991577, 25.77457195054493],
          [-105.17500544229858, 25.72262066567659],
          [-105.05415583292358, 25.49103864339504],
          [-104.93261957804077, 25.548666430953972]]])); 
var p_nubes= 10;//Porcentaje de nubes
  1. Importamos la colección de imagenes, en este caso es Sentinel-2, usamos para ello el archivo imp de VICAL
//Se emplea la imagen Sentinel
var S2B = imp.ColeccionImagenSentinelSR(fecha, table, p_nubes);
  1. Calculamos cualquiera de los índices de vegetación que se mostraron arriba, en este caso vamos a usar el AWEI.
var ivs = ee.ImageCollection(S2B.map(imp2.AWEI));
  1. Seleccionamos una imagen de la colección (en este caso la primera imagen) y definimos un valor umbral que en este caso es 0
var iv = ivs.first(); //indice de vegetación
var th=0; //valor umbral
  1. Se crea el archivo vector con los pixeles de agua, para usar la funcion del archivo imp. indicamos los valores de estas variables: Índice de vegetación, valor umbral, polígono que delimitada, escala pixel.
var vectors=imp.VectorF(iv,th,table,10)
  1. Se agrega el índice de vegetación y el archivo vector al mapa
//Paleta de colores donde se usa el archivo st
var ivVis = {min :0, max : 1, palette : St.paletaIV};
//se agrega al mapa y centra el mapa a la zona
Map.addLayer(iv.clip(table), ivVis,'NDVI'); //Indice
Map.addLayer (vectors, {palette: ['blue', 'red']}, 'Water Body')
Map.centerObject(table, 13);

El resultado final es:

image.png

Para revisar el script a detalle clic aquí

Did you find this article valuable?

Support SERGIO IVÁN JIMÉNEZ JIMÉNEZ by becoming a sponsor. Any amount is appreciated!