I am trying to download HYCOM (www.hycom.org) data using the OPeNDAP access method and MATLAB. The data url can be generated by selecting desired variables from this link. I need to download the data using scripts to automate the download of many years of data.
My MATLAB code looks like below, which you should be able to run as well without any modification:
% This script download the Global HYCOM reanalysis data for a given time step
for i=0:2863timestep = 1; % This value need to be adjusted for duration of the record needed
j=i+timestep;url = ['http://tds.hycom.org/thredds/dodsC/GLBv0.08/expt_53.X/data/1994?depth[0:1:39],lat[0:1:3250],lon[0:1:4499],time['... num2str(i) ':1:' num2str(j) ... '],tau[0:1:2864],water_u[0:1:0][0:1:0][0:1:0][0:1:0],water_u_bottom[0:1:0][0:1:0][0:1:0],water_v[0:1:0][0:1:0][0:1:0][0:1:0],water_v_bottom[0:1:0][0:1:0][0:1:0],water_temp[0:1:0][0:1:0][0:1:0][0:1:0],water_temp_bottom[0:1:0][0:1:0][0:1:0],salinity[0:1:0][0:1:0][0:1:0][0:1:0],salinity_bottom[0:1:0][0:1:0][0:1:0],surf_el[0:1:0][0:1:0][0:1:0]']; info = ncinfo(url); % Successfully read these variables
depth = ncread(url, 'depth'); lat = ncread(url, 'lat');lon = ncread(url, 'lon');time = ncread(url, 'time'); % Trouble reading below variables
water_u = ncread(url, 'water_u');water_v = ncread(url, 'water_v');water_u_bottom = ncread(url, 'water_u_bottom');water_v_bottom = ncread(url, 'water_v_bottom');surf_el = ncread(url, 'surf_el');water_temp = ncread(url, 'water_temp');end
The scripts reads the depth, lat, lon, time fine, but gives error in reading the water_u variable on wards. The error message is:
Error using netcdflibThe NetCDF library encountered an error during execution of 'getVarShort' function - 'Index exceeds dimension bound(NC_EINVALCOORDS)'.Error in netcdf.getVar (line 136)data = netcdflib(funcstr,ncid,varid,varargin{:});Error in internal.matlab.imagesci.nc/read (line 605)data = netcdf.getVar(gid, varid);Error in ncread (line 58)vardata = ncObj.read(varName, varargin{:});
I am not sure what is wrong with my code, and couldn't find any answer searching online so far. Appreciate your help.
Best Answer