function []=netcdf_ecco_mask(rep_data,file_data,x00,y00); % %object: reads a pkg/profiles netcdf file and masks all profiles that are out of a given region % %input: % rep_data, file_data % x00 and y00 (vectors) broken line that defines the region of interest. %For example: x00=[300 340 340 300 300]; y00=[60 60 70 70 60]; % %result: [rep_data 'masked_' file_data] %rep_data='./'; file_data='fileCur.nc'; %x00=[300 340 340 300 300]; y00=[60 60 70 70 60]; %flag valid profiles: %-------------------- eval(['ncload ' rep_data file_data ' prof_lon prof_lat;']); prof_lonALL=prof_lon; prof_latALL= prof_lat; flag_profiles=zeros(size(prof_lonALL)); length_div=1e3; num_div=ceil(length(prof_lonALL)/length_div); for cur_div=1:num_div list_profiles0=[(cur_div-1)*length_div+1:min(cur_div*length_div,length(prof_lonALL))]; [tmp1]=netcdf_ecco_GenericgridLocateCell(x00,y00,prof_lonALL(list_profiles0),prof_latALL(list_profiles0)); flag_profiles(list_profiles0(find(tmp1>0)))=1; end flagged_profiles=find(flag_profiles==0); %create final netcdf file: %------------------------- [depth,myvars,prof_descr,mystruct,mystruct1D]=netcdf_ecco_read(rep_data,file_data); for vcur=1:size(myvars); eval(['mystruct.prof_' deblank(myvars(vcur,:)) 'weight(flagged_profiles,:)=0;']); end file_characteristics=[length(mystruct1D.prof_lon) 0 size(prof_descr,2) -9999]; eval(['ncload ' rep_data file_data ' prof_interp_XC11 prof_interp_YC11 prof_interp_i prof_interp_j prof_interp_lon prof_interp_lat prof_interp_weights;']); if ~isempty(prof_interp_XC11) prof_interp_XC11(flagged_profiles)=-9999; prof_interp_XCNINJ(flagged_profiles)=-9999; prof_interp_YC11(flagged_profiles)=-9999; prof_interp_YCNINJ(flagged_profiles)=-9999; prof_interp_i(flagged_profiles,:)=-9999; prof_interp_j(flagged_profiles,:)=-9999; prof_interp_lon(flagged_profiles,:)=-9999; prof_interp_lat(flagged_profiles,:)=-9999; prof_interp_weights(flagged_profiles,:)=-9999; mystruct1D=struct('prof_YYYYMMDD',mystruct1D.prof_YYYYMMDD,'prof_HHMMSS',mystruct1D.prof_HHMMSS,... 'prof_lon',mystruct1D.prof_lon,'prof_lat',mystruct1D.prof_lat,... 'prof_interp_XC11',prof_interp_XC11,'prof_interp_YC11',prof_interp_YC11,... 'prof_interp_XCNINJ',prof_interp_XCNINJ,'prof_interp_YCNINJ',prof_interp_YCNINJ... ); mystruct4mygrid=struct('prof_interp_i',prof_interp_i,... 'prof_interp_j',prof_interp_j,... 'prof_interp_lon',prof_interp_lon,... 'prof_interp_lat',prof_interp_lat,... 'prof_interp_weights',prof_interp_weights); netcdf_ecco_create([rep_data 'masked_' file_data], file_characteristics, depth, ... prof_descr, mystruct, mystruct1D,mystruct4mygrid); else netcdf_ecco_create([rep_data 'masked_' file_data], file_characteristics, depth, ... prof_descr, mystruct, mystruct1D); end fprintf([rep_data 'masked_' file_data ' written \n']);