índices espectrais
O contraste entre a reflectância da vegetação no infravermelho próximo e no vermelho é alto. A clorofila na folha é responsável por uma alta taxa de absorção no vermelho, enquanto que a superfície da folha  reflete muito no infravermelho próximo. 
  Com base nestes fatos, foram propostos índices de vegetação para salientar a presença e a saúde da vegetação. Nesta aula, você deverá calcular os índices de vegetação:
 Diferença simples 
Aplicando-se o conceito de contraste a estas duas bandas obtêm-se  índice de vegetação por diferença Normalizada ou Normalized Difference Vegetation Index - NDVI, que varia entre  -1 a +1. 
Valores altos do NDVI correspondem a vegetacao sadia e densa enquanto valores pequenos mostram vegetação seca, sob estresse, ou pouco densa.
O EVI, enhanced vegetation index, que inclui as duas faixas de absorção da clorofila na região do visível (RED e BLUE). C1, C2 são coeficientes para cada banda, X um fator de ajuste associado ao fundo and G um ganho ou fator de escala.
NDVI no e.e.
Bem, agora, usando o e.e. e a imagem da Ilha do Mel/Paranaguá da primeira aula...vamos calcular uns dois índices de vegetação e tentar responder às seguintes questões: Primeiro, defina uma área de interesse no mapa. Delimite um retângulo com o mouse. use a opção disponível no lado superior esquerdo do mapa.
OK. Agora, vamos ler nossa imagem Landsat. Você já sabe fazer isto...
// ler imagem Landsat 8, como na 1a aula...
var image = ee.Image('LANDSAT/LC08/C01/T1/LC08_220078_20210525');
// Selecionar as bandas que deseja visualizar E alguns parâmetros:
var vizParams = {bands: ['B6', 'B5', 'B4'], min: 5000, max: 20000, gamma: 1.3};
// Desloque o display ao ponto selecionado (voo). TEM QUE TER O RETANGULO para definir geometry
Map.centerObject(geometry, 12);
// Ajustar a área de trabalho ao recorte selecionado e transformar em float.
var recorte = image.clip(geometry);
var recorte = recorte.toFloat()
// Adicionar ao mapa como camada
Map.addLayer(recorte , {bands: ['B6', 'B5', 'B4'], min: 5000, max: 20000}, "recorte", false);
para visualizar a imagem usaremos uma paleta de cores entre amaterloe verde, porém você pode escolher as cores. Verde=vegetação sadia (valores altos). Tente mudar os valores minimo e máximo do display.
var nir = image.select('B5');
var red = image.select('B4');
var di = nir.subtract(red);
// valor minimo e maximo
var minReducer = ee.Reducer.min();
var theMin = di.reduceRegion(minReducer, geometry);
var maxReducer = ee.Reducer.max();
var theMax = di.reduceRegion(maxReducer, geometry);
print(theMin, theMax);
visualizar usando uma paleta de cores entre amarelo e verde
var vi = di.clip(geometry);
Map.addLayer(vi, {min: -1000, max: 10000, palette: ['black', 'yellow', 'green']}, 'continuous VI',false);
 NDVI
Agora vamos ao NDVI. Como já selecionamos as bandas, agora usaremos uma maneira parecida de efetuar a operação de adição e depois a divisão. com  add e  divide.
var ndvi = nir.subtract(red).divide(nir.add(red));
var ndvi = ndvi.clip(geometry);
// valor minimo e maximo
var minReducer = ee.Reducer.min();
var theMin = ndvi.reduceRegion(minReducer, geometry);
var maxReducer = ee.Reducer.max();
var theMax = ndvi.reduceRegion(maxReducer, geometry);
print(theMin, theMax);
 // Adicionar ao mapa
Map.addLayer(ndvi, {min: 0, max: 0.6, palette: ['black', 'yellow', 'green']}, 'continuous NDVI',false);
Analise as imagens
Compare as duas imagens calculadas, VI e NDVI.
- Como aparecem as áreas de vegetação sadia, por exemplo a vegetação densa, nestas imagens?
- Poderia usar este resultado para separar a vegetação de outros tipos de cobertura?
- Poderia separar diferentes tipos de vegetação?
- Em qual deles poderia identificar vegetação seca/sadia? Ou não é possível ver isso nessa região?
NDVI
Agora se concentre noa imagem do NDVI. Se quiser, altere os valores do display min/max para poder ver melhor esta imagem. Com ajuda do Inspector leia os valores digitais do NDVI para as seguintes coberturas, e calcule a média de cada classe.| Objeto | Pixel 1 | Pixel 2 | Pixel 3 | Média | 
| água | ||||
| Areia | ||||
| área urbana | ||||
| Solo úmido | ||||
| Solo exposto seco | ||||
| Vegetação densa | ||||
| Manguezal | ||||
| Restinga | 
Fatiamento
Finalmente, podemos tentar dividir a imagem do índice NDVI em faixas. Você poderia escolher valores minimo e maximo para separar:| alvo | min | max | 
| Água | ||
| Solu/Urbano | ||
| Vegetação menos densa | ||
| Vegetação densa | 
var ndvi2 = ee.Image(1)
.where(ndvi.gt(0.0).and(ndvi.lte(0.2)), 2)
.where(ndvi.gt(0.2).and(ndvi.lte(0.4)), 3)
.where(ndvi.gt(0.4).and(ndvi.lte(0.6)), 4)
.where(ndvi.gt(0.6), 5)
var ndvi2 = ndvi2.clip(geometry);
Map.addLayer(ndvi2, {min: 1, max: 5, palette: ['#654321','#FFA500','#FFFF00', '#00FF00', '#008000']}, 'NDVI fatiado',true);
Finalmente, sabia que existe uma função pronta para o cálculo do NDVI no e.e.?
Avaliação
Responda- É possível diferenciar vegetação de outros alvos usando um índice de vegetação?
- Como aparece a vegetação mais densa ou sadia em relação àquela mais seca/rala?
- Por que a água aparece tão escura no NDVI?
- Como apareceriam nuvens no NDVI?
- O que ocorreria com o NDVI da vegetação se o teor de clorofila na folha diminuir?
- O NDVI pode ser usado para monitorar a umidade dos solos?
- O conceito do NDVI poderia ser estendido para se obter outro índice? qual? como?
- Poderia usar o verde em lugar do vermelho, para calcular o NDVI?
Jorge Centeno: centeno@ufpr.br