Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Importar archivos NetCDF y datos OPeNDAP

Lea los datos de un archivo NetCDF utilizando las funciones de alto nivel y luego lea el archivo utilizando funciones de bajo nivel del paquete netcdf.

Prestaciones de NetCDF de MATLAB

Formulario de datos comunes de red (NetCDF) es un conjunto de bibliotecas de software y formatos de datos independientes de la máquina que admiten la creación, el acceso y el intercambio de datos científicos orientados a arreglos. NetCDF se usa en una amplia variedad de campos de la ingeniería y la ciencia que quieren un método estándar para almacenar datos de modo que se puedan compartir.

Las funciones de alto nivel de MATLAB® simplifican el proceso de importación de datos desde un archivo NetCDF o una fuente de datos NetCDF OPeNDAP. Las funciones de bajo nivel de MATLAB permiten un mayor control del proceso de importación, dando acceso a las rutinas de la biblioteca de C de NetCDF. Para utilizar las funciones de bajo nivel de manera eficaz, debe estar familiarizado con la interfaz C de NetCDF. La documentación de NetCDF está disponible en el sitio web de Unidata.

Nota

Para obtener información sobre la importación de archivos de formato de datos comunes (CDF), que tienen un formato independiente e incompatible, consulte Import CDF Files Using Low-Level Functions.

Consideraciones de seguridad al conectarse a un servidor OPeNDAP

Se recomienda encarecidamente que solo se conecte a los servidores OPeNDAP de confianza. En la versión R2020b, la interfaz NetCDF de MATLAB se conecta solo a los extremos de línea del protocolo de acceso de datos (DAP) de confianza de manera predeterminada realizando validaciones del nombre del host y el certificado del servidor. Anteriormente, al acceder a un servidor OPeNDAP, la validación del nombre del host y el certificado del servidor estaba deshabilitada de manera predeterminada.

Si quiere deshabilitar la validación del nombre del host y el certificado del servidor, agregue la siguiente línea en un archivo .dodsrc en el directorio actual:

[mylocaltestserver.lab] HTTP.SSL.VALIDATE=0

Esto hace que la interfaz NetCDF de MATLAB se conecte con el servidor OPeNDAP cuyo nombre se especifica en mylocaltestserver.lab de URI sin realizar ninguna validación en el certificado del servidor o nombre de host. Este cambio continúa en futuras sesiones de MATLAB. Para obtener más información sobre la autenticación del servidor OPeNDAP y la validación del nombre del host, consulte soporte de la autorización de netCDF.

Leer desde un archivo NetCDF utilizando funciones de alto nivel

Este ejemplo muestra cómo visualizar y leer el contenido de un archivo NetCDF, utilizando funciones de alto nivel.

Visualice el contenido del archivo NetCDF de muestra, example.nc.

ncdisp('example.nc')
Source:
           \\matlabroot\toolbox\matlab\demos\example.nc
Format:
           netcdf4
Global Attributes:
           creation_date = '29-Mar-2010'
Dimensions:
           x = 50
           y = 50
           z = 5
Variables:
    avagadros_number
           Size:       1x1
           Dimensions: 
           Datatype:   double
           Attributes:
                       description = 'this variable has no dimensions'
    temperature     
           Size:       50x1
           Dimensions: x
           Datatype:   int16
           Attributes:
                       scale_factor = 1.8
                       add_offset   = 32
                       units        = 'degrees_fahrenheight'
    peaks           
           Size:       50x50
           Dimensions: x,y
           Datatype:   int16
           Attributes:
                       description = 'z = peaks(50);'
Groups:
    /grid1/
        Attributes:
                   description = 'This is a group attribute.'
        Dimensions:
                   x    = 360
                   y    = 180
                   time = 0     (UNLIMITED)
        Variables:
            temp
                   Size:       []
                   Dimensions: x,y,time
                   Datatype:   int16
    
    /grid2/
        Attributes:
                   description = 'This is another group attribute.'
        Dimensions:
                   x    = 360
                   y    = 180
                   time = 0     (UNLIMITED)
        Variables:
            temp
                   Size:       []
                   Dimensions: x,y,time
                   Datatype:   int16

ncdisp muestra todos los grupos, dimensiones y definiciones de variables del archivo. Las dimensiones ilimitadas se identifican con la etiqueta UNLIMITED.

Lea los datos de la variable peaks.

peaksData  = ncread('example.nc','peaks');

Muestre información sobre la salida de peaksData.

whos peaksData
  Name            Size            Bytes  Class    Attributes

  peaksData      50x50             5000  int16  

Lea el atributo description asociado a la variable.

peaksDesc  = ncreadatt('example.nc','peaks','description')
peaksDesc =

z = peaks(50);

Cree una gráfica de superficie tridimensional de los datos de la variable. Use el valor del atributo description como título de la figura.

surf(double(peaksData))
title(peaksDesc);

Lea el atributo description asociado al grupo /grid1/. Especifique el nombre del grupo como la segunda entrada para la función ncreadatt.

g = ncreadatt('example.nc','/grid1/','description')
g =

This is a group attribute.

Lea el atributo global, creation_date. En los atributos globales, especifique el segundo argumento de entrada para ncreadatt como '/'.

creation_date = ncreadatt('example.nc','/','creation_date')
creation_date =

29-Mar-2010

Encontrar todas las dimensiones ilimitadas en el archivo NetCDF

Este ejemplo muestra cómo encontrar todas las dimensiones ilimitadas de un grupo en un archivo NetCDF, utilizando funciones de alto nivel.

Obtenga información sobre el grupo /grid2/ en el archivo de muestra, example.nc, usando la función ncinfo.

ginfo = ncinfo('example.nc','/grid2/')
ginfo = 

      Filename: '\\matlabroot\toolbox\matlab\demos\example.nc'
          Name: 'grid2'
    Dimensions: [1x3 struct]
     Variables: [1x1 struct]
    Attributes: [1x1 struct]
        Groups: []
        Format: 'netcdf4'

ncinfo devuelve un arreglo de estructura que contiene información sobre el grupo.

Obtenga un vector de los valores booleanos que indican las dimensiones ilimitadas de este grupo.

unlimDims = [ginfo.Dimensions.Unlimited]
unlimDims =

     0     0     1

Use el vector unlimDims para mostrar la dimensión ilimitada.

disp(ginfo.Dimensions(unlimDims))
         Name: 'time'
       Length: 0
    Unlimited: 1

Leer desde un archivo NetCDF utilizando funciones de bajo nivel

Este ejemplo muestra cómo obtener información sobre las dimensiones, las variables y los atributos en un archivo NetCDF utilizando las funciones de bajo nivel de MATLAB en el paquete netcdf. Para utilizar estas funciones de manera eficaz, debe estar familiarizado con la interfaz C de NetCDF.

Abrir un archivo NetCDF

Abra el archivo NetCDF de muestra, example.nc, usando la función netcdf.open, con acceso de solo lectura.

ncid = netcdf.open('example.nc','NC_NOWRITE')
ncid = 65536

netcdf.open devuelve un identificador de archivo.

Obtener información sobre el archivo NetCDF

Obtenga información sobre el contenido del archivo usando la función netcdf.inq. Esta función corresponde a la función nc_inq en la API de la biblioteca de C de NetCDF.

[ndims,nvars,natts,unlimdimID] = netcdf.inq(ncid)
ndims = 3
nvars = 3
natts = 1
unlimdimID = -1

netcdf.inq devuelve el número de dimensiones, variables y atributos globales del archivo y devuelve el identificador de la dimensión ilimitada del archivo. Una dimensión ilimitada puede crecer.

Obtenga el nombre del atributo global del archivo usando la función netcdf.inqAttName. Esta función corresponde a la función nc_inq_attname en la API de la biblioteca de C de NetCDF. Para obtener el nombre de un atributo, debe especificar el ID de la variable a la que está asociado el atributo y el número de atributo. Para acceder a un atributo global, que no está asociado a una variable en particular, utilice la constante 'NC_GLOBAL' como el ID de la variable.

global_att_name = netcdf.inqAttName(ncid,...
    netcdf.getConstant('NC_GLOBAL'),0)
global_att_name = 
'creation_date'

Obtenga información sobre el tipo de datos y la longitud del atributo usando la función netcdf.inqAtt. Esta función corresponde a la función nc_inq_att en la API de la biblioteca de C de NetCDF. Una vez más, especifique el ID de la variable usando netcdf.getConstant('NC_GLOBAL').

[xtype,attlen] = netcdf.inqAtt(ncid,...
    netcdf.getConstant('NC_GLOBAL'),global_att_name)
xtype = 2
attlen = 11

Obtenga el valor del atributo usando la función netcdf.getAtt.

global_att_value = netcdf.getAtt(ncid,...
    netcdf.getConstant('NC_GLOBAL'),global_att_name)
global_att_value = 
'29-Mar-2010'

Obtenga información sobre la primera dimensión del archivo usando la función netcdf.inqDim. Esta función corresponde a la función nc_inq_dim en la API de la biblioteca de C de NetCDF. La segunda entrada a netcdf.inqDim es el ID de la dimensión, que es un índice basado en ceros que identifica la dimensión. La primera dimensión tiene el valor de índice 0.

[dimname,dimlen] = netcdf.inqDim(ncid,0)
dimname = 
'x'
dimlen = 50

netcdf.inqDim devuelve el nombre y la longitud de la dimensión.

Obtenga información sobre la primera variable del archivo usando la función netcdf.inqVar. Esta función corresponde a la función nc_inq_var en la API de la biblioteca de C de NetCDF. La segunda entrada a netcdf.inqVar es el ID de la variable, que es un índice basado en ceros que identifica la variable. La primera variable tiene el valor de índice 0.

[varname,vartype,dimids,natts] = netcdf.inqVar(ncid,0)
varname = 
'avagadros_number'
vartype = 6
dimids =

     []
natts = 1

netcdf.inqVar devuelve el nombre, el tipo de datos, el ID de la dimensión y el número de atributos asociados a la variable. La información del tipo de datos devuelta en vartype es el valor numérico de las constantes del tipo de datos NetCDF, como NC_INT y NC_BYTE. Consulte la documentación de NetCDF para obtener información sobre estas constantes.

Leer los datos del archivo NetCDF

Lea los datos asociados a la variable, avagadros_number, en el archivo de ejemplo, usando la función netcdf.getVar. La segunda entrada a netcdf.getVar es el ID de la variable, que es un índice basado en ceros que identifica la variable. La variable avagadros_number tiene el valor de índice 0.

A_number = netcdf.getVar(ncid,0)
A_number = 6.0221e+23

Vea el tipo de datos de A_number.

whos A_number
  Name          Size            Bytes  Class     Attributes

  A_number      1x1                 8  double              

Las funciones del paquete netcdf eligen automáticamente la clase de MATLAB que mejor se ajuste al tipo de datos NetCDF, pero también se puede especificar la clase de los datos de retorno utilizando un argumento opcional para netcdf.getVar.

Lea los datos asociados a avagadros_number y devuelva los datos como clase single.

A_number = netcdf.getVar(ncid,0,'single');
whos A_number
  Name          Size            Bytes  Class     Attributes

  A_number      1x1                 4  single              

Cerrar un archivo NetCDF

Cierre el archivo NetCDF, example.nc.

netcdf.close(ncid)

Consulte también

| | |

Temas relacionados

Sitios web externos