El formato NetCDF

Kobi A. Mosquera Vásquez
kobi.mosquera@igp.gob.pe

Introducción

El formato NetCDF (Network Common Data Format) fue creado por UNIDATA como formato estándar para que sea usado en algunos de sus softwares que ofrece a la comunidad científica. La característica de este formato que contiene la suficiente información para poder saber qué clase de data se encuentra en el archivo (tipo de variable, unidades, dimensiones, institución que la creo, etc) a diferencia de otros formatos que necesitan de un archivo adicional para su correcta interpretación. También se puede contar como otra de sus características la portabilidad de su formato, es decir, que puede ser manipulado por cualquier computadora que tenga las librerias NetCDF instaladas en su disco duro. Para más información acerca del formato NetCDF se puede revisar: The NetCDF Users' Guide

Esta página mostrará, con un ejemplo simple, cómo crear archivos NetCDF usando las librerias de UNIDATA para FORTRAN. Además nos ayudaremos de una pequeña rutina para crear la variable tiempo en dos diferentes convenciones comunes: EPIC y Cooperative Ocean-Atmosphere Research Data Service ( COARDS).


Crear un archivo NetCDF

Para esto seguiremos la secuencia del llamado de las rutinas que recomienda UNIDATA para la creación de este formato. La secuencia es la siguiente:

NF_CREATE Se inicia la creacion del archivo NetCDF
...
NF_DEF_DIM Se definen las dimensiones
...
NF_DEF_VAR Se definen las variables
...
NF_PUT_ATT Se asignan atributos a cada variable
...
NF_ENDDEF Finaliza el modo de Definición
...
NF_PUT_VAR Se ingresan los valores de las variables
...
NF_CLOSE Se termina la creación del archivo NetCDF

Siguiendo estas reglas se puede crear un archivo en formato NetCDF de cualquier información que tengamos. Por ejemplo, la siguiente serie horaria de temperatura del aire pertenece a la estación que llamaremos La Calurosa, ubicada en 5 S y 78 W a una altura de 0. msnm y los valores indefinidos los declaramos como -999.0. Este archivo lleva como nombre data_ta.txt y tiene formato:

FECHA                      TA
01/04/2001 00:00:00       20.5
01/04/2001 01:00:00       20.3
01/04/2001 02:00:00       19.8
01/04/2001 03:00:00       19.9
         ...               ...   

La lectura del archivo será de lo más simple pero, en general, la data inicial puede estar en binario, o ascci, y dependerá de cada usuario elegir la manera correcta de leer su propia información. Hay que tener en cuenta las convenciones usadas para las dimensiones y variables, es decir, la manera de poner la información en el archivo. No todos los softwares interpretan todas la convenciones, por ejemplo, GrADS no interpreta la convención de EPIC para el tiempo (Dia Juliano) pero sí interpreta la establecida por COARDS (tiempo en horas, días, etc, desde una fecha previamente establecida). Es por esto que si deseamos crear un archivo PORTABLE debemos buscar que este sea leído por todas los softwares que se usan comúnmente en el área de las ciencias de la Tierra.

La rutina que convierte las fechas al formato sugerido por COARDS es tiempo_en_horas.f y las explicaciones de c´mo se usa se encuentra escrito en el archivo. La fecha inicial desde la cual se empiezan a contar las horas es el 01 de Enero del 2001, esto puede ser modificado. Por otro lado, la rutina que genera días julianos (convencion EPIC) es: yyddmm_jul.f

Con ayuda de estas rutinas podremos crear el archivo NetCDF con nuestro programa en FORTRAN: crear_NetCDF.f y al nuevo archivo le daremos el nombre de data_ta.nc que puede ser leído por GrADS, FERRET, ect.


Graficando con GrADS

La interface de lectura de archivos NetCDF de GrADS no fue creado para leer información de estaciones puntuales sino para leer campo de datos. Debido a esto se tiene el problema que las variables lat y lon no son interpretadas correctamente por dicho software, por lo que se debe recurrir a un archivo adicional para poder aliviar este problema. Esto es una salida, pero no la correcta, ya que el formato NetCDF fue creado exclusivamente para no hacer uso de otro archivo adicional que explique su contenido. Para poder evadir este problema yo he escrito, en el atributo global title la siguiente linea:

"Lat=-5. Lon=-78. Temperatura del Aire"
Esto puede ser interpretado por GrADS cuando se usa el comando 'q file'.

El script que uso para leer y graficar la información del archivo data_ta.nc es :
'reinit'
'set display color white'
'c'
'sdfopen data_ta.nc'
'set t 1 72'
'set grads off'
'd temp_aire'
'q file'
linea=sublin(result,1)
titulo=substr(linea,10,38)
'draw title 'titulo
'printim plot_con_GrADS.gif'
El archivo es: plot.gs y el gráfico es:




08 de Mayo del 2006 / kobi@chavin.igp.gob.pe