Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to extract variable names from a netCDF file in R?

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.

like image 521
elarry Avatar asked Jan 29 '13 15:01

elarry


2 Answers

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"   
like image 71
plannapus Avatar answered Sep 21 '22 17:09

plannapus


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 <[email protected]>
Version: 1.6.9
Author: David Pierce <[email protected]>
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/

like image 31
knb Avatar answered Sep 19 '22 17:09

knb