Capitulo 6 VICAL en GEE

En esta sección se muestra cómo usar los archivos de VICAL para implementarlos en un script propio de GEE.

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');

6.1 Coleccion de imagenes

Antes de importar el conjunto de colecciones de imágenes se deben definir ciertas variables que van a ser útiles para filtrar la colección, estos son: i) un punto o polígono; ii) intervalo de fechas y iii) valor umbral de nubes en las imágenes; esto se muestra a continuación:

var fecha = ['2021-01-01', '2022-03-18']; //Fecha inicial y final 
//poligono o punto
var table = ee.FeatureCollection("projects/calcium-verbena-328905/assets/Bate"); 
var p_nubes= 30;//Porcentaje de nubes

6.1.1 Landsat

Si se desea usar imágenes LandSat (4, 5, 7, 8 y 9) corregidas atmosféricamente libre de nubes se puede usar el código siguiente, donde se crea una función para unir las colecciones de imágenes. Para ello se usa el archivo imp.

function ColeccionImagenSR(fecha, recorte, umbral)
{
  // se importan las colecciones de imagenes usando el archivo "imp"
  var L9sr = imp.ColeccionLandsatSR(fecha, 'LC09', recorte, umbral);
  var L8sr = imp.ColeccionLandsatSR(fecha, 'LC08', recorte, umbral);
  var L7sr = imp.ColeccionLandsatSR(fecha, 'LE07', recorte, umbral);
  var L5sr = imp.ColeccionLandsatSR(fecha, 'LT05', recorte, umbral);
  var L4sr = imp.ColeccionLandsatSR(fecha, 'LT04', recorte, umbral);
  //Los datos de ETM y ETM+ se ajustan espectrales a OLI y OLI-2 
  var L7a = L7sr.map(imp.TMaOLI);
  var L5a = L5sr.map(imp.TMaOLI);
  var L4a = L4sr.map(imp.TMaOLI);
  // Une las tres series de imágenes
  var serieT =L9sr.merge(L8sr).merge(L7a).merge(L5a).merge(L4a).sort('system:time_start');
    return serieT;
}
//SE importa la coleccion usando la funccion anterior 
var l8Sergio=ColeccionImagenSR(fecha, table, p_nubes);
//podemos imprimir las imagenes usando la funcion print() para ver 
//si se llevo a cabo el filtrado de la coleccion de imagenes (Figura 6.1) 
print (l8Sergio);

Con estas colecciones de imágenes se pueden calcular series de tiempo de diferentes índices de vegetación.

Impresion de coleccion de imagenes Landsat

Figura 6.1: Impresion de coleccion de imagenes Landsat

6.1.2 Sentinel-2

Si se desea usar imágenes Sentinel-2 corregidas atmosféricamente libre de nubes se puede usar el siguiente código.

//SE importa la coleccion usando el siguiente codigo
var S2sr = imp.ColeccionImagenSentinelSR(fecha, table, p_nubes);
//podemos imprimir las imagenes usando la funcion print() para ver 
//si se llevo a cabo el filtrado de la coleccion de imagenes (Figura 6.2)
print (S2sr);
Impresion de coleccion de imagenes Sentinel-2

Figura 6.2: Impresion de coleccion de imagenes Sentinel-2

6.1.3 Landsat y Sentinel-2

Si se desea usar imágenes LandSat y Sentinel-2 corregidas atmosféricamente libre de nubes se puede usar el siguiente código, los datos se ajustaron espectralmente a las bandas espectrales de Landsat 8. Se emplean las funciones descritas en la Sección 6.1:

function ColeccionImagenAMBOS(fecha, recorte, umbral)
{
  //Se lee la function para imagenes Landsat con ajuste espectral
  var L8Conjunto=ColeccionImagenSR(fecha, recorte, umbral)
  //coleccion sentinel
  var S2sr = imp.ColeccionImagenSentinelSR(fecha, recorte, umbral);
  var S2a = S2sr.map(imp.MSIaOLI); //Se hace el ajuste espectral de sentinel-2 a Landsat
  var serieT = S2a.merge(L8Conjunto).sort('system:time_start');
    return serieT;
}

//SE importa la coleccion usando el siguiente codigo
var S2B = ColeccionImagenAMBOS(fecha, table, p_nubes);
//podemos imprimir las imagenes usando la funcion print() para ver 
//si se llevo a cabo el filtrado de la coleccion de imagenes (Figura 6.3)
print (S2sr);
Impresion de coleccion de imagenes Landsat y Sentinel-2

Figura 6.3: Impresion de coleccion de imagenes Landsat y Sentinel-2

Para revisar un Script de ejemplo clic aquí

6.2 Indices de vegetación

Para usar el código de índices de vegetación de VICAL se tienen que usar el archivo imp2; y se mandan a llamar estos IV usando los nombres de la columna ExpresionGEE que se muestran en la Tabla 6.1.

Por ejemplo, para calcular el NDVI con la colección de imágenes LandSat y Sentinel-2 de la sección 6.1.3 se usaría el siguiente código:

//Normalized Difference Vegetation Index- NDVI
var ivs = ee.ImageCollection(S2B.map(imp2.NDVI));
//para imprimir y ver la banda de NDVI
print (ivs);
En la Figura 6.4 se muestra que en la colección de imágenes del conjunto armonizado aparece una sola banda que se llama NDVI.
Impresion de coleccion de imagenes con banda NDVI

Figura 6.4: Impresion de coleccion de imagenes con banda NDVI

Ahora, para visualizar en el mapa el NDVI de la primera imagen de la colección y recortado para la zona quedaría como se muestra en el código siguiente; donde para ver la paleta de colores se utilizaría el archivo st de ¨VICAL.

//Se obtiene el NDVI de la primera imagen en la coleccion 
var iv = ivs.first();
//Paleta de colores donde se usa el archivo st
var ivVis = {min :0, max : 1, palette : St.paletaIV};
Map.addLayer(iv.clip(table), ivVis,'NDVI'); //Indice
//se centra el mapa a la zona
 Map.centerObject(table, 13);

En la Figura 6.5. se muestra el mapa de NDVI para la zona de interés.

mapa de NDVI para el area de interes

Figura 6.5: mapa de NDVI para el area de interes

Para revisar el codigo del ejemplo clic aquí

Si se desea visualizar el NDVI de una imagen en particular se debe convertir a lista de después mandar a llamarlo.

Tabla 6.1: Codigo de indices de vegetación considerados en VICAL
Numero Indice Abreviatura ExpresionGEE Coeficientes
1 Atmospherically resistant vegetation index ARVI* ARVI γ=1.0
2 Adjusted transformed soil-adjusted vegetation index ATSAVI* ATSAVI
3 Difference vegetation index DVI DVI
4 Enhanced vegetation index EVI EVI C1=6.0, C2= 7.5; L=1.0
5 Enhanced vegetation index EVI2* EVI2 C1=2.4
6 Green normalized difference vegetation index GNDVI GNDVI
7 Modified soil adjusted vegetation index MSAVI2 MSAVI2
8 Moisture stress index MSI MSI
9 Modified triangular vegetation index MTVI MTVI
10 Modified triangular vegetation index-2 MTVI2 MTVI2
11 Normalized difference tillage index (NDTI) NDTI NDTI
12 Normalized difference vegetation index NDVI NDVI
13 Normalized difference water index NDWI NDWI
14 Optimized soil adjusted vegetation index OSAVI* OSAVI X=0.16
15 Renormalized difference vegetation index RDVI RDVI
16 Redness index RI RI
17 Ratio vegetation index RVI RVI
18 Soil adjusted vegetation index SAVI* SAVI L=0.5
19 Triangular vegetation index TVI TVI
20 Transformed soil adjusted vegetation index TSAVI* TSAVI a= 1 ; b=0;
21 Visible atmospherically resistant index VARI VARI
22 Vegetation index number or simple ratio VIN VIN
23 Wide dynamic range vegetation index WDRVI* WDRVI α=0.2