1 |
gforget |
1.1 |
function []=netcdf_ecco_mask(rep_data,file_data,x00,y00); |
2 |
|
|
% |
3 |
|
|
%object: reads a pkg/profiles netcdf file and masks all profiles that are out of a given region |
4 |
|
|
% |
5 |
|
|
%input: |
6 |
|
|
% rep_data, file_data |
7 |
|
|
% x00 and y00 (vectors) broken line that defines the region of interest. |
8 |
|
|
%For example: x00=[300 340 340 300 300]; y00=[60 60 70 70 60]; |
9 |
|
|
% |
10 |
|
|
%result: [rep_data 'masked_' file_data] |
11 |
|
|
|
12 |
|
|
|
13 |
|
|
%rep_data='./'; file_data='fileCur.nc'; |
14 |
|
|
%x00=[300 340 340 300 300]; y00=[60 60 70 70 60]; |
15 |
|
|
|
16 |
|
|
|
17 |
|
|
%flag valid profiles: |
18 |
|
|
%-------------------- |
19 |
|
|
|
20 |
|
|
eval(['ncload ' rep_data file_data ' prof_lon prof_lat;']); |
21 |
|
|
prof_lonALL=prof_lon; prof_latALL= prof_lat; |
22 |
|
|
|
23 |
|
|
flag_profiles=zeros(size(prof_lonALL)); |
24 |
|
|
length_div=1e3; |
25 |
|
|
num_div=ceil(length(prof_lonALL)/length_div); |
26 |
|
|
for cur_div=1:num_div |
27 |
|
|
list_profiles0=[(cur_div-1)*length_div+1:min(cur_div*length_div,length(prof_lonALL))]; |
28 |
|
|
[tmp1]=netcdf_ecco_GenericgridLocateCell(x00,y00,prof_lonALL(list_profiles0),prof_latALL(list_profiles0)); |
29 |
|
|
flag_profiles(list_profiles0(find(tmp1>0)))=1; |
30 |
|
|
end |
31 |
|
|
|
32 |
|
|
flagged_profiles=find(flag_profiles==0); |
33 |
|
|
|
34 |
|
|
|
35 |
|
|
%create final netcdf file: |
36 |
|
|
%------------------------- |
37 |
|
|
|
38 |
|
|
[depth,myvars,prof_descr,mystruct,mystruct1D]=netcdf_ecco_read(rep_data,file_data); |
39 |
|
|
|
40 |
|
|
for vcur=1:size(myvars); |
41 |
|
|
eval(['mystruct.prof_' deblank(myvars(vcur,:)) 'weight(flagged_profiles,:)=0;']); |
42 |
|
|
end |
43 |
|
|
|
44 |
|
|
file_characteristics=[length(mystruct1D.prof_lon) 0 size(prof_descr,2) -9999]; |
45 |
|
|
|
46 |
|
|
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;']); |
47 |
|
|
if ~isempty(prof_interp_XC11) |
48 |
|
|
prof_interp_XC11(flagged_profiles)=-9999; prof_interp_XCNINJ(flagged_profiles)=-9999; |
49 |
|
|
prof_interp_YC11(flagged_profiles)=-9999; prof_interp_YCNINJ(flagged_profiles)=-9999; |
50 |
|
|
prof_interp_i(flagged_profiles,:)=-9999; prof_interp_j(flagged_profiles,:)=-9999; |
51 |
|
|
prof_interp_lon(flagged_profiles,:)=-9999; prof_interp_lat(flagged_profiles,:)=-9999; |
52 |
|
|
prof_interp_weights(flagged_profiles,:)=-9999; |
53 |
|
|
|
54 |
|
|
mystruct1D=struct('prof_YYYYMMDD',mystruct1D.prof_YYYYMMDD,'prof_HHMMSS',mystruct1D.prof_HHMMSS,... |
55 |
|
|
'prof_lon',mystruct1D.prof_lon,'prof_lat',mystruct1D.prof_lat,... |
56 |
|
|
'prof_interp_XC11',prof_interp_XC11,'prof_interp_YC11',prof_interp_YC11,... |
57 |
|
|
'prof_interp_XCNINJ',prof_interp_XCNINJ,'prof_interp_YCNINJ',prof_interp_YCNINJ... |
58 |
|
|
); |
59 |
|
|
|
60 |
|
|
mystruct4mygrid=struct('prof_interp_i',prof_interp_i,... |
61 |
|
|
'prof_interp_j',prof_interp_j,... |
62 |
|
|
'prof_interp_lon',prof_interp_lon,... |
63 |
|
|
'prof_interp_lat',prof_interp_lat,... |
64 |
|
|
'prof_interp_weights',prof_interp_weights); |
65 |
|
|
|
66 |
|
|
netcdf_ecco_create([rep_data 'masked_' file_data], file_characteristics, depth, ... |
67 |
|
|
prof_descr, mystruct, mystruct1D,mystruct4mygrid); |
68 |
|
|
|
69 |
|
|
else |
70 |
|
|
|
71 |
|
|
netcdf_ecco_create([rep_data 'masked_' file_data], file_characteristics, depth, ... |
72 |
|
|
prof_descr, mystruct, mystruct1D); |
73 |
|
|
|
74 |
|
|
end |
75 |
|
|
|
76 |
|
|
fprintf([rep_data 'masked_' file_data ' written \n']); |
77 |
|
|
|
78 |
|
|
|
79 |
|
|
|
80 |
|
|
|