| 1 | 
mlosch | 
1.1 | 
function [H,x,y]=extract_s2004(lon_lo,lon_hi,lat_lo,lat_hi) | 
| 2 | 
  | 
  | 
%function [H,x,y]=extract_s2004(lon_lo,lon_hi,lat_lo,lat_hi) | 
| 3 | 
  | 
  | 
% | 
| 4 | 
  | 
  | 
% extract topography data from GEBCO 1min data set  | 
| 5 | 
  | 
  | 
% | 
| 6 | 
  | 
  | 
   | 
| 7 | 
  | 
  | 
  ncquiet; | 
| 8 | 
  | 
  | 
   | 
| 9 | 
  | 
  | 
  load DATAPATH datapath | 
| 10 | 
  | 
  | 
 | 
| 11 | 
  | 
  | 
% $$$   fname = fullfile(datapath,'gebcosubmap.mat'); | 
| 12 | 
  | 
  | 
% $$$   load(fname) | 
| 13 | 
  | 
  | 
  fname = fullfile(datapath,'s2004_2min.grd'); | 
| 14 | 
  | 
  | 
  ncload(fname) | 
| 15 | 
  | 
  | 
  dmap = z; | 
| 16 | 
  | 
  | 
  clear z | 
| 17 | 
  | 
  | 
% $$$   nc = netcdf(fname,'r'); | 
| 18 | 
  | 
  | 
% $$$   if isempty(nc); | 
| 19 | 
  | 
  | 
% $$$     error([fname ' not found']) | 
| 20 | 
  | 
  | 
% $$$   end | 
| 21 | 
  | 
  | 
  lon = x; | 
| 22 | 
  | 
  | 
  lat = y; | 
| 23 | 
  | 
  | 
   | 
| 24 | 
  | 
  | 
  if lon(1)==lon(end)-360 | 
| 25 | 
  | 
  | 
    % remove last longitude | 
| 26 | 
  | 
  | 
    lon(end) = []; | 
| 27 | 
  | 
  | 
    dmap(:,end) = []; | 
| 28 | 
  | 
  | 
  end | 
| 29 | 
  | 
  | 
  nx = length(lon); | 
| 30 | 
  | 
  | 
  ny = length(lat); | 
| 31 | 
  | 
  | 
  if size(lon,1) > 1; lon = lon'; end | 
| 32 | 
  | 
  | 
  if size(lat,1) > 1; lat = lat'; end | 
| 33 | 
  | 
  | 
   | 
| 34 | 
  | 
  | 
  if lon_lo<0 | 
| 35 | 
  | 
  | 
    i0=find( lon(1:end-1)<=lon_lo+360 & lon(2:end)>lon_lo+360); | 
| 36 | 
  | 
  | 
  else | 
| 37 | 
  | 
  | 
    i0=find( lon(1:end-1)<=lon_lo & lon(2:end)>lon_lo); | 
| 38 | 
  | 
  | 
  end | 
| 39 | 
  | 
  | 
  if lon_hi<0 | 
| 40 | 
  | 
  | 
    i1=find( lon<lon_hi+360 & [lon(2:end) 360]>=lon_hi+360)+1; | 
| 41 | 
  | 
  | 
  else | 
| 42 | 
  | 
  | 
    i1=find( lon<lon_hi & [lon(2:end) 360]>=lon_hi)+1; | 
| 43 | 
  | 
  | 
  end | 
| 44 | 
  | 
  | 
  j0=find( [-90 lat(1:end-1)]<=lat_lo & lat>lat_lo)-1; j0=max(1,j0); | 
| 45 | 
  | 
  | 
  j1=find( lat<lat_hi & [lat(2:end) 90]>=lat_hi)+1; j1=min(ny,j1); | 
| 46 | 
  | 
  | 
  if i0<i1 | 
| 47 | 
  | 
  | 
    ii=mod((i0:i1)-1,nx)+1; | 
| 48 | 
  | 
  | 
  else | 
| 49 | 
  | 
  | 
    ii=mod([i0:nx 1:i1]-1,nx)+1; | 
| 50 | 
  | 
  | 
  end | 
| 51 | 
  | 
  | 
  jj=j0:j1; | 
| 52 | 
  | 
  | 
  x = lon(ii); | 
| 53 | 
  | 
  | 
  y = lat(jj); | 
| 54 | 
  | 
  | 
  H = dmap(jj,ii)'; | 
| 55 | 
  | 
  | 
   | 
| 56 | 
  | 
  | 
  return |