MapBiomas¶
O MapBiomas é uma rede colaborativa de co-criadores, composta por ONGs, universidades e empresas de tecnologia, que tem como objetivo principal mapear anualmente a cobertura e o uso da terra no Brasil e monitorar as mudanças no território. Essa iniciativa do Observatório do Clima utiliza tecnologia de alta qualidade e baixo custo para produzir séries anuais de mapas desde 1985 até o presente.
Como o MapBiomas funciona?
O MapBiomas funciona através de um processo automatizado e distribuído, utilizando a plataforma Google Earth Engine. As principais etapas de seu funcionamento incluem:
- Coleta de Imagens de Satélite: Utiliza grandes volumes de imagens de satélite, principalmente da série Landsat, que registram o planeta desde 1985. Essas imagens são capturadas periodicamente (a cada 15-17 dias), fornecendo uma base de dados histórica e atualizada.
- Processamento e Classificação: Divide o território brasileiro em bilhões de "pedacinhos" (pixels de 30x30 metros). Para cada um desses pixels, algoritmos de inteligência artificial são aplicados para classificar o tipo de cobertura e uso da terra (ex: floresta, pastagem, agricultura, água, área urbana, etc.) em cada ano da série histórica.
- Filtro Temporal: Aplica regras de filtro temporal para garantir a consistência e a precisão dos dados ao longo dos anos, minimizando erros e flutuações temporárias.
- Integração de Mapas: Os mapas de cada classe de cobertura e uso são integrados em um único mapa que representa o estado do território brasileiro para cada ano.
- MapBiomas Alerta: Uma vertente do MapBiomas, o MapBiomas Alerta, valida e refina alertas de desmatamento gerados por outros sistemas de monitoramento (como o DETER do INPE), utilizando imagens de alta resolução e inteligência artificial. Isso gera laudos detalhados que auxiliam a fiscalização ambiental.
Qual a importância do MapBiomas?
A importância do MapBiomas é multifacetada e crucial para a gestão ambiental e o desenvolvimento sustentável do Brasil:
- Monitoramento Ambiental: Fornece dados confiáveis e atualizados sobre as mudanças na cobertura e uso da terra, permitindo o monitoramento contínuo do desmatamento, da regeneração florestal, da expansão agrícola, da mineração, entre outros.
- Subsídio a Políticas Públicas: As informações geradas são essenciais para a formulação e implementação de políticas públicas relacionadas à conservação, ao combate às mudanças climáticas e à regularização ambiental (como o Cadastro Ambiental Rural - CAR).
- Fiscalização e Combate a Crimes Ambientais: Através do MapBiomas Alerta, o projeto oferece informações detalhadas sobre desmatamentos, que são utilizadas por órgãos fiscalizadores (IBAMA, ICMBio, Secretarias de Meio Ambiente) para planejar ações de fiscalização e combater o desmatamento ilegal.
- Transparência e Acesso à Informação: Os dados do MapBiomas são abertos e acessíveis ao público, permitindo que pesquisadores, gestores, sociedade civil e cidadãos em geral possam acessar e utilizar essas informações para análise, pesquisa e tomada de decisões informadas.
- Pesquisa Científica e Acadêmica: Os dados do MapBiomas são amplamente utilizados em pesquisas científicas e estudos acadêmicos sobre mudanças ambientais, uso do solo e impactos climáticos.
- Inovação Tecnológica: O projeto demonstra o potencial do uso de sensoriamento remoto, inteligência artificial e plataformas de computação em nuvem para o monitoramento ambiental em larga escala.
Em suma, o MapBiomas é uma ferramenta estratégica que democratiza o acesso a informações ambientais de alta qualidade, contribuindo significativamente para a conservação dos recursos naturais e para o enfrentamento dos desafios das mudanças climáticas no Brasil.
#!pip3 install geemap --upgrade
import pprint
import tempfile
import ee
import geemap
import pandas as pd
import open_geodata as geo
# import pprint
# from datetime import date, datetime, timedelta
import folium
# import geopandas as gpd
# import IPython.display as disp
# import matplotlib.pyplot as plt
# import numpy as np
# from scipy.stats import chi2, f, gamma, norm
# import geemap
temp_path = Path(tempfile.gettempdir()) / 'open_geodata' / 'mapbiomas'
temp_path.mkdir(exist_ok=True, parents=True)
temp_path
# Obtem, seleciona
gdf = geo.load_dataset(db='sp', name='geo.sp_250k_wgs84')
# Seleciona
mask = gdf['municipio_nome'] == 'Piracicaba'
gdf = gdf[mask]
# Passa para a mesma coordenada do raster
gdf['geometry'] = gdf['geometry'].to_crs(4326)
# Reseta Index
gdf = gdf.reset_index(drop=True)
# Pega Limites
xmin, ymin, xmax, ymax = gdf.total_bounds
# Results
gdf.info()
gdf.head()
# Trigger the authentication flow.
ee.Authenticate()
ee.Initialize(project='ee-python-michel')
Se define os limites.
roi = ee.Geometry.Rectangle([xmin, ymin, xmax, ymax])
Coleção 9¶
Se obtem a coleção mais recente obtem-se informações. Cada banda corresponde a um ano do mapeamento do MapBiomas.
image = ee.Image(
#'projects/mapbiomas-public/assets/brazil/lulc/collection9/mapbiomas_collection90_integration_v1'
'projects/mapbiomas-public/assets/brazil/lulc/collection10/mapbiomas_brazil_collection10_coverage_v2'
)
image.getInfo()
Cortamos o raster para manter apenas a área de estudo que desejamos.
image = image.clip(roi)
for k in image.getInfo()['bands']:
lyr = k['id']
print(lyr)
visualization = {
'bands': ['classification_1985'],
'min': 0.0,
'max': 0.3,
}
m = geemap.Map()
m.set_center(-47, -23, 8)
m.add_layer(image, visualization, 'True Color (432)')
m
try:
# Exporta a imagem como GeoTIFF para o PC local
geemap.ee_export_image(
ee_object=image,
filename=temp_path / 'mapbiomas2.tif',
# region=region,
scale=30,
crs='EPSG:4326', # Garante que o arquivo será salvo em WGS84
file_per_band=True,
)
except Exception as e:
print(e)
# Exporta a imagem clipada para o Google Drive
task = ee.batch.Export.image.toDrive(
image=image,
description='mapbiomas_clip',
folder='GEE', # Nome da pasta no seu Google Drive
fileNamePrefix='mapbiomas_clip',
region=roi,
scale=30, # Tamanho do pixel em metros
crs='EPSG:4326',
# maxPixels=1e13
)
task.start()
image = image.select('classification_2023')
image.getInfo()
lyr
db = geo.data.DB(db='br_map_biomas')
db.json
filepath = db.get_data(name='tab.codigos-da-legenda-colecao-9')
filepath
df = pd.read_csv(filepath_or_buffer=filepath, sep='\t')
df = df.sort_values(by='Class_ID')
df.head()
legend_dict = dict(zip(df['Descricao'], df['Color']))
list_str = []
list_str.append('<RasterSymbolizer>')
list_str.append('<ColorMap type="intervals" extended="false" >')
for index, row in df.iterrows():
# Atributos
id_color = row['Class_ID']
color = row['Color']
descricao = row['Descricao']
# Apensa entradas
list_str.append(
f'<ColorMapEntry color="{color}" quantity="{id_color}" label="{descricao}"/>'
)
# Apensa fechamento
list_str.append('</ColorMap>')
list_str.append('</RasterSymbolizer>')
# Cria sld intervals
sld_intervals = '\n'.join(list_str)
pprint.pprint(sld_intervals)
# Apply the SLD style to the image.
cover_sld = image.sldStyle(sld_intervals)
# Define a map centered on the United States.
m = geemap.Map(center=[-10, -48], zoom=5)
# Add the image layer to the map and display it.
m.add_layer(cover_sld, None, 'MapBiomas')
m.add_legend(
title='MapBiomas Classification',
legend_dict=legend_dict,
layer_name='MapBiomas',
)
m