Trouble loading data from .nc file
3 views (last 30 days)
Show older comments
Hi,
This is my first time trying to pull data from an netCDF file using MATLAB. I'm having difficulty pulling data from this file below:
url = 'http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis/pressure/hgt.1968.nc';
This is a file that basically should have the "thickness" (height) of the atmosphere at certain: levels (different from height), latitude, longitude and time. When I use netcdf.getVar(ncid, var) I can get data about each of those 4 variables but not the thickness data itself... does that make sense?
Anyways, any help is appreciated and sorry in advance if this seems vague b/c I don't know where to start.
Thanks!
0 Comments
Accepted Answer
Kelly Kearney
on 12 Nov 2013
What version of Matlab are you running? They've introduced some nice higher-level reading and writing functions in more recent versions (R2010 and above, I think). You should be able to get the data quickly via ncread. Based on the file details:
ncdisp(url, '/', 'min')
Source:
http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis/pressure/hgt.1968.nc
Format:
64bit
Variables:
level
Size: 17x1
Dimensions: level
Datatype: single
lat
Size: 73x1
Dimensions: lat
Datatype: single
lon
Size: 144x1
Dimensions: lon
Datatype: single
time
Size: 1464x1
Dimensions: time
Datatype: double
hgt
Size: 144x73x17x1464
Dimensions: lon,lat,level,time
Datatype: int16
you might not want to read in that whole variable all at once (b/c it has a scale factor and offset, it will be read in as a double array). To get one slice at time 1 and level 1:
x = ncread(url, 'hgt', [1 1 1 1], [Inf Inf 1 1]);
2 Comments
Kelly Kearney
on 12 Nov 2013
The ncread function allows you to specify the start, count, and stride values to read certain subsets along each dimension. hgt is a 4-dimensional lat x lon x level x time variable, so I requested that the read start on the first index of each of these 4 dimensions; for the first two dimensions, Inf indicates to read until the end of that dimension, and for the latter 2 I only chose to read a single value (resulting in a 144 x 73 x 1 x 1 array).
Regarding the values, according to the attributes, it looks like those values are as intended:
>> ncdisp(url, 'hgt')
Source:
http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis/pressure/hgt.1968.nc
Format:
64bit
Dimensions:
lon = 144
lat = 73
level = 17
time = 1464 (UNLIMITED)
Variables:
hgt
Size: 144x73x17x1464
Dimensions: lon,lat,level,time
Datatype: int16
Attributes:
long_name = '4xDaily Geopotential height'
actual_range = [-5.55e+02 3.24e+04]
unpacked_valid_range = [-7.00e+02 3.50e+04]
units = 'm'
add_offset = 3.21e+04
scale_factor = 1
missing_value = 3.28e+04
precision = 0
least_significant_digit = 0
GRIB_id = 7
GRIB_name = 'HGT'
var_desc = 'Geopotential height'
dataset = 'NMC Reanalysis'
level_desc = 'Multiple levels'
statistic = 'Individual Obs'
parent_stat = 'Other'
valid_range = [-3.28e+04 2.93e+03]
Perhaps these are geopotential height anomalies instead of absolute values?
More Answers (0)
See Also
Categories
Find more on NetCDF in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!