O Programa Queimadas do INPE (Instituto Nacional de Pesquisas Espaciais) opera o sistema de monitoramento de focos de calor por satélite em todo o território brasileiro e na América do Sul. O sistema detecta pontos de calor anômalo na superfície terrestre utilizando sensores infravermelhos a bordo de múltiplos satélites, sendo o principal indicador de ocorrência de incêndios florestais e queimadas.
O sistema está disponível através do BDQUEIMADAS (Banco de Dados de Queimadas), que consolida:
Focos de calor em tempo real — detecções atualizadas a cada passagem de satélite (várias vezes ao dia)
Série histórica — dados desde 1998, com mais de 20 anos de registros
Múltiplos satélites — dados de AQUA, TERRA, NOAA, GOES, NPP-SUOMI, entre outros
Cobertura continental — monitoramento de todo o Brasil e América do Sul
Cada foco de calor representa um pixel de satélite (1 km x 1 km no satélite de referência AQUA/MODIS) onde foi detectada temperatura anormalmente elevada, indicando possível ocorrência de fogo. O sistema detecta tanto incêndios florestais quanto queimadas agrícolas.
O satélite de referência para a série histórica é o AQUA (sensor MODIS, passagem às 13h30 e 01h30), garantindo consistência temporal para análises de tendência.
Importância: Os dados de focos de calor são utilizados pelo IBAMA, Corpo de Bombeiros e órgãos estaduais para coordenar combate a incêndios e são insumo fundamental para análises de desmatamento (queimadas frequentemente precedem ou acompanham o desmatamento).
# Focos de calor do último mês (satélite de referência AQUA)wget "https://dataserver-coids.inpe.br/queimadas/queimadas/focos/csv/mensal/Brasil/focos_mensal_br_202401.csv"# Focos de calor do ano completowget "https://dataserver-coids.inpe.br/queimadas/queimadas/focos/csv/anual/Brasil/focos_anual_br_2024.csv"# Dados diárioswget "https://dataserver-coids.inpe.br/queimadas/queimadas/focos/csv/diario/Brasil/focos_diario_br_20240115.csv"
import pandas as pd# Baixar dados de focos de calor (CSV mensal)url = "https://dataserver-coids.inpe.br/queimadas/queimadas/focos/csv/mensal/Brasil/focos_mensal_br_202408.csv"df_focos = pd.read_csv(url, encoding="latin-1")print(f"Total de focos de calor: {len(df_focos):,}")print(f"Colunas: {list(df_focos.columns)}")print(f"Período: {df_focos['data_hora_gmt'].min()} a {df_focos['data_hora_gmt'].max()}")# Focos por biomapor_bioma = df_focos["bioma"].value_counts()print("\nFocos de calor por bioma:")print(por_bioma.to_string())# Focos por UFpor_uf = df_focos["estado"].value_counts().head(10)print("\nTop 10 UFs com mais focos:")print(por_uf.to_string())
import geopandas as gpdimport pandas as pd# 1. Carregar focos de calor como GeoDataFramedf_focos = pd.read_csv("focos_anual_br_2024.csv", encoding="latin-1")gdf_focos = gpd.GeoDataFrame( df_focos, geometry=gpd.points_from_xy(df_focos["longitude"], df_focos["latitude"]), crs="EPSG:4326",)# 2. Carregar unidades de conservaçãogdf_ucs = gpd.read_file("unidades_conservacao_federais.shp").to_crs("EPSG:4326")# 3. Identificar focos dentro de UCsfocos_em_uc = gpd.sjoin(gdf_focos, gdf_ucs, how="inner", predicate="within")print(f"Total de focos: {len(gdf_focos):,}")print(f"Focos dentro de UCs federais: {len(focos_em_uc):,}")print(f"UCs afetadas: {focos_em_uc['nome_uc'].nunique()}")# Ranking de UCs com mais focosranking = ( focos_em_uc.groupby(["nome_uc", "categManej"]) .size() .sort_values(ascending=False) .head(20) .rename("num_focos"))print("\nTop 20 UCs com mais focos de calor:")print(ranking.to_string())
import pandas as pd# Carregar dados de múltiplos anosframes = []for ano in range(2020, 2025): df = pd.read_csv( f"focos_anual_br_{ano}.csv", encoding="latin-1", parse_dates=["data_hora_gmt"], ) df["ano"] = ano frames.append(df)df_todos = pd.concat(frames, ignore_index=True)# Filtrar satélite de referênciadf_aqua = df_todos[df_todos["satelite"] == "AQUA_M-T"].copy()df_aqua["mes"] = df_aqua["data_hora_gmt"].dt.month# Média mensal por anotabela = pd.pivot_table( df_aqua, index="mes", columns="ano", aggfunc="size", fill_value=0,)print("Focos de calor por mês e ano (AQUA):")print(tabela.to_string())# Calcular anomalia em relação à média históricatabela["media_historica"] = tabela.mean(axis=1)for ano in range(2020, 2025): tabela[f"anomalia_{ano}"] = ( (tabela[ano] - tabela["media_historica"]) / tabela["media_historica"] * 100 ).round(1)print("\nAnomalia percentual por mês:")colunas_anomalia = [c for c in tabela.columns if "anomalia" in str(c)]print(tabela[colunas_anomalia].to_string())
O satélite de referência (AQUA/MODIS) tem resolução de 1 km. Um foco não representa necessariamente 1 km² de área queimada — pode ser uma queimada pontual detectada dentro de um pixel.
Falsos positivos
Superfícies altamente refletivas (telhados metálicos, mineração) e processos industriais podem gerar detecções falsas, especialmente em áreas urbanas.
Cobertura de nuvens
Nuvens densas impedem a detecção de focos. Em períodos chuvosos, o número de focos pode ser subestimado.
Passagem do satélite
O AQUA passa sobre cada ponto apenas duas vezes ao dia. Incêndios que ocorrem e se extinguem entre passagens não são detectados.
Comparação entre satélites
Satélites diferentes possuem resoluções, horários e sensibilidades distintas. Análises temporais devem usar sempre o mesmo satélite de referência (AQUA).
FRP variável
O Fire Radiative Power (FRP) é influenciado por ângulo de visada, cobertura de nuvens parcial e tipo de vegetação, dificultando comparações diretas.
Queimadas controladas
O sistema não distingue entre queimadas ilegais e queimadas controladas autorizadas (ex: manejo agrícola em áreas permitidas).
Download de séries longas
Downloads de séries históricas longas (vários anos, todo o Brasil) geram arquivos muito grandes. Recomenda-se filtrar por período, estado ou bioma.
Período noturno
Focos detectados à noite (passagem noturna do satélite) podem ter menor precisão de localização.