Estoy tratando de calcular el Red-edge NDVI ((NIR - borde rojo)/(NIR + borde rojo)) de una Image.Collection en Google Earth Engine. Hay una función incorporada para NDVI pero no para Red-edge NDVI. El código que tengo está abajo pero recibo el mensaje de error "image.NIR no está definido". Estoy seguro de que se trata de un simple problema de sintaxis relacionado con la función pero he intentado todo lo que se me ocurre y simplemente no logro que funcione.
¿Puedes decirme qué estoy olvidando?
/**
* Función para enmascarar nubes usando la banda QA de Sentinel-2
* @param {ee.Image} image Imagen de Sentinel-2
* @return {ee.Image} Imagen de Sentinel-2 con máscara de nubes
*/
function maskS2clouds(image) {
var qa = image.select('QA60');
// Los bits 10 y 11 son nubes y cirros, respectivamente.
var cloudBitMask = 1 << 10;
var cirrusBitMask = 1 << 11;
// Ambas banderas deben estar en cero, indicando condiciones claras.
var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
.and(qa.bitwiseAnd(cirrusBitMask).eq(0));
return image.updateMask(mask)
.divide(10000);
}
// Cargar datos de reflectancia TOA de Sentinel-2.
var S2 = ee.ImageCollection('COPERNICUS/S2')
.filterDate('2017-06-01', '2017-09-30')
// Pre-filtrar para obtener granulos menos nublados.
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
//Seleccionar solo bandas requeridas
.select('B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B8A', 'QA60')
//Aplicar máscara de nubes
.map(maskS2clouds);
//Crear variables de bandas
var redEdge = S2.select('B5');
var NIR = S2.select('B8');
//Función para calcular redEdgeNDVI
var add_reNDVI = function(image){
var redEdgeNDVI = image.NIR.subtract(redEdge).divide(NIR.add(redEdge)).rename('reNDVI');
return image.addBands(reNDVI);
};