Planeta on fire o usando ipyleaflet para hacer mapas con Python

articulos

El pasado verano austral se quemó gran parte de Australia. Australia también es el país que ha inventado el oxímoron Green Carbon. Este año estamos viendo como tenemos incendios forestales en zonas relativamente frías como Siberia, por encima del Círculo Polar Ártico.

En los incendios australianos se estima que se quemaron más de 110.000 km2 en un solo verano. En los incendios de Siberia, solo en lo que llevamos de año, parece que ya se ha quemado la superficie de un país como Grecia (y más de lo que se quemó en Australia). Aquí podéis ver un artículo un poco más extenso sobre lo que está pasando este verano en Siberia.

Además del CO2 que se emite está el CO2 que dejarán de absorber todos esos bosques. Para poner un poco en perspectiva el área que suponen estos incendios voy a usar ipyleaflet. Con ipyleaflet podemos usar la clase Circle y darle un radio en metros. Vamos a representar el área quemada con esos círculos sobre España (podéis cambiar las coordenadas para representarlo sobre otras partes del mundo. Desde mayo, con la versión 0.12.6 de ipyleaflet, podemos guardar nuestros mapas de forma estática para poder incrustarlos, por ejemplo, en una página web. Esta carencia en ipyleaflet y que no existía hasta ahora es lo que me mantenía usando Folium.

Veamos el código que vamos a usar, que es bastante sencillo. El código, además de funcionar en el Jupyter notebook también se puede ejecutar en un script python normal por lo que no es necesario usar ipyleaflet dentro del notebook o JupyterLab:

from math import pi, sqrt

from ipyleaflet import Map, Marker, Circle

center = (40.00, -2.5) # centro del mapa
center_aus = (41.5, -2.25) # centro del círculo para el área de los incendios de Australia
center_sib = (38.5, -4.5) # centro del círculo para el área de los incendios de Siberia

m = Map(center=center, zoom=5)

# Incendios Australia 2019-2020, 110.000 km2
# Calculo el radio para tener un círculo con el área de los incendios
area = 110_000 * 1_000_000
radio = round(sqrt(area / pi))
# Creamos el círculo
circle = Circle()
circle.location = center_aus
circle.radius = radio
circle.color = "green"
circle.fill_color = "green"
# Lo añadimos al mapa
m.add_layer(circle)

# Incendios Siberia, Junio-Julio 2020, Superficie de Grecia
# Calculo el radio para tener un círculo con el área de los incendios
area = 130_000 * 1_000_000
radio = round(sqrt(area / pi))
# Creamos el círculo
circle = Circle()
circle.location = center_sib
circle.radius = radio
circle.color = "blue"
circle.fill_color = "blue"
# Lo añadimos al mapa
m.add_layer(circle)

# Guardamos el mapa en un archivo html
m.save("incendios.html", title="Área Incendios sobre España")

El código no necesita mucha explicación. Si tienes alguna duda puedes usar los comentarios más abajo.

El resultado sería algo parecido a lo siguiente:

Se puede ver que la mitad de un país como España habría sido arrasado por incendios pero es que la superficie de bosque de España es un poco más de un tercio de la superficie total del país. Por tanto, solo con los incendios forestales de Australia y de Siberia de sus respectivos últimos veranos, ya se ha quemado todo el bosque de un país como España (y Portugal, seguramente). Bueno, en realidad, en Siberia aún queda verano. Y no se me ha ocurrido hablar de Brasil, la selva del amazonas y Bolsonaro... Eso otro día.