GEE

Como Processar Imagens no Google Earth Engine com Python

Escrito por Erick Faria · 3 min. >
Processar Imagens no Google Earth Engine

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.

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.

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.

Escrito por Erick Faria
Engenheiro de Dados com Ph.D. em Geografia e experiência em análise espacial e geoprocessamento. Expertise em processamento de grandes volumes de dados geoespaciais, imagens de satélite e dados de mercado, utilizando ferramentas como Spark, Databricks e Google Earth Engine. Experiência em projetos de mercado de carbono, modelos preditivos para investimentos agrícolas e liderança de projetos de dados em saúde pública. Habilidades em Python, R, SQL e diversas ferramentas de engenharia de dados. Profile