Herramientas para trabajar en meteorología y climatología con Python

Este artículo viene a raiz de una pregunta hecha en twitter:

https://twitter.com/HoracioNakama/status/1240076113742880769

Voy a intentar responderte, Horacio. Si vale para alguien más pues mucho mejor.

La pregunta es un tanto genérica ya que el mundo de la meteorología y de la climatología es muy amplio. Voy a intentar organizarlo de alguna forma y voy a hablar solo de unas pocas ya que las posibilidades son infinitas.

Voy a obviar también los paquetes típicos que también son usados ampliamente pero no son específicos como Numpy, Pandas, Matplotlib, Scipy,…

Lectura y escritura de datos

Existen una serie de formatos operativos que se usan para compartir información entre distintos centros meteorológicos de todo el mundo: GRIB, GRIB2, metar, bufr,…

  • Para abrir ficheros GRIB (v1 y v2) mi mejor opción estos días es eccodes-python. Es multiplataforma y mantenido por gente del ECMWF. Otra opción muy solvente es PyGrib pero no funciona en windows (o funciona pero con mucho trabajo).
  • Datos con formato METAR se pueden abrir con python-metar y MetPy.
  • El formato BUFR se puede leer con una solución en python puro como pybufrkit o usando eccodes-python.
  • Otro formato también muy extendido es NetCDF y, sin duda, la mejor opción es python-NetCDF4.
  • Un formato que está adquiriendo fuerza en los últimos tiempos para almacenar grandes cantidades de información y fácilmente accesible desde internet es Zarr.

Cálculos meteorológicos

Sin duda, el paquete más desarrollado para hacer cálculos relacionados con meteorología es MetPy. Tiene multitud de rutinas para hacer infinidad de cálculos.

Datos provenientes de radares pueden ser leídos y tratados con Py-ART. Incluye muchos algoritmos para obtener información interesante de estos sensores.

ACT (Atmospheric Community Toolkit) es un complemento ideal para las anteriores opciones. Tienes algoritmos para trabajar con series temporales de datos meteorológicos/climatológicos.

Acceso a datos

En el mundo atmosférico/oceanográfico suele haber conjunto de datos muy voluminosos. Muchos centros que los generan han creado formas propias de distribuirlos: THREDDS, OpenDAP, ERDDAP,…

En muchos casos tienen una API sencilla que hace que no sea necesario usar paquetes pero a veces es conveniente usar alguno de ellos. Siphon es uno de estos paquetes de conveniencia. Erddapy sirve para acceder a servidores ERDDAP.

Un sitio con muchos datos mantenido por el ECMWF para el programa Copernicus de la UE es el Climate Data Store. Un paquete muy simple para acceder a este catálogo es cdsapi.

Manejo de grandes volúmenes de datos

Sin duda, mi opción actual sería xarray. Se integra perfectamente con el ecosistema meteorológico/climatológico/oceanográfico de manejo de datos en arrays de varias dimensiones. Lee y escribe NetCDF, Zarr,… Se integra muy bien con dask, con rasterio,… Hay otras opciones pero creo que son mucho menos convenientes.

Integración con modelos meteorológicos

Uno de los modelos meteorológicos más usados en todo el mundo es el Weather Research and Forecasting model (WRF). Existe una biblioteca para postprocesar las salidas de este modelo (NetCDF) que se llama wrf-python y está mantenido por la gente que desarrolla el modelo.

Remapeo de rejillas

Los datos meteorológicos suelen venir en muchos tipos de proyecciones distintas. A veces hay que hacer cambios de rejilla para que unos datos que vienen de un sitio con una proyección y otros datos que vienen de otro con otra proyección se puedan comparar de forma sencilla. Aquí destacaría xESMF y PyResample.

Climatología

Esto lo junto todo en una sola sección con algunas cosillas.

  • climlab: Es un modelo de clima simple para aprender como funciona el clima terrestre. Está desarrollado por un profesor de la Universidad de Albany para sus clases y tienes, incluso, un libro electrónico y ejecutable para entender los conceptos.
  • Algo más avanzado sería climt pero no lo he usado nunca. Sería algo así como un metamodelo.
  • climate_indices: Para calcular algunos índices climáticos.

Visualización

Lo único específico del tema sería cmocean, que es una colección de mapas de colores para representar información meteo/clima/oceanográfica.

El resto de herramientas serían las típicas que se usan en Python y GIS como cartopy, geoviews, Folium, ipyleaflet, Boheh, plotly, Altair,…

Datos de satélite

La observación de la tierra desde el espacio es cada vez más importante con nuevos satélites y sensores cada vez más avanzados lanzándose cada poco. La biblioteca más importante para tratar datos de satélite sería SatPy.

Otra opción menos específica sería rasterio.

GIS

El GIS es cada vez más importante. Estamos tratando siempre con datos de la tierra y es conveniente representarlos teniendo esto en cuenta.

Algunos paquetes interesantes son GeoPandas, Shapely, PyShp, Fiona, PyProj,…

Flujos de trabajo

Puedes usar una mezcla de las herramientas anteriores, herramientas típicas que se usan en otros ámbitos de tratamiento de datos o puedes usar AOSpy. No lo he usado nunca por lo que no puedo comentar mucho.

Otros paquetes

Existen muchos paquetes mucho más específicos:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

18 + = twenty