Tutoriales / Deforestación
¿Qué relación hay entre deforestación y quemas en Colombia?
En la Amazonía colombiana, el fuego es a menudo el paso que sigue a la deforestación. En el arco de deforestación, el 39 % del área con alertas de deforestación de 2018 a 2024 se quemó en los 12 meses siguientes, casi siempre en los tres primeros. Cruzamos las alertas GLAD con los mapas de MapBiomas Fuego para medir qué parte del bosque perdido se quema, en qué mes y en qué municipios, y compartimos el script para repetirlo en Earth Engine.

De la deforestación al fuego en tres meses
En Colombia, la deforestación y las quemas coinciden sobre todo en el arco de deforestación, la franja del norte y el occidente de la Amazonía donde el bosque retrocede más rápido. Lo forman Caquetá, Guaviare, Meta y Putumayo, que en 2024 sumaron 68.721 de las 113.608 ha deforestadas en el país, es decir, el 60 %, según el IDEAM.
Allí, buena parte del bosque que se deforesta termina quemándose, y pronto. Del área con alertas de deforestación confirmadas entre 2018 y 2024, el 39,2 % ardió en los 12 meses siguientes. Además, el 84 % de esas quemas llegó en los tres primeros meses, así que en la mayoría de los casos el fuego aparece como continuación casi inmediata de la deforestación.
Para medirlo cruzamos, píxel a píxel, dos fuentes públicas. Las alertas GLAD-L de la Universidad de Maryland marcan con imágenes Landsat el día en que se detecta la pérdida del dosel. Los mapas de MapBiomas Fuego Colombia, por su parte, dicen en qué mes se quemó cada píxel de 30 m. Con ambas buscamos, para cada alerta, la primera quema en el mismo lugar.
En total revisamos 5,6 millones de píxeles con alerta confirmada. Esa muestra no equivale a la deforestación del arco, porque GLAD no está pensado para estimar áreas (lo explicamos más abajo), pero sí sirve para calcular proporciones y meses. La tabla resume el resultado por departamento.
| Departamento | Peso en las alertas del arco | Deforestación quemada en 12 meses |
|---|---|---|
| Guaviare | 25,9 % | 49,6 % |
| Meta | 28,9 % | 38,4 % |
| Caquetá | 31,1 % | 37,7 % |
| Putumayo | 14,1 % | 25,2 % |
| Arco | 100 % | 39,2 % |
Se deforesta de diciembre a febrero y se quema en marzo
La secuencia se ve con claridad en el calendario. El 53,5 % del área con alertas se detecta entre diciembre y febrero, al comenzar la temporada seca, y enero concentra casi la cuarta parte. Las quemas sobre esas mismas áreas llegan un poco después: el 79,1 % cae entre febrero y abril, y solo marzo reúne el 36,1 %.

El desfase típico es de uno a tres meses. Entre las alertas que se queman en el primer año, el 23,7 % arde al mes siguiente, el 28,0 % a los dos meses y el 15,0 % a los tres. Pasado ese plazo el fuego es raro. En las alertas de 2018 a 2023, que tienen dos años de seguimiento, la proporción quemada solo sube del 41,4 % en 12 meses al 44,2 % en 24.
Conviene leer estas fechas como detecciones y no como el día exacto en que se tumbó el bosque. Una alerta aparece cuando Landsat ve el suelo después del corte, y con nubes ese retraso va de tres días a varios meses, según Global Forest Watch. Por eso medimos el desfase en meses y no en días.
La deforestación de la temporada seca es la que se quema
El mes en que se detecta la deforestación anticipa bastante bien si habrá fuego. De lo detectado en enero, el 53,8 % se quemó en los 12 meses siguientes, mientras que de lo detectado en julio solo ardió el 7,8 %. Las alertas de diciembre a marzo, justo antes del pico de quemas, son las que más se queman.

Las alertas de mitad de año, en cambio, tienen por delante la misma temporada seca y aun así arden mucho menos. Los datos no dicen por qué, pero sugieren que no todas las alertas responden al mismo uso: algunas pueden ser pérdidas de dosel que nadie prepara para el fuego.
Guaviare quema la mitad de lo que deforesta
Entre departamentos, la proporción va del 25 % al 50 %. En Guaviare se quema la mitad del área deforestada (49,6 %), Meta y Caquetá rondan el 38 % y Putumayo se queda en el 25,2 %. La misma diferencia aparece en los municipios con más alertas, donde San José del Guaviare y Calamar superan el 50 %.
| Municipio | Departamento | Peso en las alertas del arco | Deforestación quemada en 12 meses |
|---|---|---|---|
| San Vicente del Caguán | Caquetá | 13,2 % | 42,4 % |
| Cartagena del Chairá | Caquetá | 11,0 % | 36,4 % |
| Mapiripán | Meta | 9,6 % | 39,2 % |
| La Macarena | Meta | 9,4 % | 40,0 % |
| San José del Guaviare | Guaviare | 9,4 % | 53,3 % |
| Calamar | Guaviare | 7,6 % | 50,1 % |
| El Retorno | Guaviare | 5,9 % | 46,8 % |
| Puerto Guzmán | Putumayo | 4,8 % | 34,5 % |
| Solano | Caquetá | 4,3 % | 35,5 % |
| Puerto Leguízamo | Putumayo | 3,6 % | 28,9 % |
Estos diez municipios concentran el 78,8 % del área con alertas del arco, y en todos ellos arde más de una cuarta parte de lo deforestado. San Vicente del Caguán y Cartagena del Chairá, en Caquetá, suman casi la cuarta parte de las alertas.
Por año, la proporción quemada en 12 meses bajó del 48,0 % en las alertas de 2018 al 26,7 % en las de 2024. Aun así, no la presentamos como tendencia: los años intermedios suben y bajan (45,0 % en 2021), y GLAD reprocesó su serie a partir de 2021, de modo que hacen falta más años para afirmarlo.
Qué parte del fuego amazónico cae sobre deforestación reciente
La misma relación también se puede leer al revés, empezando por el fuego. De 2019 a 2025, en Caquetá, Guaviare y Putumayo, el 15,0 % del área quemada cada año cayó sobre una alerta de deforestación de los 12 meses anteriores. Por departamentos, fue el 13,7 % en Caquetá, el 14,2 % en Guaviare y el 26,3 % en Putumayo.
La cifra encaja con la del Instituto SINCHI, que en 2023 encontró que solo el 13,7 % del área quemada en la Amazonía colombiana era bosque, y que otro 84,7 % eran pastos y otras coberturas. Son mediciones distintas, con métodos y años diferentes, pero coinciden en el orden de magnitud: en estos departamentos, cerca de una de cada siete hectáreas quemadas corresponde a bosque en pie o recién deforestado.
Meta es la excepción, porque allí solo el 1,0 % del área quemada cae sobre deforestación reciente. Sus sabanas del norte arden cada año en extensiones enormes y diluyen la señal del sur amazónico. Por eso, si necesitas este cálculo para un límite propio, como un resguardo o un área protegida, conviene hacerlo a esa escala; lo ofrecemos dentro de nuestros mapas de incendios, agua y cobertura.
Estudiando la relación entre datos de deforestación y fuego con Google Earth Engine
Para un municipio, los scripts a continuación permiten calcular qué parte de las alertas GLAD confirmadas de enero a abril de 2025 se quema ese mismo año según MapBiomas Fuego. También permiten repartir el área por mes de alerta y por mes de quema. Para ejecutar este script basta con configurar el parámetro municipality con el nombre del municipio de interés usando el nombre estándar en la capa FAO GAUL 2025.
/**
* Fire after deforestation
*
* Confirmed GLAD-L alerts crossed with MapBiomas Fire Colombia.
*
* Study area:
* San Vicente del Caguán, Caquetá, Colombia.
*
* Products:
* - Confirmed GLAD alerts (January-April)
* - Alerts followed by fire
* - Monthly alert and burned area statistics
* - Fire occurrence before and after alerts
*
* Sources:
* GLAD-L
* MapBiomas Fuego Colombia Collection 1
*/
/**
* Configuration
*/
var municipality = 'San Vicente Del Caguan';
var country = 'COL';
var alert_year = 2025;
var last_alert_month = 4;
var alerts_path = 'projects/glad/alert/UpdResult';
var fire_folder = 'projects/mapbiomas-public/assets/colombia/fire/collection1/';
var regions_path = 'FAO/GAUL/2025/level2';
var alert_id = String(alert_year).slice(-2);
/**
* Study area
*/
var region = ee.FeatureCollection(regions_path)
.filter(ee.Filter.eq('ISO3_CODE', country))
.filter(ee.Filter.eq('GAUL2_NAME', municipality));
var geometry = region.geometry();
/**
* Input datasets
*
* GLAD values:
* conf = 2 (probable)
* conf = 3 (confirmed)
*
* alertDate represents the day of the year.
*
* Images without the requested annual bands are excluded.
*/
var alerts = ee.ImageCollection(alerts_path)
.filterBounds(geometry)
.filter(
ee.Filter.listContains(
'system:band_names',
'conf' + alert_id
)
);
var glad = alerts
.select(
['conf' + alert_id, 'alertDate' + alert_id],
['conf', 'date']
)
.mosaic();
var fire = ee.Image(
fire_folder + 'mapbiomas_colombia_fire_collection1_monthly_burned_v1'
)
.select('burned_monthly_' + alert_year);
/**
* Area calculation
*
* Uses the projection of a GLAD tile
* and the actual area of each pixel.
*/
var projection = ee.Image(alerts.first())
.select('conf' + alert_id)
.projection();
var hectares = ee.Image.pixelArea().divide(10000);
/**
* Calculate the sum of pixel values within the study area.
*
* @param {ee.Image} image - Image containing area values.
* @returns {ee.Dictionary} Sum of values by band.
*/
function sum_hectares(image) {
return image.reduceRegion({
reducer: ee.Reducer.sum(),
geometry: geometry,
crs: projection,
maxPixels: 1e13,
tileScale: 4,
});
}
/**
* Alert month
*
* Converts the day of year into a month (1-12).
*/
var month_starts = [];
for (var month_number = 2; month_number <= 12; month_number++) {
var start = new Date(
Date.UTC(alert_year, month_number - 1, 1)
);
var day = (
start - Date.UTC(alert_year, 0, 1)
) / 86400000 + 1;
month_starts.push(day);
}
var alert_month = ee.Image(1);
month_starts.forEach(function (day) {
alert_month = alert_month.add(
glad.select('date').gte(day)
);
});
/**
* Fire month
*
* Values:
* 1-12 = Landsat burn month
* 13-24 = MODIS complement (month + 12)
*
* MODIS values are normalized to months 1-12.
* Pixels without fire are assigned 0.
*/
var fire_month = fire
.updateMask(fire.gte(1))
.subtract(1)
.mod(12)
.add(1)
.unmask(0);
/**
* Alerts and fire
*
* confirmed:
* GLAD confirmed alerts from January to April.
*
* burned_after:
* Fire in the alert month or later.
*
* same_month:
* Fire in the same month as the alert.
*
* burned_before:
* Fire before the alert month.
*/
var confirmed = glad.select('conf')
.eq(3)
.and(alert_month.lte(last_alert_month))
.unmask(0);
var burned_after = confirmed
.and(fire_month.gte(alert_month));
var same_month = confirmed
.and(fire_month.eq(alert_month));
var burned_before = confirmed
.and(fire_month.gt(0))
.and(fire_month.lt(alert_month));
/**
* Area statistics
*/
var totals = sum_hectares(
ee.Image.cat([
confirmed.rename('alerts'),
burned_after.rename('burned_after'),
same_month.rename('same_month'),
burned_before.rename('burned_before'),
])
.multiply(hectares)
);
var total_alerts = ee.Number(totals.get('alerts'));
var total_burned_after = ee.Number(
totals.get('burned_after')
);
var burned_percentage = ee.Algorithms.If(
total_alerts.gt(0),
total_burned_after
.divide(total_alerts.max(1))
.multiply(100),
0
);
/**
* Results
*/
print(
'Alertas GLAD confirmadas, enero-abril ' + alert_year + ' (ha)',
totals.get('alerts')
);
print(
'Área quemada en el mes de alerta o posteriormente (ha)',
totals.get('burned_after')
);
print(
'Área quemada en el mismo mes de la alerta (ha)',
totals.get('same_month')
);
print(
'Área quemada antes del mes de la alerta (ha)',
totals.get('burned_before')
);
print(
'Porcentaje de alertas con quema posterior o simultánea (%)',
burned_percentage
);
/**
* Monthly statistics
*/
var month_labels = [
'Ene', 'Feb', 'Mar', 'Abr',
'May', 'Jun', 'Jul', 'Ago',
'Sep', 'Oct', 'Nov', 'Dic',
];
var month_bands = [];
for (var month_index = 1; month_index <= 12; month_index++) {
var month_id = (
month_index < 10 ? '0' : ''
) + month_index;
month_bands.push(
confirmed
.and(alert_month.eq(month_index))
.rename('alert_' + month_id)
);
month_bands.push(
burned_after
.and(fire_month.eq(month_index))
.rename('fire_' + month_id)
);
}
var by_month = sum_hectares(
ee.Image.cat(month_bands)
.multiply(hectares)
);
var month_table = ee.FeatureCollection(
month_labels.map(function (label, index) {
var month_id = (
index < 9 ? '0' : ''
) + (index + 1);
return ee.Feature(null, {
month: label,
alerts: by_month.get('alert_' + month_id),
fire: by_month.get('fire_' + month_id),
});
})
);
/**
* Monthly chart
*/
var month_chart = ui.Chart.feature.byFeature(
month_table,
'month',
['alerts', 'fire']
)
.setSeriesNames([
'Alertas GLAD confirmadas',
'Área quemada después de la alerta',
])
.setChartType('ColumnChart')
.setOptions({
title: 'Alertas de deforestación y áreas quemadas | ' + alert_year,
hAxis: {
title: 'Mes',
},
vAxis: {
title: 'Superficie (ha)',
},
legend: {
position: 'bottom',
},
colors: [
'#12202b',
'#a1561b',
],
});
print(month_chart);
/**
* Visualization parameters
*/
var alert_vis = {
palette: ['#449ae0'],
};
var burned_vis = {
palette: ['#ff3b00'],
};
var boundary_vis = {
color: '#ffffff',
fillColor: '#00000000',
width: 2,
};
/**
* Map visualization
*/
Map.setOptions('HYBRID');
Map.centerObject(region, 9);
Map.addLayer(
confirmed.selfMask().clip(geometry),
alert_vis,
'Alertas GLAD confirmadas | Ene-Abr ' + alert_year,
true
);
Map.addLayer(
burned_after.selfMask().clip(geometry),
burned_vis,
'Alertas con quema posterior o simultánea | ' + alert_year,
true
);
Map.addLayer(
region.style(boundary_vis),
{},
municipality,
true
);
/**
* Map legend
*/
var legend = ui.Panel({
style: {
position: 'bottom-left',
padding: '10px 14px',
backgroundColor: 'rgba(255,255,255,0.95)',
},
});
var legend_title = ui.Label({
value: 'Deforestación y fuego | ' + alert_year,
style: {
fontWeight: 'bold',
fontSize: '13px',
margin: '0 0 8px 0',
},
});
var legend_items = [
{
label: 'Alertas GLAD confirmadas',
color: '#449ae0',
},
{
label: 'Alertas con quema posterior o simultánea',
color: '#ff3b00',
},
];
/**
* Create a legend item.
*
* @param {string} label - Legend description.
* @param {string} color - Category color.
* @returns {ui.Panel} Legend row.
*/
function create_legend_item(label, color) {
var color_box = ui.Label({
style: {
backgroundColor: color,
padding: '8px',
margin: '0 8px 4px 0',
},
});
var description = ui.Label({
value: label,
style: {
fontSize: '12px',
margin: '0 0 4px 0',
},
});
return ui.Panel({
widgets: [
color_box,
description,
],
layout: ui.Panel.Layout.flow('horizontal'),
});
}
/**
* Build legend
*/
var legend_widgets = [legend_title];
legend_items.forEach(function (item) {
legend_widgets.push(
create_legend_item(item.label, item.color)
);
});
legend = ui.Panel({
widgets: legend_widgets,
style: {
position: 'bottom-left',
padding: '10px 14px',
backgroundColor: 'rgba(255,255,255,0.95)',
},
});
Map.add(legend);"""
Fire after deforestation
Confirmed GLAD-L alerts crossed with MapBiomas Fire Colombia.
Study area:
San Vicente del Caguán, Caquetá, Colombia.
Products:
- Confirmed GLAD alerts (January-April)
- Alerts followed by fire
- Monthly alert and burned area statistics
- Fire occurrence before and after alerts
Sources:
GLAD-L
MapBiomas Fuego Colombia Collection 1
"""
from datetime import date
import ee
import geemap
import matplotlib.pyplot as plt
ee.Initialize(project='tu-proyecto-gcp')
# Configuration
municipality = 'San Vicente Del Caguan'
country = 'COL'
alert_year = 2025
last_alert_month = 4
alerts_path = 'projects/glad/alert/UpdResult'
fire_folder = 'projects/mapbiomas-public/assets/colombia/fire/collection1/'
regions_path = 'FAO/GAUL/2025/level2'
alert_id = str(alert_year)[-2:]
# Study area
region = (
ee.FeatureCollection(regions_path)
.filter(ee.Filter.eq('ISO3_CODE', country))
.filter(ee.Filter.eq('GAUL2_NAME', municipality))
)
geometry = region.geometry()
# Input datasets
#
# GLAD values:
# conf = 2 (probable)
# conf = 3 (confirmed)
#
# alertDate represents the day of the year.
#
# Images without the requested annual bands are excluded.
alerts = (
ee.ImageCollection(alerts_path)
.filterBounds(geometry)
.filter(
ee.Filter.listContains(
'system:band_names',
f'conf{alert_id}'
)
)
)
glad = (
alerts
.select(
[f'conf{alert_id}', f'alertDate{alert_id}'],
['conf', 'date']
)
.mosaic()
)
fire = (
ee.Image(
fire_folder + 'mapbiomas_colombia_fire_collection1_monthly_burned_v1'
)
.select(f'burned_monthly_{alert_year}')
)
# Area calculation
#
# Uses the projection of a GLAD tile
# and the actual area of each pixel.
projection = (
ee.Image(alerts.first())
.select(f'conf{alert_id}')
.projection()
)
hectares = ee.Image.pixelArea().divide(10000)
def sum_hectares(image):
"""
Calculate the sum of pixel values within the study area.
Args:
image (ee.Image): Image containing area values.
Returns:
ee.Dictionary: Sum of values by band.
"""
return image.reduceRegion(
reducer=ee.Reducer.sum(),
geometry=geometry,
crs=projection,
maxPixels=1e13,
tileScale=4,
)
# Alert month
#
# Converts the day of year into a month (1-12).
month_starts = []
for month_number in range(2, 13):
day = (
date(alert_year, month_number, 1) - date(alert_year, 1, 1)
).days + 1
month_starts.append(day)
alert_month = ee.Image(1)
for day in month_starts:
alert_month = alert_month.add(
glad.select('date').gte(day)
)
# Fire month
#
# Values:
# 1-12 = Landsat burn month
# 13-24 = MODIS complement (month + 12)
#
# MODIS values are normalized to months 1-12.
# Pixels without fire are assigned 0.
fire_month = (
fire
.updateMask(fire.gte(1))
.subtract(1)
.mod(12)
.add(1)
.unmask(0)
)
# Alerts and fire
#
# confirmed:
# GLAD confirmed alerts from January to April.
#
# burned_after:
# Fire in the alert month or later.
#
# same_month:
# Fire in the same month as the alert.
#
# burned_before:
# Fire before the alert month.
confirmed = (
glad.select('conf')
.eq(3)
.And(alert_month.lte(last_alert_month))
.unmask(0)
)
burned_after = confirmed.And(fire_month.gte(alert_month))
same_month = confirmed.And(fire_month.eq(alert_month))
burned_before = (
confirmed
.And(fire_month.gt(0))
.And(fire_month.lt(alert_month))
)
# Area statistics
totals = sum_hectares(
ee.Image.cat([
confirmed.rename('alerts'),
burned_after.rename('burned_after'),
same_month.rename('same_month'),
burned_before.rename('burned_before'),
])
.multiply(hectares)
).getInfo()
total_alerts = totals['alerts']
total_burned_after = totals['burned_after']
burned_percentage = (
total_burned_after / total_alerts * 100
if total_alerts > 0
else 0
)
# Results
print(
f'Alertas GLAD confirmadas, enero-abril {alert_year} (ha):',
round(totals['alerts'], 1)
)
print(
'Área quemada en el mes de alerta o posteriormente (ha):',
round(totals['burned_after'], 1)
)
print(
'Área quemada en el mismo mes de la alerta (ha):',
round(totals['same_month'], 1)
)
print(
'Área quemada antes del mes de la alerta (ha):',
round(totals['burned_before'], 1)
)
print(
'Porcentaje de alertas con quema posterior o simultánea (%):',
round(burned_percentage, 1)
)
# Monthly statistics
month_labels = [
'Ene', 'Feb', 'Mar', 'Abr',
'May', 'Jun', 'Jul', 'Ago',
'Sep', 'Oct', 'Nov', 'Dic',
]
month_bands = []
for month_index in range(1, 13):
month_bands.append(
confirmed
.And(alert_month.eq(month_index))
.rename(f'alert_{month_index:02d}')
)
month_bands.append(
burned_after
.And(fire_month.eq(month_index))
.rename(f'fire_{month_index:02d}')
)
by_month = sum_hectares(
ee.Image.cat(month_bands)
.multiply(hectares)
).getInfo()
month_alerts = [
by_month[f'alert_{index:02d}'] for index in range(1, 13)
]
month_fire = [
by_month[f'fire_{index:02d}'] for index in range(1, 13)
]
# Monthly chart
positions = range(len(month_labels))
bar_width = 0.4
figure, axis = plt.subplots(figsize=(10, 5))
axis.bar(
[position - bar_width / 2 for position in positions],
month_alerts,
width=bar_width,
color='#12202b',
label='Alertas GLAD confirmadas',
)
axis.bar(
[position + bar_width / 2 for position in positions],
month_fire,
width=bar_width,
color='#a1561b',
label='Área quemada después de la alerta',
)
axis.set_title(
f'Alertas de deforestación y áreas quemadas | {alert_year}',
loc='left',
fontweight='bold',
)
axis.set_xticks(list(positions))
axis.set_xticklabels(month_labels)
axis.set_xlabel('Mes')
axis.set_ylabel('Superficie (ha)')
axis.grid(axis='y', color='#e3e7ea')
axis.set_axisbelow(True)
axis.spines[['top', 'right']].set_visible(False)
axis.legend(
loc='upper center',
bbox_to_anchor=(0.5, -0.15),
ncol=2,
frameon=False,
)
figure.tight_layout()
plt.show()
# Visualization parameters
alert_vis = {
'palette': ['#449ae0'],
}
burned_vis = {
'palette': ['#ff3b00'],
}
boundary_vis = {
'color': '#ffffff',
'fillColor': '#00000000',
'width': 2,
}
# Map legend
legend_items = [
{
'label': 'Alertas GLAD confirmadas',
'color': '#449ae0',
},
{
'label': 'Alertas con quema posterior o simultánea',
'color': '#ff3b00',
},
]
# Map visualization
Map = geemap.Map()
Map.add_basemap('HYBRID')
Map.centerObject(region, 9)
Map.addLayer(
confirmed.selfMask().clip(geometry),
alert_vis,
f'Alertas GLAD confirmadas | Ene-Abr {alert_year}',
True
)
Map.addLayer(
burned_after.selfMask().clip(geometry),
burned_vis,
f'Alertas con quema posterior o simultánea | {alert_year}',
True
)
Map.addLayer(
region.style(**boundary_vis),
{},
municipality,
True
)
Map.add_legend(
title=f'Deforestación y fuego | {alert_year}',
legend_dict={item['label']: item['color'] for item in legend_items},
position='bottomleft',
)
MapEn nuestro análisis usamos únicamente las alertas de enero a abril porque la Colección 1 de MapBiomas Fuego termina en 2025, y una alerta de agosto solo podría quemarse en 2026, que aún no tiene mapa. Además, projects/glad/alert/UpdResult guarda el año anterior y el actual, y algunas de sus imágenes ya solo traen el actual; por eso el script filtra las que tienen las bandas de 2025.
Los años cerrados de 2018 a 2023 están en colecciones aparte, de projects/glad/alert/2018final a 2023final. Todos los años se pueden descargar además en formato GeoTIFF desde la página de GLAD, que es lo que usamos para el arco completo.
San Vicente del Caguán: el 28,7 % de las zonas deforestadas a inicios de 2025 se quemó posteriormente
Ejecutamos el análisis en San Vicente del Caguán, el municipio con mayor número de alertas del arco de deforestación. En Google Earth Engine, usando el límite de FAO GAUL 2025, obtuvimos 1.566 ha de alertas confirmadas entre enero y abril de 2025; de las cuales, 450 ha se quemaron ese mismo año, es decir, el 28,7 %. Al hacer el mismo cálculo con los GeoTIFF públicos y el límite del DANE, el resultado es de 1.735 ha de alertas y 486 ha quemadas, lo que equivale al 28,0 %. Como los límites no coinciden, el área varía ligeramente, pero la proporción se mantiene.
Esta proporción es menor que el 39,2 % del arco de deforestación completo porque, en este caso, solo se consideran las quemas ocurridas dentro del mismo año de la alerta. Por lo demás, el gráfico reproduce a escala municipal el calendario del arco: las alertas se concentran en enero y febrero; las quemas, en febrero y abril. Marzo queda casi vacío en ambas series, probablemente porque hubo pocas imágenes despejadas y los cambios ocurridos entonces se detectaron en abril.

| Alertas de enero a abril de 2025 (Earth Engine) | 1.566 ha |
|---|---|
| Quemadas ese mismo año | 450 ha (28,7 %) |
| Mismo cálculo con GeoTIFF y DANE | 28,0 % |
| Quemadas en el mes de la alerta | 173 ha |
Lo que las alertas GLAD no dicen
Las alertas GLAD-L marcan cualquier píxel de Landsat donde se pierde más de la mitad del dosel. Solo cubren lo que la Universidad de Maryland considera bosque: árboles de más de 5 m con más del 30 % de cobertura. Son un aviso temprano, y el propio Global Forest Watch desaconseja usarlas para estimar áreas. Por eso este artículo habla de proporciones y de meses, y para las hectáreas deforestadas remite al IDEAM.
Tampoco todas las alertas son deforestación. El fuego que entra en un bosque destruye el dosel y puede generar una alerta por sí solo. En el 6,9 % del área con alertas, la quema cae en el mismo mes de la detección, y en otro 4,2 % ya había habido fuego en los 12 meses anteriores. En esos casos no sabemos qué llegó primero.
La serie, además, cambia en 2021. Ese año GLAD pasó a la Colección 2 de Landsat y reprocesó sus alertas, según Global Forest Watch. Las proporciones no muestran un salto en ese año, pero no comparamos áreas de alerta entre los dos periodos.
Por el lado del fuego, MapBiomas Fuego registra una sola quema por píxel y año, de modo que un píxel que arde dos veces en el mismo año cuenta una vez. Además, una quema de diciembre que se ve en enero queda en enero, lo que puede alargar el desfase un mes. Por último, el arco se tomó con los límites del DANE, y quedó fuera una franja de unos 500 m de El Retorno, al este de 70° O, que no cubren las teselas usadas.
Lo que la IA suele hacer mal
Si le pides a un asistente de IA que cruce alertas de deforestación con quemas en Earth Engine, estas respuestas son frecuentes y fallan:
- Usar
projects/glad/alert/UpdResultpara cualquier año. Solo guarda el año anterior y el actual, y algunas imágenes ya traen solo el actual: en octubre de 2026, pedirconf25falla con «Band pattern 'conf25' did not match any bands». Filtra conee.Filter.listContains('system:band_names', 'conf25')o usa las colecciones…finalde los años cerrados. - Sumar las alertas GLAD como hectáreas deforestadas. GLAD advierte que sus alertas no sirven para estimar el área de pérdida. Para cifras oficiales de Colombia, usa el monitoreo anual del IDEAM.
- Sumar áreas sobre un
mosaic()sin indicar la proyección. Un mosaico queda en WGS84 a 1°, y unreduceRegionsincrsniscaletrabaja a esa escala. Pasa la proyección de una de las imágenes originales, como hace el script. - Dar por «quemada después» una alerta con fuego en el mismo año. Si la quema fue en enero y la alerta en abril, el fuego llegó antes. Compara el mes de la alerta con el mes de la quema, no solo el año.
Preguntas frecuentes
¿Qué es el arco de deforestación?
Es la franja del norte y el occidente de la Amazonía colombiana, en Caquetá, Guaviare, Meta y Putumayo, donde se concentra la pérdida de bosque del país. En 2024 esos cuatro departamentos sumaron 68.721 ha, el 60 % de la deforestación nacional según el IDEAM.
¿Cuánto tiempo pasa entre la deforestación y la quema en la Amazonía colombiana?
En el arco de deforestación, casi siempre de uno a tres meses. De 2018 a 2024, el 39,2 % del área con alertas de deforestación se quemó en el primer año. Además, el 84 % de esas quemas llegó en los tres primeros meses, sobre todo entre febrero y abril.
¿Qué son las alertas GLAD?
Son avisos de pérdida de dosel que produce la Universidad de Maryland con imágenes Landsat de 30 m, entre 30° N y 30° S, y que se actualizan a diario. Una alerta se confirma si la pérdida se repite en una de las cuatro imágenes siguientes.
¿Dónde descargar las alertas GLAD?
En la página de GLAD hay GeoTIFF por teselas de 10° para cada año, con una capa de confianza y otra con el día de detección. En Earth Engine están en projects/glad/alert/UpdResult, con el año anterior y el actual, y en colecciones …final para 2018 a 2023.
¿Se pueden usar las alertas GLAD para saber cuántas hectáreas se deforestaron?
No. Están pensadas para avisar pronto y omiten parte de la pérdida, así que Global Forest Watch desaconseja usarlas para estimar áreas. Las cifras oficiales de Colombia son las del monitoreo anual del IDEAM.
Fuentes
- GLAD Forest AlertsGLAD, Universidad de MarylandDefinición de bosque y de alerta, acceso a los datos y advertencia sobre el uso para áreas.
- Humid tropical forest disturbance alerts using Landsat dataHansen, M. C. et al. (2016). Environmental Research LettersMétodo de las alertas GLAD-L.
- GLAD Deforestation Alerts, ExplainedWeisse, M. y Pickens, A. (2020). Global Forest WatchConfirmación con una de las cuatro imágenes siguientes, retraso por nubes y uso no recomendado para áreas.
- Integrated Deforestation AlertsGlobal Forest Watch, Data APIReprocesamiento de GLAD-L con la Colección 2 de Landsat desde 2021.
- Apéndice General MapBiomas Fuego Colombia, Colección 1.0MapBiomas ColombiaMétodo del mapa anual y del mes de quema.
- En 2024, Colombia consolidó la segunda cifra de deforestación más baja en de la historiaIDEAM (31 de julio de 2025)Deforestación nacional de 2024 y cifras de Caquetá, Meta, Guaviare y Putumayo.
- 5. Cicatrices de quema en la Amazonia colombianaInstituto SINCHI, Informe 2023Reparto del área quemada en 2023 entre bosque y otras coberturas.
Sigue aprendiendo
Incendios
MapBiomas Fuego Colombia: cómo leer y usar los mapas de áreas quemadasIncendios · dNBR
Cómo detectar áreas quemadas con dNBR y Google Earth Engine
Para entender los mapas de fuego que usamos aquí, sigue con MapBiomas Fuego Colombia o mira el mapa de deforestación de la Amazonía. ¿Necesitas este cruce para tu municipio, resguardo o área protegida? Mira el servicio Mapas de incendios, agua y cobertura.
¿Necesitas medir la deforestación y el fuego en tu territorio?
Escribe a contacto@ventuari.dev con el área (municipio, resguardo, predio o área protegida) y recibirás una propuesta con alcance y precio.