function out2ftp % Brian Schlining % 08 Feb 2000 ff = getfname('g:\eqpac\stordat\*.1stMonth'); [r c] = size(ff); for i = 1:r filePath = 'g:\eqpac\stordat\'; [trash filename ext] = fileparts(deblank(ff(i,:))); InFile = [filePath filename ext] OutFile = [filePath filename '.ftp']; D = readout(InFile); D = prc_ed490(D); % Derive Ed[3m+]'s from Ed[3m+]490 D = prc_lu0(D); % Derive Lu0+ and Luwn(Normalized Water leaving radiance's 0m+) D.CHLOC2_ugl = oc2v2(D.LU_490, D.LU_555); % Calculate chlorphyll using OC2 eqn. D.CHLRAT_ugl = 0.7469*(D.LU_443./D.LU_555).^-1.2797; % Add CZCS Chl: log10(C) = 0.053 + 1.71*log10(Lw550/Lw443) D.CHLCZCS_ugl = 10.^(0.053 + 1.71*log10(D.LU0_555./D.LU0_443)); D.FOUL_none = D.LU_683./D.LU_555; % fouling ration descibes amount of biofouling [Year Month Day Hour Minute Second] = datevec(D.TIME_TAG); % Convert back to year Month Day Second = round(Second); ymd = Year*10000+Month*100+Day; r = length(D.TIME_TAG); calFile = ['dat00' filename(5:7) '.cal']; Lat = str2num(filename(9:10)); if strcmp(lower(filename(11)), 's') Lat = -Lat; end Lon = str2num(filename(12:14)); if strcmp(lower(filename(15)), 'w') Lon = -Lon; end %=============== % Begin Writing %=============== fid = fopen(OutFile,'wt'); % Open the file for writing %================== % Write the header %================== fprintf(fid,'/begin_header\n'); fprintf(fid,'/affiliations=Monterey_Bay_Aquarium_Research_Institute\n'); fprintf(fid,'/experiment=TAO_Moorings\n'); fprintf(fid,'/cruise=TAO_98\n'); fprintf(fid,'/investigators=Francisco_Chavez,Pete_Strutton,Brian_Schlining\n'); fprintf(fid,'/contact=chfr@mbari.org,stpe@mbari.org,brian@mbari.org\n'); fprintf(fid,'/parameters=Lu,Ed,Lw,Nlw,Wt,CHL\n'); fprintf(fid,'/data_type=mooring\n'); fprintf(fid,'/original_file_name=%s\n', [filename ext]); fprintf(fid,'/delimiter=space\n'); fprintf(fid,'/missing=-999\n'); if ~isempty(Lat) | ~isempty(Lon) % If Aux data is present fprintf(fid,'/north_latitude=%-5.3f[DEG]\n',Lat); fprintf(fid,'/south_latitude=%-5.3f[DEG]\n',Lat); fprintf(fid,'/east_longitude=%-5.3f[DEG]\n',Lon); fprintf(fid,'/west_longitude=%-5.3f[DEG]\n',Lon); else % If Aux data is not present fprintf(fid,'/north_latitude=%-5.3f[DEG]\n',-999); fprintf(fid,'/south_latitude=%-5.3f[DEG]\n',-999); fprintf(fid,'/east_longitude=%-5.3f[DEG]\n',-999); fprintf(fid,'/west_longitude=%-5.3f[DEG]\n',-999); end fprintf(fid,'/start_date=%8i\n',min(ymd)); fprintf(fid,'/end_date=%8i\n',max(ymd)); %fprintf(fid,'/start_time=%02i:%02i:%02i[GMT]\n',Hour(1), Minute(1), Second(1)); %fprintf(fid,'/end_time=%02i:%02i:%02i[GMT]\n',Hour(end), Minute(end), Second(end)); fprintf(fid,'/start_time=00:00:00[GMT]\n'); fprintf(fid,'/end_time=23:59:00[GMT]\n'); fprintf(fid,'/documents=mbari_mooring_readme.doc\n'); fprintf(fid,'/calibration_files=%s\n',calFile); fprintf(fid,'! Comments: Last column is a quality flag: -1=bad, 0=unchecked, 1=good\n'); fprintf(fid,'! Comments: Bad quality flags may be due to:\n'); fprintf(fid,'! Comments: 1. Measured Ed or Lu < -2\n'); fprintf(fid,'! Comments: 2. Fouling ratio (Lu683/Lu555) > 0.1\n'); fprintf(fid,'! Comments: Unchecked quality flags occur when position data is not available\n'); % Write the fields...They are listed in satlan_ini.m. Changes to field names or % the Field order need to be made there. satlan_ini; fprintf(fid,'/fields=Date1,Time,Date2,'); lenCol = length(ColumnS); for k = 1:lenCol if k == lenCol fprintf(fid,'%s',char(ColumnS(k))); else fprintf(fid,'%s,',char(ColumnS(k))); end end fprintf(fid,'\n'); % Write the Units fprintf(fid,'/units=yyyymmdd,hh:mm:ss,mm/dd/yyyy,'); for k = 1:lenCol if k == lenCol fprintf(fid,'%s',char(UnitsS(k))); else fprintf(fid,'%s,',char(UnitsS(k))); end end fprintf(fid,'\n'); fprintf(fid,'/end_header@\n'); %=============================== % Edit the Data based on values %=============================== QCFlag = zeros(size(D.TIME_TAG)); Names = fieldnames(D); for i = 1:length(Names); fieldName = char(Names(i)); f = getfield(D,fieldName); if length(f) == r j = find(isnan(f) | isinf(f)); f(j) = -999; % non-finite values are tagged with -999 if ~strcmp(fieldName, 'TIME_TAG') j = find(f > 9999 | f < -999); % Out of range values are tagged with -999 f(j) = -999; end QCFlag(j) = -1; j = find(f < -2); % Values less than -2 or greater than 9999 are flagged bad QCFlag(j) = -1; D = setfield(D,fieldName,f); end end j = find(D.FOUL_none > 0.1); % Flag high fouling ratios QCFlag(j) = -1; %============ % Write Body %============ rD = length(D.TIME_TAG); for n = 1:rD fprintf(fid,'%8i ',ymd(n)); fprintf(fid,'%02i:%02i:%02i ',Hour(n), Minute(n), Second(n)); fprintf(fid,'%02i/%02i/%4i ', Month(n), Day(n), Year(n)); fprintf(fid,'%9.3f ', D.T_w(n)); % Temp fprintf(fid,'%12.6f', D.FLUOR_none(n)); fprintf(fid,'%12.6f', D.ED_412(n)); fprintf(fid,'%12.6f', D.ED_443(n)); fprintf(fid,'%12.6f', D.ED_490(n)); fprintf(fid,'%12.6f', D.ED_510(n)); fprintf(fid,'%12.6f', D.ED_555(n)); fprintf(fid,'%12.6f', D.ED_656(n)); fprintf(fid,'%12.6f', D.ED_670(n)); fprintf(fid,'%12.6f', D.ED_683(n)); fprintf(fid,'%12.6f', D.ED_PAR(n)); fprintf(fid,'%12.6f', D.LU_412(n)); fprintf(fid,'%12.6f', D.LU_443(n)); fprintf(fid,'%12.6f', D.LU_490(n)); fprintf(fid,'%12.6f', D.LU_510(n)); fprintf(fid,'%12.6f', D.LU_555(n)); fprintf(fid,'%12.6f', D.LU_670(n)); fprintf(fid,'%12.6f', D.LU_683(n)); fprintf(fid,'%12.6f', D.LU0_412(n)); fprintf(fid,'%12.6f', D.LU0_443(n)); fprintf(fid,'%12.6f', D.LU0_490(n)); fprintf(fid,'%12.6f', D.LU0_510(n)); fprintf(fid,'%12.6f', D.LU0_555(n)); fprintf(fid,'%12.6f', D.LU0_670(n)); fprintf(fid,'%12.6f', D.LU0_683(n)); fprintf(fid,'%12.6f', D.LUWN_412(n)); fprintf(fid,'%12.6f', D.LUWN_443(n)); fprintf(fid,'%12.6f', D.LUWN_490(n)); fprintf(fid,'%12.6f', D.LUWN_510(n)); fprintf(fid,'%12.6f', D.LUWN_555(n)); fprintf(fid,'%12.6f', D.LUWN_670(n)); fprintf(fid,'%12.6f', D.LUWN_683(n)); fprintf(fid,'%12.6f', D.CHLOC2_ugl(n)); fprintf(fid,'%12.6f', D.CHLRAT_ugl(n)); fprintf(fid,'%12.6f', D.CHLCZCS_ugl(n)); fprintf(fid,'%12.6f', D.FOUL_none(n)); fprintf(fid,'%12.6f', -999); fprintf(fid,'%12.6f', -999); fprintf(fid,' %2i \n',QCFlag(n)); end fclose(fid); end