Índices Espectrais: O Guia Completo
Domine os 15+ principais índices espectrais (NDVI, EVI, NDBI, NDWI) com fórmulas, aplicações práticas e scripts prontos para monitoramento ambiental profissional.
📚 Navegação Rápida
1. Fundamentos: A Física dos Índices Espectrais
1.1 Por Que Plantas Refletem Infravermelho?
Evolução biológica: Plantas precisam absorver luz vermelha para fotossíntese, mas absorver todo infravermelho as queimaria. Então evoluíram para:
- Absorver: Luz vermelha (665 nm) ✓ Fotossíntese
- Refletir: Infravermelho próximo - NIR (842 nm) ✓ Aliviar calor
= Reflectância próxima de 80% / Absorção
= Alto = Vegetação Saudável
1.2 Estrutura Universal dos Índices
| Componente | Função | Exemplo |
|---|---|---|
| Banda A - Banda B | Destaca diferenças espectrais | B8 - B4 (NIR - Red) |
| Divisão normalizadora | Padroniza de -1 a +1 | / (B8 + B4) |
| Constantes corretoras | Eliminam ruído atmosférico | 2.5, k, L |
2. NDVI - Normalized Difference Vegetation Index
O índice mais antigo (1973) e ainda o mais usado globalmente.
Sentinel-2: B8=NIR (842nm), B4=Vermelho (665nm)
Landsat 8/9: B5=NIR, B4=Vermelho
Aplicações Principais
- ✅ Detecção de vegetação viva
- ✅ Monitoramento de desmatamento
- ✅ Análise de saúde de plantações
- ✅ Identificação de áreas degradadas
Interpretação Técnica
| NDVI | Tipo de Cobertura | Características |
|---|---|---|
| 0.8-1.0 | Floresta densa | Vegetação muito saudável, pouco solo visível |
| 0.6-0.8 | Floresta moderada | Floresta secundária, campo com vegetação boa |
| 0.4-0.6 | Pastagem/Agricultura | Plantação em desenvolvimento, pastagem ativa |
| 0.2-0.4 | Vegetação escassa | Solo com plantas esparsas, transição |
| 0.0-0.2 | Solo exposto | Sem vegetação, transição |
| < 0 | Água/Nuvem/Urbano | Corpos d'água, nuvens, asfalto |
Limitações do NDVI
❌ Sensibilidade a nuvens: Requer filtragem rigorosa
❌ Sem diferenciação de tipo: Não diferencia tipos de vegetação
Script GEE - NDVI Básico
var ndvi = imagem.normalizedDifference(['B8', 'B4'])
.rename('NDVI');
// Visualizar
Map.addLayer(ndvi,
{min: -1, max: 1, palette: ['red', 'yellow', 'green']},
'NDVI');
// Extrair valor médio
var valor_medio = ndvi.reduceRegion({
reducer: ee.Reducer.mean(),
geometry: suaRegiao,
scale: 10
});
print('NDVI Médio:', valor_medio.get('NDVI'));
3. EVI - Enhanced Vegetation Index
Versão melhorada do NDVI (1994). Sem saturação em vegetação densa.
Onde: 2.5=amplificação, 6×B4=reduz ruído, 7.5×B2=corrige aerossol
Por Que É Melhor que NDVI?
| Aspecto | NDVI | EVI | Vencedor |
|---|---|---|---|
| Floresta densa | 0.85 (saturado) | 0.75 (diferencia melhor) | EVI |
| Sensibilidade a aerossol | Alto (afetado) | Baixo (corrigido) | EVI |
| Simplicidade | Simples | Complexo | NDVI |
| Precisão geral | 80% | 92% | EVI |
Interpretação EVI
| EVI | Tipo de Vegetação |
|---|---|
| 0.7+ | Floresta primária, vegetação muito densa |
| 0.5-0.7 | Floresta secundária, culturas em desenvolvimento |
| 0.3-0.5 | Pastagem, vegetação baixa |
| <0.3 | Área degradada, sem vegetação |
4. SAVI - Soil-Adjusted Vegetation Index
Para regiões áridas e semiáridas com solo visível.
L = 0.5 (pouca vegetação), 0.3 (moderada), 0 (densa)
Quando Usar SAVI?
• Região árida/semiárida com solo visível
• Analisando degradação do solo
• Detectando desertificação
• NDVI dá valores baixos incorretos
Comparação: NDVI vs SAVI em Caatinga
| Tipo de Cobertura | NDVI | SAVI (L=0.5) | Diferença |
|---|---|---|---|
| Solo com pouco mato | 0.2 | 0.35 | +0.15 (SAVI diferencia melhor) |
| Caatinga moderada | 0.4 | 0.52 | +0.12 |
| Floresta (sem solo) | 0.8 | 0.8 | 0 (ambos retornam ao mesmo) |
5. NDBI - Normalized Difference Built-up Index
Detecta áreas urbanas e construídas automaticamente.
Onde: B11=SWIR (1610nm), B8=NIR (842nm)
Lógica: Concreto reflete SWIR, vegetação reflete NIR
Lógica Física
- Concreto, asfalto, telhas: Refletem muito SWIR
- Vegetação: Reflete muito NIR (pouco SWIR)
- Diferença (SWIR - NIR): Identifica urbano automaticamente
Interpretação NDBI
| NDBI | Significado |
|---|---|
| +0.2 a +1.0 | Áreas urbanas, construções, asfalto |
| -0.5 a +0.2 | Mistura: urbano + vegetação |
| < -0.5 | Vegetação, água |
Caso Real: Monitorar Expansão Urbana
Cenário: Prefeitura de São Paulo monitora expansão urbana ilegal
- 2020: NDBI médio = 0.10 (área rural)
- 2024: NDBI médio = 0.35 (área urbanizada)
Conclusão: Cidade expandiu 25 km² (detectável automaticamente em 5 minutos)
6. Índices de Água: NDWI, MNDWI
6.1 NDWI - Normalized Difference Water Index
Detecta água e umidade do solo
Interpretação NDWI
| NDWI | Tipo de Cobertura |
|---|---|
| +0.3 a +1.0 | Água aberta, corpos d'água |
| -0.1 a +0.3 | Solo úmido, vegetação aquática |
| -0.5 a -0.1 | Solo seco, vegetação normal |
| < -0.5 | Vegetação muito seca, asfalto |
6.2 MNDWI - Modified NDWI
Mais preciso para diferenciar água de vegetação molhada
Caso Prático: Monitorar Seca
• Janeiro (estação seca): NDWI = -0.15
• Março (pós-chuva): NDWI = +0.05
• Junho (volta à seca): NDWI = -0.20
Conclusão: Umidade varia 0.35 pontos sazonalmente (mensurável!)
7. Índices Avançados: BSI, NDMI, NBR
BSI - Bare Soil Index
Usa: Erosão, degradação, garimpo
Intervalo: -1 a +1
NDMI - Moisture Index
Usa: Stress hídrico, risco de incêndio
Intervalo: -1 a +1
NBR - Normalized Burn Ratio
Usa: Detecção de queimadas
Intervalo: -1 a +1
Detecção de Fraude: Caso Real
Análise com índices:
• NDVI em 2020: 0.3 (solo)
• NDVI em 2024: 0.35 (quase nenhuma mudança!)
• EVI: sem mudança significativa
• BSI: aumentou (mais solo exposto)
• NDBI: mudou (atividade antrópica)
✓ Conclusão: FRAUDE DETECTADA
Índices múltiplos confirmam: não há biomassa suficiente para 1000 hectares
8. Tabela Comparativa: Todos os 15 Índices
| # | Índice | Fórmula Resumida | Uso Principal | Intervalo |
|---|---|---|---|---|
| 1 | NDVI | (B8-B4)/(B8+B4) |
Vegetação geral | -1 a +1 |
| 2 | EVI | 2.5*((B8-B4)/(...)) |
Vegetação densa | -1 a +1 |
| 3 | SAVI | ((B8-B4)/(B8+B4+L))*(1+L) |
Solo árido | 0 a +1 |
| 4 | NDBI | (B11-B8)/(B11+B8) |
Urbano | -1 a +1 |
| 5 | NDWI | (B8-B11)/(B8+B11) |
Água/umidade | -1 a +1 |
| 6 | MNDWI | (B3-B11)/(B3+B11) |
Água clara | -0.5 a +0.5 |
| 7 | BSI | ((B11+B4)-(B8+B2))/(...) |
Solo exposto | -1 a +1 |
| 8 | NDMI | (B8-B11)/(B8+B11) |
Umidade/incêndio | -1 a +1 |
| 9 | ARVI | (B8-(2*B4-B2))/(B8+(...)) |
Resistente a aerossol | -1 a +1 |
| 10 | OSAVI | (B8-B4)/(B8+B4+0.16) |
SAVI otimizado | 0 a +1 |
| 11 | GNDVI | (B8-B3)/(B8+B3) |
Biomassa/Nitrogênio | -1 a +1 |
| 12 | SIPI | (B8-B2)/(B8-B4) |
Estrutura | 0 a +3 |
| 13 | RVI | B8/B4 |
Vegetação simples | 0 a +5 |
| 14 | NBR | (B8-B12)/(B8+B12) |
Queimada | -1 a +1 |
| 15 | dNBR | NBR_antes - NBR_depois |
Severidade fogo | -2 a +2 |
Matriz de Decisão: Qual Usar?
| Aplicação | Índices Recomendados | Por Quê? |
|---|---|---|
| Desmatamento | NDVI, SAVI, EVI | Detectam perda de vegetação com precisão |
| Agricultura | NDVI, EVI, GNDVI | Monitoram saúde e teor de N |
| Urbano | NDBI | Detecta construções automaticamente |
| Água | NDWI, MNDWI | Separa água de vegetação |
| Queimadas | NBR, NDMI | Dano e umidade pós-fogo |
| Carbono | EVI, NBR | Biomassa e mudanças de cobertura |
9. Scripts GEE Prontos
Script 1: Calcular Todos os 15 Índices
// TODOS OS 15 ÍNDICES - COPY & PASTE
var regiao = ee.Geometry.Rectangle([-47.5, -23.8, -46.0, -23.2]);
var s2 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
.filterBounds(regiao)
.filterDate('2024-01-01', '2024-12-31')
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
.median();
var b2 = s2.select('B2'), b3 = s2.select('B3');
var b4 = s2.select('B4'), b8 = s2.select('B8');
var b11 = s2.select('B11'), b12 = s2.select('B12');
// CALCULAR ÍNDICES
var ndvi = b8.subtract(b4).divide(b8.add(b4)).rename('NDVI');
var evi = b8.subtract(b4).divide(
b8.multiply(6).add(b4.multiply(-7.5))
.add(b2.multiply(7.5)).add(1)
).multiply(2.5).rename('EVI');
var savi = b8.subtract(b4).divide(b8.add(b4).add(0.5))
.multiply(1.5).rename('SAVI');
var ndbi = b11.subtract(b8).divide(b11.add(b8)).rename('NDBI');
var ndwi = b8.subtract(b11).divide(b8.add(b11)).rename('NDWI');
var mndwi = b3.subtract(b11).divide(b3.add(b11)).rename('MNDWI');
var bsi = b11.add(b4).subtract(b8.add(b2))
.divide(b11.add(b4).add(b8.add(b2))).rename('BSI');
var ndmi = b8.subtract(b11).divide(b8.add(b11)).rename('NDMI');
var nbr = b8.subtract(b12).divide(b8.add(b12)).rename('NBR');
var gndvi = b8.subtract(b3).divide(b8.add(b3)).rename('GNDVI');
// EXIBIR
Map.addLayer(ndvi, {min: 0.2, max: 0.9, palette: ['red', 'yellow', 'green']}, 'NDVI');
Map.addLayer(evi, {min: 0.1, max: 0.7, palette: ['red', 'yellow', 'green']}, 'EVI', false);
Map.addLayer(ndbi, {min: -1, max: 1, palette: ['green', 'gray', 'red']}, 'NDBI', false);
Map.addLayer(ndwi, {min: -1, max: 1, palette: ['red', 'white', 'blue']}, 'NDWI', false);
// ESTATÍSTICAS
var stats = ndvi.addBands(evi).addBands(savi).addBands(ndbi)
.addBands(ndwi).addBands(mndwi).addBands(bsi)
.addBands(ndmi).addBands(nbr).addBands(gndvi)
.reduceRegion({reducer: ee.Reducer.mean(), geometry: regiao, scale: 30});
print('Estatísticas:', stats);
Map.centerObject(regiao, 10);
Script 2: Monitoramento Multi-Índice de Propriedade
// VALIDAÇÃO COMPLETA DE PROPRIEDADE COM 3 ÍNDICES
var propriedade = ee.Geometry.Rectangle([-57.2, -14.8, -56.8, -14.4]);
var s2_2024 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
.filterBounds(propriedade)
.filterDate('2024-01-01', '2024-12-31')
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 15))
.median();
var b2 = s2_2024.select('B2'), b4 = s2_2024.select('B4');
var b8 = s2_2024.select('B8'), b11 = s2_2024.select('B11');
// TRÊS ÍNDICES COMPLEMENTARES
var ndvi = b8.subtract(b4).divide(b8.add(b4)).rename('NDVI');
var evi = b8.subtract(b4).divide(b8.multiply(6).add(b4.multiply(-7.5))
.add(b2.multiply(7.5)).add(1)).multiply(2.5).rename('EVI');
var savi = b8.subtract(b4).divide(b8.add(b4).add(0.5)).multiply(1.5).rename('SAVI');
// CLASSIFICAÇÃO
var floresta = ndvi.gt(0.6);
var agricola = ndvi.gt(0.4).and(ndvi.lte(0.6));
var pastagem = ndvi.gt(0.2).and(ndvi.lte(0.4));
// ESTATÍSTICAS
var stats = {
'NDVI_médio': ndvi.reduceRegion(ee.Reducer.mean(), propriedade, 30),
'EVI_médio': evi.reduceRegion(ee.Reducer.mean(), propriedade, 30),
'SAVI_médio': savi.reduceRegion(ee.Reducer.mean(), propriedade, 30),
'Floresta_ha': floresta.multiply(ee.Image.pixelArea())
.reduceRegion(ee.Reducer.sum(), propriedade, 30)
};
print('RELATÓRIO PROPRIEDADE:', stats);
// VISUALIZAR
var paleta = ['red', 'yellow', 'green'];
Map.addLayer(ndvi, {min: 0, max: 1, palette: paleta}, 'NDVI');
Map.addLayer(floresta, {palette: ['white', 'darkgreen']}, 'Floresta Detectada');
Map.centerObject(propriedade, 11);
10. Aplicações Profissionais Reais
Caso 1: Validação de Créditos de Carbono REDD+
Validação com índices:
• Baseline 2015: EVI = 0.35 (solo exposto)
• Monitoramento 2024: EVI = 0.68 (floresta em crescimento)
• Incremento: 0.33 (válido para ~17 tC/ha)
✓ Resultado: 500 hectares × 17 tC/ha = 8.500 créditos de carbono gerados
Caso 2: Detecção de Garimpo Ilegal
Indicadores de garimpo:
• NDVI caiu de 0.85 para 0.45 (queda de 0.40!)
• BSI aumentou de -0.3 para 0.4 (solo exposto)
• MNDWI instável (bacias de sedimentação)
✓ Ação: Coordenadas X,Y,Z enviadas para PF
Caso 3: Monitoramento Agrícola com Precisão
Evolução temporal:
• Semana 4: NDVI = 0.4, GNDVI = 0.35 (excelente)
• Semana 8: NDVI = 0.55, NDMI = -0.1 (STRESS!)
• Ação: Aumentar irrigação
• Resultado: Produção rescatada para 48 sc/ha

Comentários