Como calcular NDVI no Google Earth Engine — passo a passo (sem precisar instalar nada)
Por Eduardo Borges Sousa — Engenheiro Ambiental e especialista em análise geoespacial
Se você já ouviu falar em NDVI mas nunca soube exatamente como calculá-lo na prática — ou se tentou e achou o processo complicado demais — este artigo é para você.
Vou mostrar como gerar um mapa de NDVI usando o Google Earth Engine, direto no navegador, sem baixar nenhum software e sem precisar de um computador potente. Tudo que você precisa é de uma conta Google e 30 minutos de atenção.
O que é NDVI e por que ele importa?
O NDVI (Normalized Difference Vegetation Index, ou Índice de Vegetação por Diferença Normalizada) é um indicador calculado a partir de imagens de satélite que mede a saúde e a densidade da vegetação de uma área.
Os valores variam de -1 a +1, e a interpretação é simples:
- Próximo de 1 (verde escuro no mapa): vegetação densa e saudável — florestas, lavouras vigorosas
- Entre 0,2 e 0,5 (verde claro): vegetação moderada — pastagens, vegetação rala
- Próximo de 0 (amarelo): solo exposto, áreas urbanas, afloramentos rochosos
- Negativo (vermelho): água, neve, nuvens
Na prática, o NDVI serve para monitorar a saúde de lavouras, identificar áreas degradadas, acompanhar a recuperação de vegetação após desmatamento ou queimada, e detectar estresse hídrico em plantações.
Como o NDVI é calculado?
A fórmula matemática é simples:
NDVI = (NIR - RED) / (NIR + RED)
Onde:
- NIR = reflectância no infravermelho próximo (banda que vegetação saudável reflete muito)
- RED = reflectância no vermelho visível (banda que vegetação saudável absorve para fotossíntese)
Vegetação saudável reflete muito infravermelho e absorve muito vermelho. Por isso, quanto maior o NDVI, mais saudável a vegetação. Os satélites Landsat e Sentinel captam essas bandas — e o GEE as disponibiliza para qualquer região do mundo.
Passo 1 — Criar sua conta no Google Earth Engine
Se você ainda não tem acesso ao GEE, o primeiro passo é criar um projeto em earthengine.google.com. Use sua conta Gmail, clique em "Get Started" e siga as instruções. O acesso para uso não comercial é aprovado rapidamente.
Após a aprovação, acesse o Code Editor em: code.earthengine.google.com
Você verá uma tela dividida em quatro áreas:
- Esquerda: seus scripts salvos e assets
- Centro: editor de código (onde você escreve o script)
- Direita: console de resultados e tarefas
- Baixo: mapa interativo
Passo 2 — Escolher a área de interesse
Antes de escrever o código, você precisa definir a área que quer analisar. No GEE, isso se chama área de interesse ou region of interest (ROI).
A forma mais simples para iniciantes é usar as ferramentas de desenho do mapa (ícones de polígono e retângulo na parte superior do mapa). Navegue até a região que você quer analisar, desenhe um polígono e o GEE criará automaticamente uma variável chamada geometry.
Para este tutorial, vamos usar uma área genérica — você pode adaptar para qualquer região do Brasil.
Passo 3 — O código completo (com explicação linha a linha)
Cole o código abaixo no editor do GEE e clique em Run:
// 1. Definir a área de interesse
// (substitua pelas coordenadas da sua região ou use o polígono desenhado no mapa)
var areaDeInteresse = ee.Geometry.Rectangle([-47.5, -15.5, -47.0, -15.0]);
// 2. Carregar a coleção de imagens Sentinel-2
// Sentinel-2 tem resolução de 10 metros — ótimo para análise detalhada
var colecao = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
.filterBounds(areaDeInteresse) // filtrar pela área de interesse
.filterDate('2023-06-01', '2023-09-30') // período da análise (ajuste conforme necessário)
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20)); // menos de 20% de nuvens
// 3. Criar uma imagem composta (mediana do período)
// A mediana reduz o efeito de nuvens e sombras residuais
var imagem = colecao.median().clip(areaDeInteresse);
// 4. Calcular o NDVI
// No Sentinel-2: NIR = Banda B8, RED = Banda B4
var ndvi = imagem.normalizedDifference(['B8', 'B4']).rename('NDVI');
// 5. Definir a paleta de cores para visualização
var paleta = {
min: -0.2,
max: 0.8,
palette: ['#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf',
'#d9ef8b', '#a6d96a', '#66bd63', '#1a9850']
};
// 6. Adicionar o mapa de NDVI como camada
Map.centerObject(areaDeInteresse, 10);
Map.addLayer(ndvi, paleta, 'NDVI');
// 7. Adicionar a imagem RGB para comparação
Map.addLayer(imagem, {bands: ['B4', 'B3', 'B2'], min: 0, max: 3000}, 'Imagem RGB');
// 8. Mostrar estatísticas no console
var stats = ndvi.reduceRegion({
reducer: ee.Reducer.mean(),
geometry: areaDeInteresse,
scale: 10,
maxPixels: 1e9
});
print('NDVI médio da área:', stats);
Passo 4 — Interpretando o resultado
Após clicar em Run, o mapa vai colorir a sua área de interesse com as cores do NDVI. No painel direito (Console), você verá o valor médio do NDVI para toda a região.
O que observar:
- Áreas verdes escuras: vegetação densa e saudável — florestas nativas, lavouras bem estabelecidas
- Áreas amareladas: vegetação em estresse, solo exposto ou área urbana
- Áreas avermelhadas ou negativas: água, áreas queimadas recentemente ou nuvens residuais
Compare a camada NDVI com a imagem RGB para entender o que cada cor representa na realidade do terreno.
Passo 5 — Exportar o mapa para o Google Drive
Para usar o mapa nos seus relatórios, você pode exportá-lo como imagem GeoTIFF. Adicione este código ao final do script:
// Exportar o NDVI para o Google Drive
Export.image.toDrive({
image: ndvi,
description: 'NDVI_minha_area_2023',
folder: 'GEE_Exportacoes',
region: areaDeInteresse,
scale: 10,
crs: 'EPSG:4326',
maxPixels: 1e9
});
Clique em Run novamente e vá até a aba Tasks (lado direito). Clique em Run ao lado da tarefa criada para iniciar a exportação. O arquivo aparecerá no seu Google Drive em poucos minutos.
Adaptando para o seu contexto
O código acima é um ponto de partida. Você pode adaptá-lo facilmente:
- Mudar o período: altere as datas em
filterDate para analisar diferentes safras ou estações
- Mudar o satélite: substitua
COPERNICUS/S2_SR_HARMONIZED por LANDSAT/LC08/C02/T1_L2 para usar Landsat 8 (bandas NIR e RED são B5 e B4, respectivamente)
- Usar sua área real: desenhe o polígono no mapa antes de rodar o script e substitua
areaDeInteresse por geometry
- Comparar dois períodos: calcule o NDVI para dois períodos diferentes e subtraia um do outro para ver as mudanças
Erros comuns e como resolver
"Image.normalizedDifference: No band 'B8'"
Isso acontece quando a coleção está vazia — geralmente porque não há imagens com menos de 20% de nuvens no período. Aumente o filtro para 30% ou mude as datas.
Mapa aparece todo preto ou branco
Ajuste os valores de min e max na paleta de cores. Se sua área for muito árida, use min: -0.1 e max: 0.5.
Demora muito para carregar
Reduza a área de interesse ou aumente o valor de scale de 10 para 30 (resolução menor, mas mais rápido).
O que você pode fazer com isso agora
Com esse script funcionando, você já tem uma habilidade de valor real. Algumas aplicações imediatas:
- Gerar mapas de vegetação para propriedades rurais próximas
- Comparar o NDVI antes e depois de uma queimada ou desmatamento
- Monitorar a recuperação de uma área de restauração ecológica
- Criar um relatório visual simples para um produtor rural ou consultoria ambiental
No próximo artigo, vou mostrar como usar esse mesmo tipo de análise para verificar a conformidade ambiental de propriedades rurais com dados do CAR — uma aplicação com altíssima demanda no mercado brasileiro.
Alguma dúvida no código? Deixe nos comentários — respondo todas as perguntas. Se você rodou o script e gerou seu primeiro mapa de NDVI, me conta como foi!
Eduardo Borges Sousa é Engenheiro Ambiental documentando a aplicação prática do Google Earth Engine para análise ambiental e geotecnologia no Brasil.
Comentários