Este documento apresenta uma introdução ao uso de dados de sensoriamento remoto no ambiente R para estudos ambientais. Ele descreve fontes de imagens de satélite como Landsat e MODIS, técnicas de manipulação e visualização de imagens, índices espectrais e classificação espectral. Além disso, fornece links para tutoriais e materiais de apoio.
1. Sensoriamento
Remoto em R
Ângela Terumi Fushita
Vitor Vieira Vasconcelos
Introdução ao uso de dados espaciais para estudos ambientais
Programa de Pós-Graduação em Ciência e Tecnologia Ambiental
Universidade Federal do ABC
Março, 2019
Santo André - SP
3. Conteúdo
•Fontes de imagens de satélite
•Manipulação e visualização de imagens
•Índices espectrais e transformações
•Classificação espectral
4. Materiais de aula disponíveis em:
Baixar os dados em: D:/R_CTA/aula6/
https://yadi.sk/d/zy-M4wQdLs4RhQ
5. Livro de Referência
Wegmann, Martin, Benjamin Leutner, and
Stefan Dech, eds. Remote sensing and
GIS for ecologists: using open source
software. Pelagic Publishing Ltd, 2016.
●
PDF:
https://yadi.sk/d/Omaep6aBocRdwg
●
Site de apoio:
http://book.ecosens.org/
●
Conteúdo de referência:
– Vetorização (QGis)
– Álgebra de mapas (R)
– Sensoriamento remoto (R)
– Modelagem de distribuição de
espécies (R)
27. Satélite MODIS
com correção atmosférica
●
Resolução temporal:
Diário
Composto de 8 dias
●
Resolução espacial:
250m (2 bandas)
500m (7 bandas)
1km (3 bandas termais)
●
Produtos derivados
Uso e cobertura da terra
Índices de Vegetação
Terra
Aqua
28. Satélite MODIS
com correção atmosférica
●
Combinação Terra + Aqua
●
Resolução temporal: diário
●
Resolução Espacial
500m (7 bandas)
1km (12 bandas)
29. Satélites Sentinel
●
Sentinel 1 – Radar
– A partir de 2014
– GRD – Ground Range Detected
– Resoluções: 9m (SM), 20m (IW) e 50m (EW)
●
Sentinel 2 – Passivo
– A partir de 2015
– S2MSI2A e S2MSI2Ap
– Ortorretificação
– Correção atmosférica
30. Usos do Radar
●
Imagens em dias com nuvens
http://www.riice.org/how-riice-works/earth-observation-data-collection/
31. Usos do Radar
Imagens em dias com nuvens
Sentinel 1 Landsat 8
Sumatra (Indonésia), 2015
https://blog.conservation.org/2016/03/cloud-piercing-satellites-unleash-torrent-of-new-data-new-insights-into-planet-earth/
32. Usos do Radar
●
Detecção de áreas alagadas
– Espelho d’água reflete sinal
http://www.un-spider.org/book/export/html/7322
Imagemantes
dainundação
Imagemdurante
ainundação
33. Usos do Radar
Detecção de movimentos na superfície
Terremotos Movimentos de massa
Perugia (Itália), 30 out. 2016 Maoxian (China), 2014-2017
Intrieri, E.,et al.., 2018. The Maoxian landslide as seen from space: detecting precursors of failure with Sentinel-1 data. Landslides, 15(1), pp.123-133.
Polcari, M., et al. 2017. Using multi-band InSAR data for detecting local deformation phenomena induced by the 2016–2017 Central Italy seismic sequence
Remote Sensing of Environment, 201, pp.234-242.
34. Usos do Radar
Detecção de movimentos na superfície
Cabral-Cano, E., Dixon, T.H., Miralles-Wilhelm, F., Díaz-Molina, O., Sánchez-Zamora, O. and Carande, R.E., 2008. Space geodetic
imaging of rapid ground subsidence in Mexico City. Geological Society of America Bulletin, 120(11-12), pp.1556-1566.
Taxa de subidência na Cidade do México
35. Usos do Radar
●
Características geométricas e físicas dos
objetos
– Estruturas de folhas e galhos
– Altura e biomassa de florestas
Fernandez-Ordonez, Y., Soria-Ruiz, J. and Leblon, B., 2009. Forest inventory using optica
and radar remote sensing. In Advances in Geoscience and Remote Sensing. InTech.
36. Usos do Radar
●
Características geométricas e físicas dos
objetos
https://www.nasa.gov/topics/earth/features/forest20120217.html
51. ●
Criar um novo script de
programação
●
Abrir o script aula6.R
52. ●
Configurar o diretório de trabalho
●
Exemplo de código:
setwd("D:/R_CTA/aula6")
●
Confirmando o diretório de trabalho
getwd()
53. ●
É sempre recomendável verificar
atualizações nos pacotes instalados antes
de começar a trabalhar
Comando:
update.packages(ask=FALSE)
54. Interpretação de
Imagens de Satélite
Estes, J.E., Hajic, E.J. and Tinney, L.R., 1983. Fundamentals of image analysis: Analysis of visible
and thermal infrared data. Manual of remote sensing, 1, pp.987-1124.
Elementos Básicos Primário
Secundário
Terciário
Superior
Tom/Cor
Tamanho Forma Textura
Padrão Elevação Sombra
Local Associação
Arranjo espacial
dos tons/cores
Grau de
complexidade
65. Exercício 2: Importar as imagens Landsat 5 de 1986 e
visualizar em RGB de cor natural
https://landsat.usgs.gov/what-are-band-designations-landsat-satellites
Bandas Comprimento de
Onda (μm)
Resolução
(m)
1 – Azul 0.45-0.52 30
2 – Verde 0.52-0.60 30
3 - Vermelho 0.63-0.69 30
4 – Infravermelho
Próximo (NIR) 0.76-0.90 30
5 - Infravermelho de
ondas curtas (SWIR) 1 1.55-1.75 30
6 - Termal 10.40-12.50 120* (30)
7 - Infravermelho de
ondas curtas (SWIR) 2 2.08-2.35 30
66. Importar e visualizar a área de interesse
mun_abc <- read_sf("mun_abc.shp")
st_crs(mun_abc)
crs(landsat_2018_abc)
wgs84utm <-as.character(crs(landsat_2018_abc))
mun_abc_wgs84 <- st_transform(mun_abc, wgs84utm)
st_crs(mun_abc_wgs84)
67. Importar e visualizar a área de interesse
plotRGB(landsat_2018_abc, r=4, g=3, b=2, axes=TRUE, stretch="lin")
plot(st_geometry(mun_abc_wgs84), add=TRUE, border="yellow")
68. Zoom para a área de interesse
plotRGB(landsat_2018_abc, r=4, g=3, b=2, axes=TRUE,
stretch="lin", ext=extent(mun_abc_wgs84))
69. Recortar a extensão para a área de interesse
landsat_2018_abc_crop <- crop(landsat_2018_abc, mun_abc_wgs84)
plotRGB(landsat_2018_abc_crop, r=4, g=3, b=2, stretch="lin")
70. Mascarar pixels fora da área de interesse
landsat_2018_abc_mask <- mask(landsat_2018_abc_crop, mun_abc_wgs84)
object.size(landsat_2018_abc_crop)
object.size(landsat_2018_abc_mask)
writeRaster(landsat_2018_abc_mask, "landsat_2018_abc_mask.tif")
landsat_2018_abc_mask2 <- stack("landsat_2018_abc_mask.tif")
object.size(landsat_2018_abc_mask2)
rm(landsat_2018_abc_mask)
Boa prática de remover arquivos intermediários da memória
RasterBrick
RasterStack
79. Difference Vegetation Index Normalised Difference Water Index 2
Diferença Interna da Vegetação
Richardson, A.J., and C.L. Wiegand, 1977. Distinguishing Vegetation From Soil Background Information, Photogramnetric
Engineeringand Remote Sensing, 43(12):1541-1552
Gao, B. C. (1996). NDWI—A normalized difference water index for remote sensing of vegetation liquid water from space.
Remote sensing of environment, 58(3), 257-266.
plot(indices,c("DVI", "NDWI2","MNDWI","NBRI"))
80. Modified Normalised Difference Water Index Normalised Burn Ratio Index
Xu, H. (2006). Modification of normalised difference water index (NDWI) to enhance open water features in remotely
sensed imagery. International journal of remote sensing, 27(14), 3025-3033.
Lopez-Garcia, M. & Caselles, V. (1991). Mapping burns and natural reforestation using
853 Thematic Mapper data. Geocarto International, 6, 31-37
Mapeamento de extensão e
profundidade do espelho d’água Monitoramento de queimadas
81. Análise de Componentes Principais
●
Resume a informação de várias bandas
landsat_2018_pca <- rasterPCA(landsat_2018_abc_mask2)
screeplot(landsat_2018_pca$model)
82. Análise de Componentes Principais
summary(landsat_2018_pca$model)
plotRGB(landsat_2018_pca$map, r=1, g=2, b=3, stretch="lin")
83. Tasseled Cap
●
Resume a informação de 6 bandas em 3
indicadores de vegetação:
– Brilho
– Grau de verde (vegetação fotossinteticamente ativa)
– Grau de amarelo (umidade do solo + matéria seca)
https://slideplayer.com/slide/9808448/
86. Comparação dos modos de
visualização RGB
Método de
visualização
RGB
Informação
Interpretação
física
Comparação
temporal
Bandas
separadas
3 bandas Direta Melhor
Análise de
componentes
principais
Máxima
(todas as
bandas)
Não permite Pior
Tasseled Cap
Alta
(6 bandas)
Indireta Boa
Vasconcelos, V. V., Hadad, R. M., & Junior, P. P. M. (2014). Mapeamento e análise da dinâmica de ocupação na
bacia de Entre-Ribeiros–MG, nos anos de 1975, 1989 e 2008. Revista Equador, 2(2), 131-152.
87. Análise de Textura com Filtros Focais
MADDEN, M. 2009. Manual of Geographic Information Systems, American Society for Photogrammetry, Bethesda, Maryland, USA
Também chamados de: Moving Window, Sieve
88. Janela circular de 500 metros
Não rodar! Demora muito!
janela = focalWeight(b8_mask2, 500, type = "circle")
textura <- focal(b8_mask2, w=janela, fun = var)
plot(textura)
Função de variância
dentro da janela
94. Correção de Iluminação Topográfica
Imagem Original Modelo de Elevação Digital
Imagem com correção de
iluminação topográfica
Shepherd, J. D., & Dymond, J. R. (2003). Correcting
satellite imagery for the variance of reflectance and
illumination with topography. International Journal of
Remote Sensing, 24(17), 3503-3514.
95. Correção de iluminação topográfica
srtm_abc <- raster("srtm_abc.tif")
crs(srtm_abc)
crs(landsat_2018_abc_mask2)
●
Importando e configurando o modelo de elevação digital
srtm_abc_utm <- projectRaster(srtm_abc, crs = crs(landsat_2018_abc_mask2))
srtm_abc_resampled <- resample(srtm_abc_utm, landsat_2018_abc_mask2)
plot(srtm_abc_resampled)
97. Correção de iluminação topográfica
landsat_2018_abc_topcor <- topCor(landsat_2018_abc_mask2,
dem = srtm_abc_resampled, metaData = meta_2018, method="C")
plotRGB(landsat_2018_abc_topcor, r=3, g=2, b=1, stretch="lin")
Método C costuma
apresentar os melhores
resultados na literatura
Riano et al. (2003) Assessment of different topographic
correction in Landsat-TM data for mapping vegetation
types. IEEE Transactions on Geoscience and Remote
Sensing.
101. Histogram Matching para Mosaico
https://trac.osgeo.org/ossim/wiki/histogram_operations
Mosaico sem Histogram Matching Mosaico com Histogram Matching
102. ●
Abrir as bandas da baixada santista de 2018
## ultra azul
d1 <- raster('landsat_2018_baixada/LC08_L1TP_219077_20180510_20180517_01_T1_sr_band1.tif')
## azul
d2 <- raster('landsat_2018_baixada/LC08_L1TP_219077_20180510_20180517_01_T1_sr_band2.tif')
## verde
d3 <- raster('landsat_2018_baixada/LC08_L1TP_219077_20180510_20180517_01_T1_sr_band3.tif')
## vermelho
d4 <- raster('landsat_2018_baixada/LC08_L1TP_219077_20180510_20180517_01_T1_sr_band4.tif')
## infravermelho proximo
d5 <- raster('landsat_2018_baixada/LC08_L1TP_219077_20180510_20180517_01_T1_sr_band5.tif')
## infravermelho de ondas curtas 1
d6 <- raster('landsat_2018_baixada/LC08_L1TP_219077_20180510_20180517_01_T1_sr_band6.tif')
## infravermelho de ondas curtas 2
d7 <- raster('landsat_2018_baixada/LC08_L1TP_219077_20180510_20180517_01_T1_sr_band7.tif')
#ajunta as camadas em um arquivo
landsat_2018_baixada <- stack(d1,d2,d3,d4,d5,d6,d7)
plotRGB(landsat_2018_baixada, r=3, g=2, b=1, axes=TRUE, stretch="lin")
105. Não rodar! Demora muito!
landsat_2018_merge <- merge(landsat_2018_baixada, landsat_2018_abc)
plotRGB(landsat_2018_merge, r=3, g=2, b=1, stretch="lin")
A 2ª imagem
sobrepõe a 1ª
106. Exercício 4
A – Importar, recortar e mascarar a imagem de 1985
da baixada santista para o ABC
B - Fazer ajuste de histograma e mosaicagem das
duas imagens de satélite de 1985 e 1986
C - Gerar um índice NDVI para a imagem mosaicada
de 1985/6
D - Fazer a subtração entre o NDVI de 1985/6 e 2018
107. A – Importar, recortar e mascarar a imagem de
1985 da baixada santista para o ABC
# Abrir bandas landsat
## azul
e1 <- raster('landsat_1985_baixada/LT05_L1TP_219077_19850616_20170219_01_T1_sr_band1.tif')
## verde
e2 <- raster('landsat_1985_baixada/LT05_L1TP_219077_19850616_20170219_01_T1_sr_band2.tif')
## vermelho
e3 <- raster('landsat_1985_baixada/LT05_L1TP_219077_19850616_20170219_01_T1_sr_band3.tif')
## infravermelho proximo
e4 <- raster('landsat_1985_baixada/LT05_L1TP_219077_19850616_20170219_01_T1_sr_band4.tif')
## infravermelho de ondas curtas 1
e5 <- raster('landsat_1985_baixada/LT05_L1TP_219077_19850616_20170219_01_T1_sr_band5.tif')
## infravermelho de ondas curtas 2
e7 <- raster('landsat_1985_baixada/LT05_L1TP_219077_19850616_20170219_01_T1_sr_band7.tif')
# ajunta as camadas em um arquivo
landsat_1985_baixada <- stack(e1,e2,e3,e4,e5,e7)
108. A – Importar, recortar e mascarar a imagem de
1985 da baixada santista para o ABC
plotRGB(landsat_1985_baixada, r=3, g=2, b=1, axes=TRUE, stretch="lin")
109. A – Importar, recortar e mascarar a imagem de
1985 da baixada santista para o ABC
landsat_1985_baixada_crop <- crop(landsat_1985_baixada, mun_abc_wgs84)
landsat_1985_baixada_mask <- mask(landsat_1985_baixada_crop, mun_abc_wgs84)
writeRaster(landsat_1985_baixada_mask, "landsat_1986_baixada_mask.tif", overwrite=TRUE)
landsat_1985_baixada_mask2 <- stack("landsat_1986_baixada_mask.tif")
rm(landsat_1985_baixada_mask)
plotRGB(landsat_1985_baixada_mask2, r=3, g=2, b=1, stretch="lin")
110. Exercício 4
A – Importar, recortar e mascarar a imagem de 1985
da baixada santista para o ABC (já feito)
B - Fazer ajuste de histograma e mosaicagem das
duas imagens de satélite de 1985 e 1986
C - Gerar um índice NDVI para a imagem mosaicada
de 1985/6
D - Fazer a subtração entre o NDVI de 1985/6 e 2018
111. Conteúdo
•Fontes de imagens de satélite
•Manipulação e visualização de imagens
•Índices espectrais e transformações
•Classificação espectral
114. Classificação não supervisionada
Procura similaridade entre os pixels
Wegmann, Martin, Benjamin Leutner, and Stefan Dech, eds. Remote sensing and GIS for
ecologists: using open source software. Pelagic Publishing Ltd, 2016.
118. Classificação não supervisionada
landsat_2018_abc_cluster <-
unsuperClass(landsat_2018_abc_mask2, nClasses=3, norm=TRUE)
plot(landsat_2018_abc_cluster$map, col=rainbow(3))
Normaliza os valores
das bandas para
cada uma ter a
mesma importancia
119. Classificação supervisionada
Wegmann, Martin, Benjamin Leutner, and Stefan Dech, eds. Remote sensing and GIS for
ecologists: using open source software. Pelagic Publishing Ltd, 2016.
122. Classificação supervisionada
●
Receita de bolo padrão
– Visível
– Infravermelho
●
Receita para exploração
– Visível
– Infravermelho
– Termal
– Pancromática
– Imagens de estações do ano diferentes
– Radar
– Luz noturna
– Índices espectrais
– Índices de textura
– Índices morfométricos (altura, declividade, curvatura,…)
– Rasters climáticos (temperatura, pluviosidade, …)
– Rasters socioeconômicos
Big
Data
123. Classificação supervisionada
●
Importar os polígonos classificados
landsat_2018_treino <- shapefile("landsat_2018_treino.shp")
plotRGB(landsat_2018_abc_mask2, r=3, g=2, b=1, stretch="lin")
paleta<-c("red","blue","green")
plot(landsat_2018_treino, col=paleta[landsat_2018_treino$classe],
add=TRUE)
Formato sp,
e não sf
124. Assinatura espectral
●
Transformar o shapefile em raster
landsat_2018_rasterize <- rasterize(landsat_2018_treino,
landsat_2018_abc_mask2, field = "classe")
plot(landsat_2018_rasterize, col=c("red","blue","green"))
125. Assinatura espectral
●
Estatística zonal da reflectância média das
bandas em cada classe de uso do solo
landsat_2018_zonal <- zonal(landsat_2018_abc_mask2,
landsat_2018_rasterize, fun="mean", na.rm=TRUE)
View(landsat_2018_zonal)
Fonte das informações
Classes sumarizadas Dado
sumarizado:
média
Não usar
pixels de
valor nulo
127. Assinatura espectral
●
Gráfico com a assinatura espectral
plot(0, ylim=c(0,2500), xlim = c(1,7), type='n', xlab="Bandas", ylab = "Reflectancia")
lines(assinatura[,1], col="red", lwd=3)
lines(assinatura[,2], col="blue", lwd=3)
lines(assinatura[,3], col="green", lwd=3)
legend("topleft", legend = c("Urbano","Agua","Vegetacao"), col=paleta, lty=1, lwd=3)
“plot” começa criando um gráfico vazio (type=”n”)
Limites dos eixos Y e X Título dos eixos Y e X
Insere linhas no gráfico
coluna na
tabela
assinatura
cor largura
Local
no
gráfico
Insere a legenda
Texto da legenda
cor largura
Tipo
de linha
1 = contínua
128.
129. Classificação supervisionada
●
Importando polígonos de validação
val <- shapefile("landsat_2018_validation.shp")
plotRGB(landsat_2018_abc_mask2, r=3, g=2, b=1, stretch="lin")
plot(val, col=paleta[val$classe], add=TRUE)
134. Filtro focal de maioria
https://gisgeography.com/map-algebra-global-zonal-focal-local/
Cada pixel recebe o valor mais frequente entre os seus 8 vizinhos
135. Filtro focal de maioria
Original Após filtro de maioria
https://www.slideshare.net/polylsgiedx/remote-sensing-lec-11
136. Filtro focal de maioria
landsat_2018_limpo <- focal(landsat_2018_supervisionado$map,
matrix(1,3,3), fun = modal)
Imagem a ser limpa
Janela de
3X3 pixels
Função de
moda
(maioria)
137. Filtro focal de maioria
plot(landsat_2018_limpo, col=paleta2)
Original Após filtro de maioria
138. Exercício 5
●
Faça uma classificação supervisionada
sobre a imagem mosaicada para o ABC
paulista de 1985-6, incluindo a validação.
Grave os resultados da validação e o
mapa com o resultado da classificação.