How to extract the data from .nc file based on longitude and latitude,time?
19 views (last 30 days)
Show older comments
Hi, I have to extract the data from netcdf file based on lat,long and time. I have written the following code.
ncid = netcdf.open('\C:\Users\divecha21\Desktop\errorBar\tasmax_day_BNU-ESM_rcp85_r1i1p1_20060101-21001231.nc','NC_NOWRITE');
peaksData = ncinfo('\C:\Users\divecha21\Desktop\errorBar\tasmax_day_BNU-ESM_rcp85_r1i1p1_20060101-21001231.nc','tasmax');
ncdisp('\C:\Users\divecha21\Desktop\errorBar\tasmax_day_BNU-ESM_rcp85_r1i1p1_20060101-21001231.nc','tasmax');
[ndim, nvar, natt, unlim] = netcdf.inq(ncid)
[dimname, dimlength] = netcdf.inqDim(ncid, 0)
[dimname, dimlength] = netcdf.inqDim(ncid, 1)
[dimname, dimlength] = netcdf.inqDim(ncid, 2)
lon = netcdf.getVar(ncid,0,0,128)
%time = netcdf.getVar(ncid,2,0,34675)
lat = netcdf.getVar(ncid,1,0,64)
latlim = [5.25 36.75];
lonlim = [60.25 97.25];
precJanuary = netcdf.getVar(ncid,2,[60.25 5.25 1],[97.25 36.75 1]);
Actually I have global temperature data i have to extract only india. After execution,I got the following error.
>> sample1
Error using ncread Expected start to be integer-valued.
Error in internal.matlab.imagesci.nc/read (line 557) validateattributes(start,{'numeric'},...
Error in ncread (line 58) vardata = ncObj.read(varName, varargin{:});
Error in sample1 (line 27) precJanuary = ncread('\C:\Users\divecha21\Desktop\errorBar\tasmax_day_GFDL-ESM2M_rcp85_r1i1p1_20060101-20101231.nc','tasmax',[60.25 5.25 1],[97.25 36.75 1]);
Can any one help me to clear this? I am new to matlab.
Thank you
5 Comments
Mohnish sinha
on 10 Nov 2014
will you please write the revised code for extracting nc files, I am looking for the data for India...
Accepted Answer
Ashish Uthama
on 20 May 2014
Edited: Ashish Uthama
on 20 May 2014
The nc* functions and the netcdf.* functions represent two independent ways to access a NetCDF file. I would recommend sticking to nc* functions until you get comfortable enough to directly access the NetCDF library interface using the netcdf.* functions (it uses C style indexing and dimension ordering which is different from what nc* functions report and use).
Instead of
precJanuary = netcdf.getVar(ncid,2,[0 0 0],[128 64 1]);
try
precJanuary = ncread(filename, varname,[1 1 1],[128 64 1]);
3 Comments
Jonas Damsbo
on 27 Dec 2018
I try to use your code line:
z = ncread(ncfiles(i).name,'z',[1 1 1],[360 181 1]);
But I got the error:
Index exceeds array bounds. Why?
More Answers (0)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!