How to extract variable names from a netCDF file i

2019-02-16 17:00发布

I am writing a function in R to extract some air quality modelling data from netCDF files. I have the Package "ncdf" installed.

In order to allow other users or myself to choose what variables to extract from a netCDF file, I would like to extract the names of all variables in the file, so that I can present in a simple list rather than just print.ncdf() the file to give too much information. Is there any way of doing it?

I tried unlist() to the var field of the ncdf object but it seemed that it returned the contents as well...

I googled and searched stack*overflow* but didn't seem to find an answer, so your help is very much appreciated.

Many thanks in advance.

2条回答
我只想做你的唯一
2楼-- · 2019-02-16 17:15

If your ncdf object is called nc, then quite simply:

names(nc$var)

With an example, using the dataset downloaded here, for instance (since you didn't provide with one):

nc <- open.ncdf("20130128-ABOM-L4HRfnd-AUS-v01-fv01_0-RAMSSA_09km.nc")
names(nc$var)
[1] "analysed_sst"     "analysis_error"   "sea_ice_fraction" "mask"   
查看更多
SAY GOODBYE
3楼-- · 2019-02-16 17:34

It is now 2016. ncdf package is deprecated. Same code as SE user plannapus' answer is now:

library(ncdf4)
netcdf.file <- "flux.nc"
nc = ncdf4::nc_open(netcdf.file)
variables = names(nc[['var']])
#print(nc)

A note from the documentation:

Package: ncdf
Title: Interface to Unidata netCDF Data Files
Maintainer: Brian Ripley <ripley@stats.ox.ac.uk>
Version: 1.6.9
Author: David Pierce <dpierce@ucsd.edu>
Description: This is deprecated and will be removed
   from CRAN in early 2016: use 'RNetCDF' or 'ncdf4' instead.

Newer package "ncdf4" is designed to work with the netcdf library 
version 4, and supports features such as compression and 
chunking.Unfortunately, for various reasons the ncdf4 package must have
a different API than the ncdf package.

A note from the home page of the maintainer:

Package ncdf4 -- use this for new code

The "ncdf4" package is designed to work with the netcdf library, version 4. 
It includes the ability to use compression and chunking, 
which seem to be some of the most anticipated benefits of the version 4 
library. Note that the API of ncdf4 has to be different 
from the API of ncdf, unfortunately. New code should use ncdf4, not ncdf. 

http://cirrus.ucsd.edu/~pierce/ncdf/

查看更多
登录 后发表回答