-
Notifications
You must be signed in to change notification settings - Fork 1
/
curAscSiteCodeCoord.m
73 lines (60 loc) · 2.59 KB
/
curAscSiteCodeCoord.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
%% curAscSiteCodeCoord.m
% This function retrieves the site codes and coordinates from the header of
% WERA cur_asc total files.
% INPUT:
% header: header of the WERA cur_asc file.
% OUTPUT:
% sCC_err: error flag (0 = correct, 1 = error)
% siteCodes: string array containing the site codes
% siteLat: array containing the site codes
% siteLon: array containing the site codes
% Author: Lorenzo Corgnati
% Date: October 5, 2018
% E-mail: lorenzo.corgnati@sp.ismar.cnr.it
%%
function [sCC_err,siteCodes,siteLat,siteLon] = curAscSiteCodeCoord(header)
disp(['[' datestr(now) '] - - ' 'curAscSiteCodeCoord.m started.']);
sCC_err = 0;
warning('off', 'all');
try
% Read the header
numSites = 0;
for line_idx=1:length(header)
splitLine = regexp(header{line_idx}, '[ \t]+', 'split');
% Find the site lat, lon and codes
if(length(splitLine)>1)
if((any(strcmp(splitLine,'North'))) && (any(strcmp(splitLine,'East'))))
numSites = numSites + 1;
latLogical = strcmp(splitLine,'North');
lat_idx = find(latLogical, 1, 'first') - 1;
lonLogical = strcmp(splitLine,'East');
lon_idx = find(lonLogical, 1, 'first') - 1;
siteLogical = strcmp(splitLine,'UTC');
site_idx = find(siteLogical, 1, 'first') + 1;
% Fill the output variables
siteLat(numSites) = str2double(splitLine{lat_idx});
siteLon(numSites) = str2double(splitLine{lon_idx});
siteCodes(numSites,:) = upper(splitLine{site_idx}(1:3));
elseif ((any(strcmp(splitLine,'North'))) && (any(strcmp(splitLine,'West'))))
numSites = numSites + 1;
latLogical = strcmp(splitLine,'North');
lat_idx = find(latLogical, 1, 'first') - 1;
lonLogical = strcmp(splitLine,'West');
lon_idx = find(lonLogical, 1, 'first') - 1;
siteLogical = strcmp(splitLine,'UTC');
site_idx = find(siteLogical, 1, 'first') + 1;
% Fill the output variables
siteLat(numSites) = str2double(splitLine{lat_idx});
siteLon(numSites) = -str2double(splitLine{lon_idx});
siteCodes(numSites,:) = upper(splitLine{site_idx}(1:3));
end
end
end
catch err
disp(['[' datestr(now) '] - - ERROR in ' mfilename ' -> ' err.message]);
sCC_err = 1;
end
if(sCC_err==0)
disp(['[' datestr(now) '] - - ' 'curAscSiteCodeCoord.m successfully executed.']);
end
return