Neste post, vamos explorar como processar imagens no Google Earth Engine utilizando Python. O Google Earth Engine é uma plataforma poderosa para a análise de dados geoespaciais em larga escala, fornecendo acesso a uma vasta coleção de dados e ferramentas de processamento. Vamos criar um exemplo prático para ilustrar o processo.
Sumário
Por que Usar o Google Earth Engine para Processar Imagens?
O Google Earth Engine oferece uma infraestrutura robusta para o processamento e análise de grandes volumes de dados geoespaciais. Ele permite acessar e processar imagens de satélite, dados climáticos, e muitos outros tipos de dados geoespaciais de maneira eficiente.
Trabalhando com Dados no Google Earth Engine
Instalando e Autenticando o Google Earth Engine
Primeiro, vamos instalar e autenticar o Google Earth Engine:
# Processar Imagens no Google Earth Engine
# Instalando o pacote Earth Engine
!pip install earthengine-api
# Importando o pacote Earth Engine
import ee
# Autenticando o Earth Engine
ee.Authenticate()
ee.Initialize()
Carregando Imagens de Satélite para Processar Imagens no Google Earth Engine
Vamos carregar uma coleção de imagens de satélite do Landsat 8:
# Processar Imagens no Google Earth Engine
# Carregando a coleção de imagens do Landsat 8
landsat_collection = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
Filtrando Imagens por Data e Localização
Vamos filtrar as imagens para uma área e período específicos:
# Processar Imagens no Google Earth Engine
# Definindo as coordenadas da área de interesse
area_of_interest = ee.Geometry.Rectangle([-122.45, 37.74, -122.4, 37.8])
# Filtrando a coleção de imagens por data e localização
filtered_collection = landsat_collection.filterDate('2020-01-01', '2020-12-31').filterBounds(area_of_interest)
Calculando o Índice de Vegetação por Diferença Normalizada (NDVI)
Vamos calcular o NDVI para cada imagem na coleção filtrada:
# Processar Imagens no Google Earth Engine
# Função para calcular o NDVI
def calculate_ndvi(image):
ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI')
return image.addBands(ndvi)
# Aplicando a função de cálculo do NDVI na coleção de imagens
ndvi_collection = filtered_collection.map(calculate_ndvi)
Extraindo Estatísticas de NDVI
Vamos extrair as estatísticas do NDVI para a área de interesse:
# Processar Imagens no Google Earth Engine
# Calculando as estatísticas do NDVI
ndvi_stats = ndvi_collection.select('NDVI').reduceRegion(
reducer=ee.Reducer.mean(),
geometry=area_of_interest,
scale=30,
maxPixels=1e9
)
# Obtendo os resultados
ndvi_mean = ndvi_stats.getInfo()
print("NDVI Mean:", ndvi_mean)
Visualizando os Resultados
Podemos visualizar os resultados usando a biblioteca folium
:
# Processar Imagens no Google Earth Engine
# Instalando a biblioteca folium
!pip install folium
# Importando a biblioteca folium
import folium
# Criando um mapa folium
map = folium.Map(location=[37.76, -122.42], zoom_start=12)
# Adicionando a camada de NDVI ao mapa
ndvi_layer = folium.raster_layers.ImageOverlay(
image=ndvi_collection.first().select('NDVI').getThumbUrl({'min': 0, 'max': 1, 'palette': ['white', 'green']}),
bounds=[[37.74, -122.45], [37.8, -122.4]],
opacity=0.6
)
ndvi_layer.add_to(map)
# Exibindo o mapa
map
Analisando Mudanças Temporais com Google Earth Engine
Definindo o Intervalo de Tempo
Primeiro, vamos definir um intervalo de tempo mais longo para observar as mudanças ao longo dos anos:
pythonCopiar código# Definindo o intervalo de tempo para análise temporal
start_date = '2015-01-01'
end_date = '2020-12-31'
# Filtrando a coleção de imagens pelo intervalo de tempo e localização
filtered_collection = landsat_collection.filterDate(start_date, end_date).filterBounds(area_of_interest)
Calculando o NDVI ao Longo do Tempo
Vamos calcular o NDVI para cada imagem na coleção filtrada e criar uma série temporal:
# Função para calcular o NDVI e adicionar uma banda com a data
def calculate_ndvi(image):
ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI')
date = ee.Date(image.get('system:time_start')).format('YYYY-MM-dd')
return image.addBands(ndvi).set('date', date)
# Aplicando a função de cálculo do NDVI na coleção de imagens
ndvi_collection = filtered_collection.map(calculate_ndvi)
Extraindo e Plotando Dados de NDVI ao Longo do Tempo
Vamos extrair as estatísticas de NDVI e plotar a série temporal para a área de interesse:
# Importando bibliotecas adicionais
import pandas as pd
import matplotlib.pyplot as plt
# Extraindo as estatísticas de NDVI
ndvi_stats = ndvi_collection.select('NDVI').map(lambda image: image.reduceRegion(
reducer=ee.Reducer.mean(),
geometry=area_of_interest,
scale=30,
maxPixels=1e9
).set('date', image.get('date'))).getInfo()
# Convertendo os dados extraídos para um DataFrame
ndvi_df = pd.DataFrame(ndvi_stats['features'])
ndvi_df['date'] = pd.to_datetime(ndvi_df['properties'].apply(lambda x: x['date']))
ndvi_df['NDVI'] = ndvi_df['properties'].apply(lambda x: x['NDVI'])
# Plotando a série temporal de NDVI
plt.figure(figsize=(12, 6))
plt.plot(ndvi_df['date'], ndvi_df['NDVI'], marker='o', linestyle='-')
plt.xlabel('Data')
plt.ylabel('NDVI')
plt.title('Série Temporal de NDVI (2015-2020)')
plt.grid(True)
plt.show()
Este código extrai os valores médios de NDVI para cada imagem na coleção filtrada e plota uma série temporal para visualizar as mudanças na vegetação ao longo do tempo.
Links Úteis e Mais Conteúdo
Para mais informações sobre como utilizar o Google Earth Engine e Python para análise de dados, confira outros conteúdos no meu blog:
Considerações Finais
Espero que este guia tenha sido útil para aprender como processar imagens no Google Earth Engine com Python. A prática é essencial para dominar essas técnicas, então encorajo você a experimentar e aplicar esses métodos em seus próprios projetos de análise de dados geoespaciais.
Junte-se à nossa comunidade no Twitter e inscreva-se no nosso canal do YouTube para acessar mais tutoriais, dicas e recursos. Continue praticando e explorando novas maneiras de processar imagens no Google Earth Engine com Python, e fique atento para mais guias e tutoriais que compartilharemos.