
- (A) Python 2.7. Si aún no lo tenemos, la última versión disponible para la rama 2.x (la más extendida) es actualmente la 2.7.5, descargable aquí
- (B) NetCDF4. Las librerías base están escritas en C y para usarlas es necesario descargarlas y compilarlas o, algo más práctico, obtener directamente los binarios. Siguiendo la segunda vía, aquí está el instalador con la última versión para netCDF4. Para una descripción más detallada de estos binarios, ver el enlace [2]
- (C) Acceso a las librerías NetCDF. Para un enlace posterior a las librerías, es necesario agregar al PATH los siguientes directorios, generados por el instalador: C:\Program Files\netCDF 4.3.0\bin y c:\Program Files\netCDF 4.3.0\deps\shared\bin
- (D) Numpy. El acceso a los datos de los ficheros NetCDF se realizará de forma efectiva con esta librería para Python, especializada en el manejo de arrays. La última versión disponible hoy, la 1.7.1, para Python 2.7 está disponible aquí
- (E) Interfaz de Python para netcdf4. Ésta es la librería Python que permite leer y escribir en los netcdf desde scripts .py, actuando de pasarela hacia las librerías base previamente configuradas (C). El instalador para la 2.X está en este enlace
- (F) Validación. Finalmente, para probar que todo está correcto, ejecutaremos un pequeño script de Python, leyendo un netcdf cualquiera (fichero testNC.py). P.ej. estos datos de la NASA muestran las anomalías térmicas sobre la superficie terrestre y es posible descargarlos en formato netCDF desde aquí en un fichero «nmaps.nc». Como nota útil, señalar que para visualizar de forma rápida el netcdf se puede usar un visor como Panoply [3] o un software SIG como gvSIG, que en su versión más reciente incluye soporte a este formato [4]
testNC.py
# -*- coding: utf-8 -*- import netCDF4 as nc import numpy as np ''' Prueba de acceso a netCDF en Python Win32. Abre un fichero .nc y obtiene el valor mínimo de una variable conocida ('TEMPANOMALY') ''' print 'TEST netCDF en Python' rutaFichero = "c:/users/admin/nmaps.nc" fichero = nc.Dataset(rutaFichero) print "* Variables disponibles en el fichero:" for v in fichero.variables: print v datos = fichero.variables["TEMPANOMALY"][0] print "* Mayor anomalia de temperatura negativa : {0} K".format(min(datos))
minimo = np.ma.MaskedArray.min(fichero.variables["TEMPANOMALY"][:]) maximo = np.ma.MaskedArray.max(fichero.variables["TEMPANOMALY"][:])
- [1] NetCDF (Network Common Data Format) F.A.Q.: http://www.unidata.ucar.edu/software/netcdf/docs/faq.html
- [2] Installing and Using netCDF-C Libraries in a Windows Environment: http://www.unidata.ucar.edu/software/netcdf/docs/winbin.html
- [3] Visor de datos netCDF Panoply (con versión para Win32): http://www.giss.nasa.gov/tools/panoply/
- [4] Soporte para netCDF en gvSIG 2.0: http://blog.gvsig.org/2013/04/30/datos-en-netcdf-para-gvsig-v2-0/
- [5] Otros ejemplos de uso de ficheros .nc en Python: http://netcdf4-python.googlecode.com/svn/trunk/docs/netCDF4-module.html