Aprovechando los datos de precipitación y climatología en Sudamérica

Utilizando datos de precipitación y climatología en Sudamérica.

Cómo acceder a la precipitación de MERGE y otros productos climatológicos de INPE para obtener información meteorológica integral utilizando Google Colab

Foto de Max en Unsplash

Introducción

A medida que el fenómeno de El Niño se intensifica en 2023, los datos climatológicos y de precipitación se han vuelto fundamentales para descifrar su impacto en los patrones climáticos y la dinámica climática a escala global o regional. En cuanto a los datos de precipitación, dos conjuntos de datos reconocidos a nivel mundial se destacan: CHIRPS (Climate Hazards Group InfraRed Precipitation with Station) de USGS e IMERGE (Integrated Multi-satellitE Retrievals for GPM) desarrollado por NASA, donde GPM denota la misión de Medición Global de Precipitaciones. Esta misión utiliza una red de satélites para proporcionar estimaciones globales integrales de la lluvia. Aunque estos productos son adecuados para modelos globales, no están específicamente adaptados para escenarios sudamericanos.

En este contexto, el Instituto Nacional de Investigaciones Espaciales de Brasil (INPE) ofrece datos raster diarios de precipitación específicamente calibrados para Sudamérica. Este producto, conocido como MERGE, se basa en el modelo IMERGE/GPM pero se beneficia de la calibración con miles de pluviómetros in situ para garantizar resultados imparciales (Rozante et al. 2010, Rozante et al. 2020). INPE también proporciona datos climatológicos adicionales, incluyendo promedios mensuales, promedios diarios y más.

La Figura 1 muestra la precipitación total en Sudamérica para el año 2015 (izquierda), un año con un fuerte fenómeno de El Niño, y la anomalía de precipitación en comparación con el año anterior cuando no había El Niño presente (derecha).

Figura 1: A la izquierda, la precipitación total en Sudamérica para el año 2015 y a la derecha la anomalía de precipitación de 2015 en comparación con 2014, cuando no había El Niño. Imagen del autor.

Podemos observar en la figura una gran área con anomalía negativa, especialmente en el bioma amazónico, con hasta 2.000 mm menos de lluvia en comparación con el año anterior.

Estos recursos presentan un valor inmenso para diversas aplicaciones, incluyendo la gestión de cuencas y embalses, el monitoreo de eventos críticos y la agricultura de precisión. Sin embargo, las complejidades involucradas en la descarga y manipulación de estos conjuntos de datos a menudo dificultan su utilización efectiva, limitando su uso principalmente a meteorólogos y dejando a otros profesionales como hidrólogos y especialistas en agricultura mal equipados. Este fue un desafío observado dentro de mi organización (ANA) donde los hidrólogos e ingenieros a menudo tienen dificultades para acceder a los datos de lluvia para cuencas específicas.

Para abordar este desafío, este artículo tiene como objetivo guiar a los lectores sobre cómo descargar y manipular eficientemente estos datos utilizando el paquete merge-downloader, abriendo la puerta a un uso e insights interdisciplinarios más amplios.

Instalación

El merge-downloader es una biblioteca no oficial desarrollada para facilitar el acceso a los datos de INPE y el código fuente está disponible en: https://github.com/cordmaur/merge-downloader .

La instalación de las bibliotecas de Python requeridas para aplicaciones geoespaciales puede ser desafiante a veces, por lo que sugiero usar docker en su lugar. Ya he cubierto este tema en historias anteriores publicadas aquí en TDS:

  • Configurando una imagen de Docker mínima para análisis espacial con Python
  • Por qué deberías usar Devcontainers para tu desarrollo geoespacial

Una imagen de docker ya está disponible en Docker Hub y la instalación se puede hacer con los siguientes comandos en un símbolo del sistema.

> docker pull cordmaur/merge-downloader:v1> docker run -it -p 8888:8888 merge-downloader:v1 bash

Una vez dentro del contenedor, puedes instalar el paquete y comenzar jupyter, que estará accesible a través de tu navegador web en http://127.0.0.1:8888 .

root@89fd8c332f98:/# pip install merge-downloaderroot@89fd8c332f98:/# jupyter notebook --ip=0.0.0.0 --allow-root --no-browser

Otra opción, aún más sencilla, es instalar merge-downloader en Google Colab, que es el camino que seguiremos aquí.

# desde una celda de código%pip install merge-downloader

Descargando Recursos

Lo primero que necesitamos hacer es aprender cómo descargar de manera sencilla los recursos de precipitación y climatología del INPE. La lista de recursos disponibles para descargar con merge-downloader se puede obtener con los siguientes comandos:

from mergedownloader.inpeparser import INPETypesINPETypes.types()resultado: DAILY_RAIN, MONTHLY_ACCUM_YEARLY, DAILY_AVERAGE, MONTHLY_ACCUM, MONTHLY_ACCUM_MANUAL, YEARLY_ACCUM, HOURLY_WRF, DAILY_WRF

El significado de cada tipo está disponible en la documentación de GitHub y se resume en la siguiente tabla:

Para descargar cualquier recurso, lo primero es crear una instancia de descarga, apuntando al servidor FTP del INPE y estableciendo una carpeta local donde descargar los archivos.

from mergedownloader.downloader import Downloaderfrom mergedownloader.inpeparser import INPETypes, INPEParsers# ¡crea una carpeta temporal para almacenar los archivos!mkdir ./tmpdownloader = Downloader(    server=INPEParsers.FTPurl,    parsers=INPEParsers.parsers,    local_folder='./tmp')

Una vez creada una instancia de descarga, descarguemos la lluvia para un día específico. Podemos usar el comando get_file para eso, de la siguiente manera:

import xarray as xrfile = downloader.get_file(date='20230601', datatype=INPETypes.DAILY_RAIN)fileresult:PosixPath('tmp/DAILY_RAIN/MERGE_CPTEC_20230601.grib2')

El archivo ahora se puede abrir con la biblioteca xarray:

rain = xr.load_dataset(file)rain['prec'].plot(vmax=150)
Resultado del código: Lluvia para el 01/06/2023 en América del Sur (milímetros).

Abriendo Múltiples Recursos

Observa que en el ejemplo anterior, la longitud varía de 240 a 340 grados este. Eso no es lo usual, ya que usamos números positivos y negativos para longitudes a la derecha y a la izquierda del meridiano de Greenwich, respectivamente. Esta corrección y otras menores, como la definición correcta del CRS (sistema de referencia de coordenadas), se realizan automáticamente cuando abrimos los recursos usando la instancia de Downloader. Esto se puede lograr utilizando open_file en lugar de get_file. Como ejemplo, abramos varios archivos que representan la lluvia que ocurrió en los primeros cuatro meses de 2023. Además, vamos a graficar los países de América del Sur como referencia espacial.

# abre el conjunto de datos de los paísescountries = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))south_america = countries.query("continent == 'South America'")# selecciona los meses para descargarlosdates = ['2023-01', '2023-02', '2023-03', '2023-04']monthly_rains = [downloader.open_file(date, datatype=INPETypes.MONTHLY_ACCUM_YEARLY) for date in dates]# crea una figura con la precipitación mensualfig, axs = plt.subplots(2, 2, figsize=(12, 11))for i, rain in enumerate(monthly_rains):    ax = axs.reshape(-1)[i]    rain.plot(ax=ax, vmax=1200)    south_america.plot(ax=ax, facecolor='none', edgecolor='white')
Resultado del código: Lluvia acumulada mensual en los primeros cuatro meses de 2023.

Creando un Cubo de Datos

Ahora, supongamos que necesitamos evaluar la precipitación acumulada que ocurrió en la primera mitad de junio de 2023 en un área específica (por ejemplo, la bioma del Amazonas). En estos escenarios, en lugar de abrir cada archivo individualmente, recortar el área, apilarlos, etc., es mucho más fácil crear un cubo de datos y operar directamente sobre él. El cubo consiste en varios rásteres apilados junto con la dimensión tiempo.

Entonces, primero, creemos el cubo. La clase Downloader puede crear automáticamente un cubo para un rango de fechas dado.

# crear un cubo para la primera mitad de juniocube = downloader.create_cube(    start_date='20230601',    end_date='20230615',    datatype=INPETypes.DAILY_RAIN)cube

A continuación, debemos realizar dos operaciones. Recortar, para limitar los datos al área deseada, y sumar, para acumular la precipitación durante los días deseados. Entonces, en el primer paso recortaremos el cubo hasta los límites del bioma del Amazonas. Podemos hacer esto a través del método GISUtil.cut_cube_by_geoms(). Luego, sumamos a lo largo del eje tiempo, por lo que obtenemos una única capa 2D. Veámoslo paso a paso.

from mergedownloader.utils import GISUtil# abrir la geometría del Amazonasamazon = gpd.read_file('https://raw.githubusercontent.com/cordmaur/Fastai2-Zepes/master/Data/amazon.geojson')# recortar el cubo por la geometría dadaamazon_cube = GISUtil.cut_cube_by_geoms(    cube=cube,    geometries = amazon.geometry)# acumular la lluvia a lo largo del eje del tiempoamazon_rain = amazon_cube.sum(dim='time', skipna=False)# trazar la figurafig, ax = plt.subplots(figsize=(8, 5))amazon_rain.plot(ax=ax)south_america.plot(ax=ax, facecolor='none', edgecolor='firebrick')
Resultado del código. Lluvia en la primera mitad de junio de 2023, en la región del Amazonas.

Creando una Serie de Tiempo

Crear una serie de tiempo para una región en particular puede proporcionar información valiosa, especialmente al considerar la lluvia o los datos climatológicos históricos. Por ejemplo, es posible que desee trazar la lluvia mensual en el Amazonas durante el fenómeno de El Niño en 2015 y compararla con la precipitación promedio a largo plazo esperada en la región para cada mes.

Para comenzar, vamos a crear dos cubos. Uno con la precipitación mensual, de enero a diciembre de 2015, y otro con los promedios a largo plazo. El promedio a largo plazo proporcionado por INPE se calcula desde 2000 hasta 2022 (23 años de datos) y, en este caso, podemos pasar cualquier año como referencia.

Observa en el siguiente código que estamos usando el reducer=xr.DataArray.mean que es el método utilizado para agregar los valores de cada píxel en la región, dejando solo la dimensión tiempo.

# Crear los cuboscube_2015 = downloader.create_cube(    start_date='2015-01',    end_date='2015-12',    datatype=INPETypes.MONTHLY_ACCUM_YEARLY)cube_lta = downloader.create_cube(    start_date='2015-01',    end_date='2015-12',    datatype=INPETypes.MONTHLY_ACCUM)# Crear las seriesseries_2015 = downloader.get_time_series(    cube=cube_2015,     shp=amazon,    reducer=xr.DataArray.mean)series_lta = downloader.get_time_series(    cube=cube_lta,     shp=amazon,    reducer=xr.DataArray.mean)# crear un índice de cadena solo con el año y el messeries_lta.index = series_2015.index = series_2015.index.astype('str').str[:7]# trazar el gráficofig, ax = plt.subplots(figsize=(12,6))series_lta.plot(ax=ax, kind='line', color='orange', marker='x')series_2015.plot(ax=ax, kind='bar')

Conclusión

El paquete merge-downloader y los datos de precipitación y climatología de INPE proporcionan un recurso efectivo para aplicaciones de análisis ambiental. La compatibilidad del paquete con bibliotecas bien establecidas como geopandas y xarray mejora aún más su aplicabilidad.

Ilustrado a través de varios ejemplos de casos, las funcionalidades del paquete van desde tareas simples como descargar y trazar datos de precipitación, hasta operaciones más avanzadas. Estas incluyen la generación de cubos de datos, la implementación de recorte espacial y la ejecución de análisis de series temporales. Los usuarios pueden aplicar estas herramientas según sus requisitos específicos, facilitando tareas como el seguimiento de cambios ambientales, el monitoreo de eventos climáticos o estudios regionales completos. La Figura 2 muestra un ejemplo de informe completamente realizado con merge-downloader y otras herramientas geoespaciales de Python.

Figura 2: Ejemplo de informe producido con datos de MERGE para varias cuencas brasileñas. Imagen del autor.

La metodología presentada permite la evaluación de datos de precipitación y su comparación con referencias climatológicas en cualquier área definida espacialmente y puede servir para múltiples dominios.

Permanezca Conectado

Si le gustó este artículo, considere convertirse en miembro de Zepes y desbloquee miles de artículos como este.

Como miembro de Zepes, una parte de su tarifa de membresía se destina a los escritores que lee y usted obtiene acceso completo a cada historia…

cordmaur.medium.com

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Transforma imágenes de moda en impresionantes videos fotorrealistas con el marco de IA DreamPose

La fotografía de moda es omnipresente en plataformas en línea, incluyendo redes sociales y sitios web de comercio ele...

Inteligencia Artificial

Un superordenador de inteligencia artificial cobra vida, impulsado por gigantes chips de computadora

La nueva supercomputadora, creada por la start-up de Silicon Valley Cerebras, fue presentada al mundo debido al auge ...

Inteligencia Artificial

Conoce a Baichuan 2 Una serie de modelos de lenguaje multilingües a gran escala que contienen 7B y 13B de parámetros, entrenados desde cero, con 2.6T tokens.

Los modelos de lenguaje grandes han experimentado avances significativos y alentadores en los últimos años. Los model...

Inteligencia Artificial

Meet LLMWare Un marco de Inteligencia Artificial todo en uno para agilizar el desarrollo de aplicaciones basadas en LLM para aplicaciones de IA generativa

A pesar del gran interés en los Modelos de Lenguaje Grande LLM (por sus siglas en inglés) durante el último año, much...

Aprendizaje Automático

La huella digital de ChatGPT DNA-GPT es un método de detección de texto generado por GPT que utiliza un análisis divergente de N-gramos.

ChatGPT se ha convertido en una parte esencial de nuestras vidas diarias en este momento. La mayoría de nosotros lo u...