í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