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
.
Consideraciones de seguridad al conectarse a un servidor OPeNDAP
Leer desde un archivo NetCDF utilizando funciones de alto nivel
Encontrar todas las dimensiones ilimitadas en el archivo NetCDF
Leer desde un archivo NetCDF utilizando funciones de bajo nivel
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
ncread
| ncreadatt
| ncdisp
| ncinfo