/[MITgcm]/MITgcm_contrib/gael/profilesMatlabProcessing/profiles_IO_v2/MITprof_nc2odv.m
ViewVC logotype

Contents of /MITgcm_contrib/gael/profilesMatlabProcessing/profiles_IO_v2/MITprof_nc2odv.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download)
Wed Apr 13 21:01:34 2011 UTC (14 years, 3 months ago) by roquet
Branch: MAIN
CVS Tags: checkpoint65x, checkpoint65r, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, HEAD
Improvements of MITprof netcdf IO interface. Handling of file names modified.
New functions:
- MITprof_addVar : add a variable to an existing MITprof netcdf file
- MITprof_nc2odv : convert data into ODV4 format

1 function MITprof_nc2odv(fileIn,varargin)
2 % function MITprof_nc2odv(fileIn,[fileOut])
3 %
4 % convert a file in MITprof netcdf format into an ODV spreadsheet.
5 % fileIn: path (absolute or relative) to MITprof netcdf file
6 % fileOut: path (absolute or relative) to ODV spreadsheet.
7 % use a .txt prefix (either added or replaced in fileOut name)
8 % by default, fileOut is the same than fileIn but with a .txt suffix
9 % if the file already exist, it will be replaced.
10
11
12 fileOut=fileIn;
13 if nargin>1, fileOut=varargin{1}; end
14
15 [pathstr, name, ext] = fileparts(fileIn);
16 if isempty(pathstr) | strcmp(pathstr,'.'), pathstr=pwd; end
17 fileIn=[pathstr '/' name ext];
18
19 [pathstr, name, ext] = fileparts(fileOut);
20 if isempty(pathstr) | strcmp(pathstr,'.'), pathstr=pwd; end
21 if isempty(ext) | ~strcmp(ext,'.txt'), ext='.txt'; end
22 fileOut=[pathstr '/' name ext];
23
24
25
26
27 dat=datestr(now,'yyyy-mm-ddTHH:MM:SS');
28
29 str={'//<Version>ODV Spreadsheet V4.0</Version>'
30 ['//<CreateTime>' dat '</CreateTime>']
31 ['//<Software>MITprof on Matlab ' version '</Software>']
32 ['//<Source>' fileIn '</Source>']
33 '//<DataField>Ocean</DataField>'
34 '//<DataType>Profiles</DataType>'
35 '//'
36 };
37
38 % open fileOut
39 fid=fopen(fileOut,'w');
40
41 % write headerlines
42 for kk=1:length(str)
43 fprintf(fid,'%s\n',str{kk});
44 end
45
46 % load fileIn
47 M=MITprof_load(fileIn);
48
49 str=['Cruise Station Type yyyy-mm-ddThh:mm:ss.sss ' ...
50 'Longitude [degrees_east] Latitude [degrees_north] ' ...
51 'Depth [m] QV:WOD Temperature [¬?C] QV:WOD Salinity [psu] QV:WOD QV:ODV:SAMPLE'];
52 fprintf(fid,'%s\n',str);
53 format_head='%s\t%s\t%s\t%s\t%6.4f\t%6.4f\t';
54 format_nohead='\t\t\t\t\t\t';
55 format_TS='%3.1f\t0\t%6.4f\t%d\t%6.4f\t%d\t1\n';
56 format_Tonly='%3.1f\t0\t%6.4f\t%d\t\t\t1\n';
57 format_Sonly='%3.1f\t0\t\t\t%6.4f\t%d\t1\n';
58 for ii=1:length(M.prof_lon),
59 prof_descr=M.prof_descr{ii};
60 I=strfind(prof_descr,'//');
61 cruise=prof_descr(1:I-1);
62 station=prof_descr(I+2:end);
63 type='B';
64 dat=datestr(M.prof_date(ii),'yyyy-mm-ddTHH:MM:SS');
65 lon=M.prof_lon(ii);
66 lat=M.prof_lat(ii);
67 D=M.prof_depth;
68 T=M.prof_T(ii,:);
69 Tflag=M.prof_Tflag(ii,:);
70 S=M.prof_S(ii,:);
71 Sflag=M.prof_Sflag(ii,:);
72 iFormat=(1:length(D))*0;
73 Its=find(~isnan(T)&~isnan(S));iFormat(Its)=1;
74 It=find(~isnan(T)&isnan(S));iFormat(It)=2;
75 Is=find(isnan(T)&~isnan(S));iFormat(Is)=3;
76 I=find(iFormat~=0);
77 if length(I)==0, continue, end
78 pp=I(1);
79 switch iFormat(pp)
80 case 1
81 fprintf(fid,[format_head format_TS], ...
82 cruise,station,type,dat,lon,lat,D(pp),T(pp),Tflag(pp),S(pp),Sflag(pp));
83 case 2
84 fprintf(fid,[format_head format_Tonly], ...
85 cruise,station,type,dat,lon,lat,D(pp),T(pp),Tflag(pp));
86 case 3
87 fprintf(fid,[format_head format_Sonly], ...
88 cruise,station,type,dat,lon,lat,D(pp),S(pp),Sflag(pp));
89 end
90 for ii=2:length(I),
91 pp=I(ii);
92 switch iFormat(pp)
93 case 1
94 fprintf(fid,[format_nohead format_TS], ...
95 D(pp),T(pp),Tflag(pp),S(pp),Sflag(pp));
96 case 2
97 fprintf(fid,[format_nohead format_Tonly], ...
98 D(pp),T(pp),Tflag(pp));
99 case 3
100 fprintf(fid,[format_nohead format_Sonly], ...
101 D(pp),S(pp),Sflag(pp));
102 end
103 end
104 end
105
106 fclose(fid);
107

  ViewVC Help
Powered by ViewVC 1.1.22