¿Por qué usar netCDF?

Primero de todo empezaremos por el principio

¿Qué es netCDF?

Es un conjunto de librerías (o bibliotecas) y un formato de datos que son:

  • auto-descriptivo ya que incluye información acerca de los datos contenidos en el fichero netCDF
  • independiente de la plataforma
  • podemos acceder a un subconjunto de datos del fichero de forma eficiente
  • permite agregar datos a un fichero ya existente sin necesidad de copiar los datos ya existentes en el fichero
  • puede ser fácilmente compartido ya que una persona puede escribir mientras varias personas pueden leer el mismo fichero.
  • puede ser archivado ya que las versiones previas siempre estarán soportadas por las nuevas versiones

Su actual versión es la 4 y permite leer los ficheros creados con versiones anteriores de netCDF, como se ha comentado anteriormente.

Además es compatible con un subconjunto de HDF5 (del que hablaremos otro día, Francesc, ¿te animas como firma invitada?) pudiendo leer gran cantidad de ficheros en formato HDF5 pero no todos. HDF5 es capaz de abrir cualquier fichero creado con netCDF-4 (que es el modelo mejorado de datos que veremos a continuación). Es decir, un fichero netCDF-4 es un fichero HDF5 pero no a la inversa.

Es además un estándar para varias instituciones como la Open Geospatial Consortium.

¿Cuál es el formato de un fichero netCDF?

El formato no es único, existe un modelo clásico, más sencillo, y el modelo mejorado (llamado netCDF4), más complejo y completo.

El modelo clásico consta de un cabecero, que contiene toda la información sobre las dimensiones, atributos y nombres de las variables contenidas y la parte de los datos, comprendiendo los datos de las variables de tamaño fijo, y los datos de tamaño variable, conteniendo los datos de las variables que tienen dimensión ilimitada.

El modelo mejorado (netCDF-4) permite estructuras más complejas de datos con tipos de datos definidos por el usuario, permitiendo almacenarlos de forma jerárquica mediante grupos (que serían como carpetas en un sistema de ficheros),...

Acceso a ficheros

Se puede acceder a ficheros en disco, a ficheros en red de forma eficiente mediante OPenDAP o THREDDS, se puede acceder o escribir ficheros netCDF-4 de forma paralela,...

Cómo podemos acceder o crear/modificar ficheros netCDF desde python

En python, como siempre, disponemos de múltiples opciones. Si solo queréis leer un fichero netcdf puntualmente podéis usar scipy.io y, suponiendo que scipy es un paquete que tendrás instalado, no necesitas nada más. Si vas a trabajar más a menudo con ficheros de este tipo, mi recomendación es usar netcdf4-python puesto que os resolverá la vida y además de leer os permitirá crear ficheros netcdf. Existe algún paquete más pero no los voy a citar porque creo que el anterior es el mejor con diferencia.

¿Vamos a ver un poquito de python?

Pues hoy no que tengo otros quehaceres :-), pero voy a enlazar a artículos donde ya se ha visto como acceder a estos datos y a la documentación de netcdf4-python:

¿Y ahora qué?

Contadnos si ya lo usáis y cómo, si no lo usáis pero pensáis que os puede resultar útil, si después de usarlo habéis encontrado otras alternativas (que no sea HDF) que os resulta mejor,... Además, como siempre, podéis usar los comentarios para pedir dudas y, si podemos, las resolvemos.

Saludos.

Kiko Correoso

Licenciado y PhD en Ciencias Físicas, especializado en temas de física, meteorología, climatología, energías renovables, estadística, aprendizaje automático, análisis y visualización de datos. Apasionado de Python y su comunidad. Fundador de pybonacci y editor del sitio en el que se divulga Python, Ciencia y el conocimiento libre en español.

More Posts

Follow Me:
TwitterLinkedIn

4 thoughts on “¿Por qué usar netCDF?

  1. Hola, recién comienzo a hacer data mining con python(tampoco soy experta en python) y me gustaría saber si existe alguna librería para data mining orientada a datos climáticos ó meteorologicos. Saludos

    1. Existen librerías orientadas a datos como Pandas. Usando estas librerías te puedes crear tu propio flujo de trabajo.

      Respecto a librerías para tratar algo de datos meteorológicos es complicado, es un mundo muy amplio y muchas librerías son muy específicas. Tienes librerías para tratar, por ejemplo:

      * datos de algunos modelos climáticos: https://github.com/pacificclimate/pyclimate
      * visualizar datos meteorológicos y oceanográficos: https://github.com/SciTools/iris
      * Post-procesado meteorológico: https://github.com/pytroll/mpop
      * Datos de radar: https://github.com/nguy/PyRadarMet
      * Datos meteorológicos: https://github.com/metpy/MetPy
      * Acceso a la National Digital Forecast Database de la NOAA: https://github.com/rconradharris/python-noaa
      * …

      Lo mejor es ir a:
      PyPI: https://pypi.python.org/pypi/
      Github: https://github.com/
      Bitbucket: https://bitbucket.org/
      Y busques por palabras clave (meteorology, climatology, oceanography, climate, NASA, NOAA; ECMWF, NCAR, NCEP,…).

      Saludos.

Leave a Reply