% % Ed Hill % Fri Dec 12 12:09:00 EST 2003 % Convert ACSII drifter data to netCDF format suitable for Ingrid cat ForJohnMarshall.dat | awk '{print $1}' | sort -n | uniq > xval cat ForJohnMarshall.dat | awk '{print $2}' | sort -n | uniq > yval matlab -nojvm clear all load ForJohnMarshall.dat dat = ForJohnMarshall; clear ForJohnMarshall xmin = min(dat(:,1)); xmax = max(dat(:,1)); x = [ xmin:0.25:xmax ]; ymin = min(dat(:,2)); ymax = max(dat(:,2)); y = [ ymin:0.25:ymax ]; u = NaN * ones(length(x),length(y)); v = NaN * ones(length(x),length(y)); n = size(dat,1); k = 1; for k = 1:n, i = (dat(k,1) - xmin)/0.25 + 1; j = (dat(k,2) - ymin)/0.25 + 1; u(i,j) = dat(k,3); v(i,j) = dat(k,4); end idu = 'zonal_velocity'; idv = 'meridional_velocity'; units = 'cm/s'; surf(u'), shading interp, view(2), title(idu) pause(3) surf(v'), shading interp, view(2), title(idv) pause(3) desc = [ 'Drifter data from Nikolai Maximenko' ]; ncname = [ 'maximenko_drifter.nc' ]; nc = netcdf(ncname, 'clobber'); nc.reference = desc; nc.author = 'Ed Hill '; nc.date = 'Dec 12, 2003'; nc('X') = length(x); nc('Y') = length(y); nc{'X'} = 'X'; nc{'Y'} = 'Y'; nc{ idu } = { 'Y', 'X' }; nc{ idv } = { 'Y', 'X' }; nc{'X'}.uniquename = 'X'; nc{'X'}.long_name = 'longitude'; nc{'X'}.gridtype = ncint(1); nc{'Y'}.uniquename = 'Y'; nc{'Y'}.long_name = 'latitude'; nc{'Y'}.gridtype = ncint(0); nc{'X'}.units = 'degree_east'; nc{'Y'}.units = 'degree_north'; nc{ idu }.units = units; nc{ idu }.long_name = idu; nc{ idu }.missing_value = ncdouble(NaN); nc{ idu }.FillValue_ = ncdouble(0.); nc{ idv }.units = units; nc{ idv }.long_name = idv; nc{ idv }.missing_value = ncdouble(NaN); nc{ idv }.FillValue_ = ncdouble(0.); nc{'X'}(:) = x; nc{'Y'}(:) = y; nc{ idu }(:) = u'; nc{ idv }(:) = v'; nc = close(nc); uu = u; ind = find(isnan(uu)); uu(ind) = 0.0; vv = v; ind = find(isnan(vv)); vv(ind) = 0.0; desc = [ 'Drifter data from Nikolai Maximenko' ]; ncname = [ 'maximenko_zeros.nc' ]; nc = netcdf(ncname, 'clobber'); nc.reference = desc; nc.author = 'Ed Hill '; nc.date = 'Dec 12, 2003'; nc('X') = length(x); nc('Y') = length(y); nc{'X'} = 'X'; nc{'Y'} = 'Y'; nc{ idu } = { 'Y', 'X' }; nc{ idv } = { 'Y', 'X' }; nc{'X'}.uniquename = 'X'; nc{'X'}.long_name = 'longitude'; nc{'X'}.gridtype = ncint(1); nc{'Y'}.uniquename = 'Y'; nc{'Y'}.long_name = 'latitude'; nc{'Y'}.gridtype = ncint(0); nc{'X'}.units = 'degree_east'; nc{'Y'}.units = 'degree_north'; nc{ idu }.units = units; nc{ idu }.long_name = idu; nc{ idu }.missing_value = ncdouble(NaN); nc{ idu }.FillValue_ = ncdouble(-9999.); nc{ idv }.units = units; nc{ idv }.long_name = idv; nc{ idv }.missing_value = ncdouble(NaN); nc{ idv }.FillValue_ = ncdouble(-9999.); nc{'X'}(:) = x; nc{'Y'}(:) = y; nc{ idu }(:) = uu'; nc{ idv }(:) = vv'; nc = close(nc); ncdump maximenko_drifter.nc | more ncdump maximenko_zeros.nc | more scp maximenko_drifter.nc channel.mit.edu:/home/edhill/maximenko_drifter/ scp maximenko_zeros.nc channel.mit.edu:/home/edhill/maximenko_drifter/ % AS ROOT ON channel.mit.edu : cd /home/benno/ingrid/data/MIT/LOCAL/PEOPLE/EH3 mkdir maximenko_drifter cd maximenko_drifter ln -s /home/edhill/maximenko_drifter/* . % Re-work with additional data ! wget http://iprc.soest.hawaii.edu/~nikolai/ForJohnMarshall_1.dat.gz ! gunzip ForJohnMarshall_1.dat.gz matlab -nojvm clear all load ForJohnMarshall_1.dat dat = ForJohnMarshall_1; clear ForJohnMarshall_1 xmin = min(dat(:,1)); xmax = max(dat(:,1)); x = [ xmin:0.25:xmax ]; ymin = min(dat(:,2)); ymax = max(dat(:,2)); y = [ ymin:0.25:ymax ]; u = NaN * ones(length(x),length(y)); v = NaN * ones(length(x),length(y)); uu = NaN * ones(length(x),length(y)); vv = NaN * ones(length(x),length(y)); n = size(dat,1); k = 1; for k = 1:n, i = (dat(k,1) - xmin)/0.25 + 1; j = (dat(k,2) - ymin)/0.25 + 1; u(i,j) = dat(k,3); v(i,j) = dat(k,4); uu(i,j) = dat(k,6); vv(i,j) = dat(k,7); end idu = 'zonal_velocity'; idv = 'meridional_velocity'; units = 'cm/s'; iduu = 'uu'; idvv = 'vv'; unitseke = 'cm^2/s^2'; surf(u'), shading interp, view(2), title(idu) pause(3) surf(v'), shading interp, view(2), title(idv) pause(3) surf(uu'), shading interp, view(2), title(iduu) pause(3) surf(vv'), shading interp, view(2), title(idvv) pause(3) desc = [ 'Drifter data from Nikolai Maximenko' ]; ncname = [ 'maximenko_drifter.nc' ]; nc = netcdf(ncname, 'clobber'); nc.reference = desc; nc.author = 'Ed Hill '; nc.date = 'Dec 12, 2003'; nc('X') = length(x); nc('Y') = length(y); nc{'X'} = 'X'; nc{'Y'} = 'Y'; nc{ idu } = { 'Y', 'X' }; nc{ idv } = { 'Y', 'X' }; nc{ iduu } = { 'Y', 'X' }; nc{ idvv } = { 'Y', 'X' }; nc{'X'}.uniquename = 'X'; nc{'X'}.long_name = 'longitude'; nc{'X'}.gridtype = ncint(1); nc{'Y'}.uniquename = 'Y'; nc{'Y'}.long_name = 'latitude'; nc{'Y'}.gridtype = ncint(0); nc{'X'}.units = 'degree_east'; nc{'Y'}.units = 'degree_north'; nc{ idu }.units = units; nc{ idu }.long_name = idu; nc{ idu }.missing_value = ncdouble(NaN); nc{ idu }.FillValue_ = ncdouble(0.); nc{ idv }.units = units; nc{ idv }.long_name = idv; nc{ idv }.missing_value = ncdouble(NaN); nc{ idv }.FillValue_ = ncdouble(0.); nc{ iduu }.units = unitseke; nc{ iduu }.long_name = iduu; nc{ iduu }.missing_value = ncdouble(NaN); nc{ iduu }.FillValue_ = ncdouble(0.); nc{ idvv }.units = unitseke; nc{ idvv }.long_name = idvv; nc{ idvv }.missing_value = ncdouble(NaN); nc{ idvv }.FillValue_ = ncdouble(0.); nc{'X'}(:) = x; nc{'Y'}(:) = y; nc{ idu }(:) = u'; nc{ idv }(:) = v'; nc{ iduu }(:) = uu'; nc{ idvv }(:) = vv'; nc = close(nc); ! scp maximenko_drifter.nc channel.mit.edu:/home/edhill/maximenko_drifter/ % ;;; Local Variables: *** % ;;; mode:matlab *** % ;;; End: ***