Why do I receive "All input arguments must be tables."?

Hi all,
Using the code below, I aim to exctract daily tempretaure from NOAA database for a given station id and time interval. Function getdata returns table for each year interval. I created a foor loop on year(y) to get all years' daily tempretaure since NOAA database does not give me access to all years' data. Hence, I have to extract them year by year. The problem here is that when I want to combine all tables into one, I face an error stating that all input arguments must be tables while I am pretty sure that the output of each year is table (the problem is with after y for loop). Can anyone help me in this regard?
clear
close all
clc
load("stations.mat")
n = noaa("NpMoDLCgEVBMZTdPFQHQUOwllVQNHYjz");
for i=1:length(stations)
for j=1:length(stations{i,3})
annualTemperatureData = [];
for y = year(datetime(stations{i,3}{j,2})):year(datetime(stations{i,3}{j,3}))-2
annualTemperatureData = [annualTemperatureData;getdata(n,"GHCND", ...
datetime(strcat(num2str(y),convertCharsToStrings(stations{i,3}{j,2}(5:10)))), ...
datetime(strcat(num2str(y+1),convertCharsToStrings(stations{i,3}{j,2}(5:10)))), ...
stationid = convertCharsToStrings(stations{i,3}{j,1}), ...
datatypeid = "TAVG", ...
datatypeid = "TMIN", ...
datatypeid = "TMAX", ...
limit = 1000, ...
units = "standard")];
end
annualTemperatureData = [annualTemperatureData;getdata(n,"GHCND", ...
datetime(strcat(num2str(y+1),convertCharsToStrings(stations{i,3}{j,2}(5:10)))), ...
datetime(strcat(num2str(y+2),convertCharsToStrings(stations{i,3}{j,3}(5:10)))), ...
stationid = convertCharsToStrings(stations{i,3}{j,1}), ...
datatypeid = "TAVG", ...
datatypeid = "TMIN", ...
datatypeid = "TMAX", ...
limit = 1000, ...
units = "standard")];
stations{i,3}{j,5}=table2cell(annualTemperatureData);
end
end

1 Comment

The function TABLE2CELL requires one input, which must be a table. However you are calling TABLE2CELL() with what is probably a string array (this is just a guess based on the various data types that are being concatenated together into annualTemperatureData). That is unlikely to work.
In any case, please show us the complete error message. This means all of the red text.

Sign in to comment.

 Accepted Answer

EDIT: copyright code removed. Please do not post copyright code on this forum.
The error happens on the line where you vertically concatenate annualTemperatureData with the result returned from getdata().
The reason for the error is that what's returned from getdata() is not a table, and the error message is telling you that you cannot concatenate a table with something that's not a table.
The reason it's not a table is because of a typo here:
datetime(strcat(num2str(y+2),convertCharsToStrings(stations{i,3}{j,3}(5:10))))
% ^ should be 2
which causes getdata() to return a struct containing information about the "bad request" rather than the table of data.
To illustrate the problem:
load("stations.mat")
n = noaa("NpMoDLCgEVBMZTdPFQHQUOwllVQNHYjz");
i = 1;
j = 1;
y = year(datetime(stations{i,3}{j,3}))-2;
% for reference, show start date and end date:
datetime(strcat(num2str(y+1),convertCharsToStrings(stations{i,3}{j,2}(5:10))))
ans = datetime
01-Mar-2021
datetime(strcat(num2str(y+2),convertCharsToStrings(stations{i,3}{j,3}(5:10))))
ans = datetime
15-Dec-2022
% t is not a table
t = getdata(n,"GHCND", ...
datetime(strcat(num2str(y+1),convertCharsToStrings(stations{i,3}{j,2}(5:10)))), ...
datetime(strcat(num2str(y+2),convertCharsToStrings(stations{i,3}{j,3}(5:10)))), ...
stationid = convertCharsToStrings(stations{i,3}{j,1}), ...
datatypeid = "TAVG", ...
datatypeid = "TMIN", ...
datatypeid = "TMAX", ...
limit = 1000, ...
units = "standard")
t =
ResponseMessage with properties: StatusLine: 'HTTP/1.1 400 ' StatusCode: BadRequest Header: [1×9 matlab.net.http.HeaderField] Body: [1×1 matlab.net.http.MessageBody] Completed: 0
With that typo fixed (using the correct end date, so as not to exceed 1000 records, I suppose), getdata() returns a table, as expected:
% for reference, show start date and (corrected) end date:
datetime(strcat(num2str(y+1),convertCharsToStrings(stations{i,3}{j,2}(5:10))))
ans = datetime
01-Mar-2021
datetime(strcat(num2str(y+2),convertCharsToStrings(stations{i,3}{j,2}(5:10))))
ans = datetime
01-Mar-2022
% now t is a table
t = getdata(n,"GHCND", ...
datetime(strcat(num2str(y+1),convertCharsToStrings(stations{i,3}{j,2}(5:10)))), ...
datetime(strcat(num2str(y+2),convertCharsToStrings(stations{i,3}{j,2}(5:10)))), ...
stationid = convertCharsToStrings(stations{i,3}{j,1}), ...
datatypeid = "TAVG", ...
datatypeid = "TMIN", ...
datatypeid = "TMAX", ...
limit = 1000, ...
units = "standard")
t = 258×5 table
date datatype station attributes value _______________________ ________ _____________________ ____________ _____ {'2021-03-01T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,7,0630'} 75 {'2021-03-01T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,7,0630'} 55 {'2021-03-02T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,7,0630'} 56 {'2021-03-02T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,7,0630'} 39 {'2021-03-03T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,7,0630'} 47 {'2021-03-03T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,7,0630'} 32 {'2021-03-04T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,7,0630'} 59 {'2021-03-04T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,7,0630'} 31 {'2021-03-11T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,7,0630'} 70 {'2021-03-11T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,7,0630'} 47 {'2021-03-12T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,7,0630'} 68 {'2021-03-12T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,7,0630'} 51 {'2021-03-15T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,7,0630'} 77 {'2021-03-15T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,7,0630'} 55 {'2021-03-16T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,7,0630'} 71 {'2021-03-16T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,7,0630'} 59
In running your code, I also ran into another problem, where getdata() returns a table, but it's not the table of the data you're expecting. Instead, it's a table with two columns, "status" and "message", and the "message" column says, "This token has reached its temporary request limit of 5 per second."
To illustrate that problem:
clear
close all
clc
load("stations.mat")
n = noaa("NpMoDLCgEVBMZTdPFQHQUOwllVQNHYjz");
for i=1:length(stations)
for j=1:length(stations{i,3})
annualTemperatureData = [];
for y = year(datetime(stations{i,3}{j,2})):year(datetime(stations{i,3}{j,3}))-2
[new_table,new_response] = getdata(n,"GHCND", ...
datetime(strcat(num2str(y),convertCharsToStrings(stations{i,3}{j,2}(5:10)))), ...
datetime(strcat(num2str(y+1),convertCharsToStrings(stations{i,3}{j,2}(5:10)))), ...
stationid = convertCharsToStrings(stations{i,3}{j,1}), ...
datatypeid = "TAVG", ...
datatypeid = "TMIN", ...
datatypeid = "TMAX", ...
limit = 1000, ...
units = "standard");
try
annualTemperatureData = [annualTemperatureData;new_table];
catch ex
disp(ex.message);
disp(annualTemperatureData);
disp(new_table);
disp(new_response);
rethrow(ex);
end
end
[new_table,new_response] = getdata(n,"GHCND", ...
datetime(strcat(num2str(y+1),convertCharsToStrings(stations{i,3}{j,2}(5:10)))), ...
datetime(strcat(num2str(y+2),convertCharsToStrings(stations{i,3}{j,2}(5:10)))), ...
stationid = convertCharsToStrings(stations{i,3}{j,1}), ...
datatypeid = "TAVG", ...
datatypeid = "TMIN", ...
datatypeid = "TMAX", ...
limit = 1000, ...
units = "standard");
try
annualTemperatureData = [annualTemperatureData;new_table];
catch ex
disp(ex.message);
disp(annualTemperatureData);
disp(new_table);
disp(new_response);
rethrow(ex);
end
stations{i,3}{j,5}=table2cell(annualTemperatureData);
end
end
All tables being vertically concatenated must have the same number of variables.
status message ______ ___________________________________________________________________ 429 This token has reached its temporary request limit of 5 per second. 429 This token has reached its temporary request limit of 5 per second. 429 This token has reached its temporary request limit of 5 per second. 429 This token has reached its temporary request limit of 5 per second. 429 This token has reached its temporary request limit of 5 per second. 429 This token has reached its temporary request limit of 5 per second. 429 This token has reached its temporary request limit of 5 per second.
date datatype station attributes value _______________________ ________ _____________________ _____________ _____ {'2002-03-01T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 46 {'2002-03-01T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 23 {'2002-03-02T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 53 {'2002-03-02T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 35 {'2002-03-03T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 54 {'2002-03-03T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 24 {'2002-03-04T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 34 {'2002-03-04T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 16 {'2002-03-05T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 37 {'2002-03-05T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 20 {'2002-03-06T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 59 {'2002-03-06T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 29 {'2002-03-07T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 64 {'2002-03-07T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 41 {'2002-03-08T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 72 {'2002-03-08T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 45 {'2002-03-09T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 73 {'2002-03-09T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-03-10T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 66 {'2002-03-10T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 30 {'2002-03-11T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 53 {'2002-03-11T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 30 {'2002-03-12T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 65 {'2002-03-12T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 41 {'2002-03-13T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-03-13T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 50 {'2002-03-14T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 56 {'2002-03-14T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 37 {'2002-03-15T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-03-15T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 46 {'2002-03-16T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 79 {'2002-03-16T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 59 {'2002-03-17T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 80 {'2002-03-17T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 56 {'2002-03-18T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 80 {'2002-03-18T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 56 {'2002-03-19T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 80 {'2002-03-19T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 57 {'2002-03-20T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 77 {'2002-03-20T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 57 {'2002-03-21T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-03-21T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 49 {'2002-03-22T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 62 {'2002-03-22T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 24 {'2002-03-23T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 62 {'2002-03-23T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 24 {'2002-03-24T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 59 {'2002-03-24T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 35 {'2002-03-25T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 71 {'2002-03-25T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 45 {'2002-03-26T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 75 {'2002-03-26T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 54 {'2002-03-27T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 64 {'2002-03-27T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 35 {'2002-03-28T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-03-28T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 32 {'2002-03-29T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 73 {'2002-03-29T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 47 {'2002-03-30T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 79 {'2002-03-30T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 53 {'2002-03-31T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 60 {'2002-03-31T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 51 {'2002-04-01T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 63 {'2002-04-01T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 44 {'2002-04-02T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-04-02T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 44 {'2002-04-03T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 80 {'2002-04-03T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 48 {'2002-04-04T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-04-04T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 35 {'2002-04-05T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 58 {'2002-04-05T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 36 {'2002-04-06T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 57 {'2002-04-06T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 31 {'2002-04-07T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 64 {'2002-04-07T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 39 {'2002-04-08T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 75 {'2002-04-08T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 39 {'2002-04-09T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 74 {'2002-04-09T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 56 {'2002-04-10T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-04-10T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 51 {'2002-04-11T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 78 {'2002-04-11T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-04-12T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 71 {'2002-04-12T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 63 {'2002-04-13T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 66 {'2002-04-13T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 60 {'2002-04-14T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 76 {'2002-04-14T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 60 {'2002-04-15T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 74 {'2002-04-15T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 57 {'2002-04-16T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 80 {'2002-04-16T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 57 {'2002-04-17T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 80 {'2002-04-17T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 60 {'2002-04-18T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 85 {'2002-04-18T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 59 {'2002-04-19T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-04-19T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 59 {'2002-04-20T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-04-20T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 65 {'2002-04-21T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 86 {'2002-04-21T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 62 {'2002-04-22T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 85 {'2002-04-22T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-04-23T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 71 {'2002-04-23T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 46 {'2002-04-24T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 76 {'2002-04-24T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-04-25T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 81 {'2002-04-25T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 54 {'2002-04-26T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-04-26T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 47 {'2002-04-27T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-04-27T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 49 {'2002-04-28T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 77 {'2002-04-28T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-04-29T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 83 {'2002-04-29T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-04-30T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 78 {'2002-04-30T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 56 {'2002-05-01T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 69 {'2002-05-01T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 57 {'2002-05-02T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 82 {'2002-05-02T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-05-03T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 85 {'2002-05-03T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 58 {'2002-05-04T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 63 {'2002-05-04T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 57 {'2002-05-05T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 75 {'2002-05-05T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 57 {'2002-05-06T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 77 {'2002-05-06T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 57 {'2002-05-07T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 83 {'2002-05-07T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 66 {'2002-05-08T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 84 {'2002-05-08T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-05-09T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 84 {'2002-05-09T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-05-10T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 80 {'2002-05-10T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 65 {'2002-05-11T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 80 {'2002-05-11T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 62 {'2002-05-12T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 86 {'2002-05-12T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-05-13T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 84 {'2002-05-13T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-05-14T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 75 {'2002-05-14T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 42 {'2002-05-15T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 72 {'2002-05-15T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 45 {'2002-05-16T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 77 {'2002-05-16T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 50 {'2002-05-17T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 81 {'2002-05-17T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 60 {'2002-05-18T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 83 {'2002-05-18T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 49 {'2002-05-19T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 59 {'2002-05-19T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 40 {'2002-05-20T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 64 {'2002-05-20T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 39 {'2002-05-21T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-05-21T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 41 {'2002-05-22T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 65 {'2002-05-22T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 42 {'2002-05-23T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 72 {'2002-05-23T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 46 {'2002-05-24T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 76 {'2002-05-24T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 49 {'2002-05-25T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 82 {'2002-05-25T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 57 {'2002-05-26T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 83 {'2002-05-26T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 58 {'2002-05-28T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 85 {'2002-05-28T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 60 {'2002-05-29T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 86 {'2002-05-29T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 63 {'2002-05-30T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 76 {'2002-05-30T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 64 {'2002-05-31T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 83 {'2002-05-31T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 60 {'2002-06-01T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 85 {'2002-06-01T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 62 {'2002-06-02T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 88 {'2002-06-02T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 65 {'2002-06-03T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 89 {'2002-06-03T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-06-04T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 91 {'2002-06-04T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-06-14T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 86 {'2002-06-14T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-06-15T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 86 {'2002-06-15T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 58 {'2002-06-16T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 78 {'2002-06-16T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 56 {'2002-06-17T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',I,0,0800'} 67 {'2002-06-17T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',I,0,0800'} 74 {'2002-06-18T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 83 {'2002-06-18T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 59 {'2002-06-19T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-06-19T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 65 {'2002-06-20T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 86 {'2002-06-20T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 66 {'2002-06-21T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 89 {'2002-06-21T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-06-22T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-06-22T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 62 {'2002-06-23T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 88 {'2002-06-23T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-06-24T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 86 {'2002-06-24T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-06-25T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 85 {'2002-06-25T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-06-26T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 86 {'2002-06-26T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 69 {'2002-06-27T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 89 {'2002-06-27T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 69 {'2002-06-28T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 81 {'2002-06-28T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-06-29T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 78 {'2002-06-29T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-06-30T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 83 {'2002-06-30T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-07-01T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 90 {'2002-07-01T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 66 {'2002-07-02T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 91 {'2002-07-02T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 72 {'2002-07-03T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 91 {'2002-07-03T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-07-05T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 88 {'2002-07-05T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-07-06T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 92 {'2002-07-06T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 74 {'2002-07-07T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 93 {'2002-07-07T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 69 {'2002-07-08T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 93 {'2002-07-08T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 72 {'2002-07-09T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 93 {'2002-07-09T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-07-10T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 93 {'2002-07-10T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 72 {'2002-07-11T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 93 {'2002-07-11T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-07-12T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-07-12T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-07-13T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-07-13T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 71 {'2002-07-14T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 80 {'2002-07-14T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-07-15T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 85 {'2002-07-15T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 66 {'2002-07-16T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-07-16T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 66 {'2002-07-18T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 89 {'2002-07-18T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-07-19T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 90 {'2002-07-19T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 69 {'2002-07-20T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 88 {'2002-07-20T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-07-21T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 84 {'2002-07-21T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 69 {'2002-07-22T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 89 {'2002-07-22T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 71 {'2002-07-23T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 89 {'2002-07-23T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-07-24T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 88 {'2002-07-24T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-07-25T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 86 {'2002-07-25T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 71 {'2002-07-26T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 84 {'2002-07-26T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 72 {'2002-07-27T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-07-27T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 72 {'2002-07-29T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 90 {'2002-07-29T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 72 {'2002-07-30T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 92 {'2002-07-30T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 69 {'2002-07-31T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-07-31T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 69 {'2002-09-01T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 88 {'2002-09-01T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-09-02T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 86 {'2002-09-02T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 66 {'2002-09-03T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 89 {'2002-09-03T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-09-04T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 90 {'2002-09-04T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-09-05T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 94 {'2002-09-05T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 72 {'2002-09-06T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 94 {'2002-09-06T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 71 {'2002-09-08T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 92 {'2002-09-08T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 65 {'2002-09-09T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 89 {'2002-09-09T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 63 {'2002-09-10T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 89 {'2002-09-10T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-09-11T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 94 {'2002-09-11T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 65 {'2002-09-12T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 92 {'2002-09-12T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 66 {'2002-09-13T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 90 {'2002-09-13T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 69 {'2002-09-14T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 86 {'2002-09-14T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 72 {'2002-09-15T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 83 {'2002-09-15T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 71 {'2002-09-16T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-09-16T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-09-17T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 86 {'2002-09-17T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 69 {'2002-09-18T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 86 {'2002-09-18T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 71 {'2002-09-19T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-09-19T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 72 {'2002-09-20T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 86 {'2002-09-20T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 74 {'2002-09-21T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-09-21T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-09-22T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 82 {'2002-09-22T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 69 {'2002-09-23T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 80 {'2002-09-23T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 58 {'2002-09-24T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 79 {'2002-09-24T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 58 {'2002-09-25T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 74 {'2002-09-25T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 60 {'2002-09-26T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 66 {'2002-09-26T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 63 {'2002-09-27T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 76 {'2002-09-27T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 65 {'2002-09-28T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 74 {'2002-09-28T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 62 {'2002-09-29T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 81 {'2002-09-29T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 61 {'2002-09-30T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 82 {'2002-09-30T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-10-01T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 77 {'2002-10-01T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-10-02T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 84 {'2002-10-02T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 66 {'2002-10-03T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-10-03T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-10-04T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 86 {'2002-10-04T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-10-07T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-10-07T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 61 {'2002-10-08T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-10-08T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 50 {'2002-10-09T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 87 {'2002-10-09T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 52 {'2002-10-10T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 71 {'2002-10-10T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 64 {'2002-10-11T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-10-11T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 65 {'2002-10-12T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 80 {'2002-10-12T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 62 {'2002-10-13T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 78 {'2002-10-13T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 61 {'2002-10-14T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-10-14T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 46 {'2002-10-15T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 68 {'2002-10-15T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 47 {'2002-10-16T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 61 {'2002-10-16T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 46 {'2002-10-17T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 63 {'2002-10-17T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 40 {'2002-10-18T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 64 {'2002-10-18T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 39 {'2002-10-19T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 69 {'2002-10-19T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 42 {'2002-10-21T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-10-21T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 56 {'2002-10-22T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 70 {'2002-10-22T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-10-23T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-10-23T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-10-24T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 65 {'2002-10-24T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 56 {'2002-10-25T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-10-25T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 59 {'2002-10-26T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 63 {'2002-10-26T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 59 {'2002-10-27T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 67 {'2002-10-27T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 58 {'2002-10-28T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 69 {'2002-10-28T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 59 {'2002-10-29T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 71 {'2002-10-29T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 65 {'2002-10-30T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 76 {'2002-10-30T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 52 {'2002-10-31T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 58 {'2002-10-31T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 48 {'2002-11-01T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-11-01T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 41 {'2002-11-03T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 51 {'2002-11-03T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 35 {'2002-11-04T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 50 {'2002-11-04T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 46 {'2002-11-05T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 54 {'2002-11-05T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 48 {'2002-11-06T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 69 {'2002-11-06T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 46 {'2002-11-07T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 56 {'2002-11-07T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 33 {'2002-11-08T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 63 {'2002-11-08T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 35 {'2002-11-09T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 66 {'2002-11-09T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 45 {'2002-11-10T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 73 {'2002-11-10T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 64 {'2002-11-12T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 79 {'2002-11-12T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 49 {'2002-11-13T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 58 {'2002-11-13T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 35 {'2002-11-14T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 59 {'2002-11-14T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 31 {'2002-11-15T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 61 {'2002-11-15T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 40 {'2002-11-16T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 54 {'2002-11-16T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 44 {'2002-11-17T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 45 {'2002-11-17T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 30 {'2002-11-18T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 48 {'2002-11-18T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 30 {'2002-11-19T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 63 {'2002-11-19T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 38 {'2002-11-20T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 63 {'2002-11-20T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 43 {'2002-11-21T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-11-21T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 47 {'2002-11-22T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 64 {'2002-11-22T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 38 {'2002-11-23T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 48 {'2002-11-23T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 24 {'2002-11-25T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 63 {'2002-11-25T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 31 {'2002-11-26T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 65 {'2002-11-26T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 31 {'2002-11-27T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 65 {'2002-11-27T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 34 {'2002-11-28T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 40 {'2002-11-28T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 22 {'2002-11-29T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 44 {'2002-11-29T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 24 {'2002-11-30T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 56 {'2002-11-30T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 32 {'2002-12-01T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 58 {'2002-12-01T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 25 {'2002-12-02T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 42 {'2002-12-02T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 24 {'2002-12-03T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 54 {'2002-12-03T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 31 {'2002-12-04T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-12-04T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 38 {'2002-12-05T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 46 {'2002-12-05T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 35 {'2002-12-06T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 35 {'2002-12-06T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 23 {'2002-12-07T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 39 {'2002-12-07T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 19 {'2002-12-08T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 50 {'2002-12-08T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 26 {'2002-12-09T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 47 {'2002-12-09T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 33 {'2002-12-10T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 53 {'2002-12-10T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 35 {'2002-12-11T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 43 {'2002-12-11T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 38 {'2002-12-12T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 43 {'2002-12-12T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 38 {'2002-12-13T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 44 {'2002-12-13T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 38 {'2002-12-14T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 45 {'2002-12-14T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 35 {'2002-12-15T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 47 {'2002-12-15T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 24 {'2002-12-16T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 57 {'2002-12-16T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 31 {'2002-12-17T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 65 {'2002-12-17T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 33 {'2002-12-18T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 64 {'2002-12-18T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 47 {'2002-12-19T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 59 {'2002-12-19T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 50 {'2002-12-20T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 61 {'2002-12-20T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 38 {'2002-12-21T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 61 {'2002-12-21T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 25 {'2002-12-22T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 56 {'2002-12-22T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 33 {'2002-12-23T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 60 {'2002-12-23T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 32 {'2002-12-24T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 51 {'2002-12-24T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 35 {'2002-12-25T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 53 {'2002-12-25T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 29 {'2002-12-26T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 37 {'2002-12-26T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 24 {'2002-12-27T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 40 {'2002-12-27T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 20 {'2002-12-28T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 49 {'2002-12-28T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 22 {'2002-12-29T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 55 {'2002-12-29T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 27 {'2002-12-30T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 62 {'2002-12-30T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 41 {'2003-02-28T00:00:00'} {'TMAX'} {'GHCND:USC00010063'} {',,0,0800' } 48 {'2003-02-28T00:00:00'} {'TMIN'} {'GHCND:USC00010063'} {',,0,0800' } 44
ResponseMessage with properties: StatusLine: 'HTTP/1.1 200 ' StatusCode: OK Header: [1×9 matlab.net.http.HeaderField] Body: [1×1 matlab.net.http.MessageBody] Completed: 0
Error using tabular/vertcat
All tables being vertically concatenated must have the same number of variables.
So, the point: Because getdata() might return something other than a table of the data you expect, you should take care in your code to handle those situations.
For instance, as you can see above, I put the annualTemperatureData = [annualTemperatureData;new_table]; line inside a try block, which has the effect that if any error occurs inside the try block, code execution goes to the catch block, where in this case I display the error message and the current value of the relevant variables, then rethrow the error to stop the execution of the code.
Also note that I'm capturing the second output of getdata(), which may contain useful information, particularly in cases where getdata() did not complete successfully.
I think it's a good idea to use try/catch and/or to write your own function that calls getdata() and then handles unsuccessful attempts to get the data. You can
  • use istable() to check that what's returned from getdata() is in fact a table
  • check the .Properties.VariableNames of the table to make sure it's a table you expected (that can be concatenated with what you've got already)
  • introduce a pause, say pause(0.2), before each getdata() call, to try to avoid making more than 5 requests/second
  • possibly use a while loop to call getdata() repeatedly each time you need a new year (or whatever) worth of data; in other words, attempt to retrieve the data you need until you know it was successful
  • decide what the program should do when all calls to getdata fail to return the expected table - e.g., stop the program or continue on with the next data set and have a gap in your data

6 Comments

Thank you for your reply, I think the error stating that "All tables being vertically concatenated must have the same number of variables" should be due to the token that has reached its temporary request limit of 5 per second. since when it happens, I do not get the expected table that has 5 variables. You advised me to use pause(0,2). Would you please guide me how I can add it to my code?
To implement the 0.2-second pause, simply put the line:
pause(0.2)
immediately before (or after) every line that calls getdata.
I realized that when the width of the table is 2, I do not get the expected table. In other words, the table with width of 2 contains error massage. There are two type os massages, 1:This token has reached its temporary request limit of 5 per second and 2: This token has reached its temporary request limit of 10000 per day. The second one is when my token expires since with each token we can just have 1000 request per day. Hence, I need to switch to anotehr token in this situation. To tackle the first error, I think we can use pause as it is somthing time related.
My question is that how I can write if statment on these two types of error massages. In the code below, within the else block I need to define that If error massage=1, then pause(0,2) and if error massage=2, then use another token.
clear
close all
clc
load("stations.mat")
n = noaa("dHsFHwpJjKwcKvgEWfcwoUmzbqYrdGCc");
for i=1:length(stations)
for j=1:length(stations{i,3})
annualTemperatureData = [];
for y=year(datetime(stations{i,3}{j,2})):year(datetime(stations{i,3}{j,3}))
annualTemperatureData=getdata(n,"GHCND", ...
datetime(strcat(num2str(y),"-01-01")), ...
datetime(strcat(num2str(y),"-12-31")), ...
stationid = stations{i,3}{j,1}, ...
datatypeid = "TAVG", ...
datatypeid = "TMIN", ...
datatypeid = "TMAX", ...
limit = 1000, ...
units = "standard");
if width(annualTemperatureData)==5
annualTemperatureData = [annualTemperatureData;annualTemperatureData];
else
pause(1)
annualTemperatureData=getdata(n,"GHCND", ...
datetime(strcat(num2str(y),"-01-01")), ...
datetime(strcat(num2str(y),"-12-31")), ...
stationid = stations{i,3}{j,1}, ...
datatypeid = "TAVG", ...
datatypeid = "TMIN", ...
datatypeid = "TMAX", ...
limit = 1000, ...
units = "standard");
annualTemperatureData = [annualTemperatureData;annualTemperatureData];
end
stations{i,3}{j,8}=table2cell(annualTemperatureData);
% stations{i,3}{j,8}=annualTemperatureData;
end
end
end
Note that my suggestion was to add a pause(0.2) every time you call getdata, not only when an error occurs, but you can do it however you like.
Don't call the variable that stores the value returned from getdata "annualTemperatureData". You are already using that name to refer to the entire set of data retrieved over multiple calls of getdata. Refer to the code I posted in my answer and call it something else, like "new_table".
To answer your question, the correct approach would be to store what you get from getdata in a variable (say, "new_table"), check what it is (is it a table? use istable to find out; if it is a table, does it have the right set of variables? check new_table.Properties.VariableNames, etc.), and take action accordingly, as I outlined in my answer.
Since you're calling getdata a couple of different places in your code (at least, you were before, now I'm not sure), and there now needs to be some logic associated with each call to validate the result, I would put the getdata call and associated logic into a separate function.
For example, you can try something like this (once the daily limit counter resets):
clear
close all
clc
load("stations.mat")
% store these things in a struct (info) to be passed to the
% data fetching/validation function:
% - (tokens) tokens we can use
% - (expected_vars) the names of the variables we expect in the table
% we hope to get from getdata
% - (error_vars) the names of the variables we get in the table if
% certain errors occur
% - (daily_limit_message) the message we get if we exceed 10000 requests
% per day and need to switch tokens
% - (second_limit_message) the message we get if we exceed 5 requests
% per second and need to pause
info = struct( ...
'tokens',"dHsFHwpJjKwcKvgEWfcwoUmzbqYrdGCc", ... % include other tokens in this string array too (e.g., ["asjkldhsakdh" "aoisudasopdh" "aiwuedyasdiuoh"])
'expected_vars',{{'date' 'datatype' 'station' 'attributes' 'value'}}, ...
'error_vars',{{'status' 'message'}}, ...
'daily_limit_message','This token has reached its temporary request limit of 10000 per day.', ...
'second_limit_message','This token has reached its temporary request limit of 5 per second.');
% index of the current token being used
token_idx = 1; % start with the 1st token
n = noaa(info.tokens(token_idx));
to_stop = false;
for i=1:length(stations)
for j=1:length(stations{i,3})
annualTemperatureData = [];
for y=year(datetime(stations{i,3}{j,2})):year(datetime(stations{i,3}{j,3}))
% call the function get_and_validate_data (defined below):
[status,new_table,n,token_idx] = get_and_validate_data(n,token_idx,num2str(y),stations{i,3}{j,1},info);
if status
% got a table that passed the validation tests.
% append the table to annualTemperatureData:
annualTemperatureData = [annualTemperatureData; new_table];
else
% couldn't get any valid data:
to_stop = true;
break
end
end
if to_stop
break
end
stations{i,3}{j,8}=table2cell(annualTemperatureData);
% stations{i,3}{j,8}=annualTemperatureData;
end
if to_stop
break
end
end
function [status,out,n,token_idx] = get_and_validate_data(n,token_idx,y,id,info)
status = false;
out = [];
while true % keep trying (iterating) until we get a valid table
% get some data:
temp = getdata(n,"GHCND", ...
datetime(strcat(y,"-01-01")), ...
datetime(strcat(y,"-12-31")), ...
stationid = id, ...
datatypeid = "TAVG", ...
datatypeid = "TMIN", ...
datatypeid = "TMAX", ...
limit = 1000, ...
units = "standard");
if istable(temp)
% we got a table. that's good.
% check if it has the right set of variables:
if isequal(temp.Properties.VariableNames,info.expected_vars)
% it does have the right variables. that's good.
% exit the while loop and return the table to the calling function
status = true;
out = temp;
break
elseif isequal(temp.Properties.VariableNames,info.error_vars)
% it's an error message table.
if strcmp(temp.message{1},info.daily_limit_message)
% it's the daily limit error message.
if token_idx < numel(info.tokens)
% we have another token we can use.
% use a new token and try again.
token_idx = token_idx+1;
n = noaa(info.tokens(token_idx));
else
% we were already using the last token.
% we're not going to be able to get any data
break
end
elseif strcmp(temp.message{1},info.second_limit_message)
% it's the 1-second limit error message.
% pause and try again.
pause(1);
else
% it's some other error message.
% we don't know what to do in this case.
% might as well stop the code and give the programmer a chance
% to check out what's going on and what that table is, and
% adjust the code to handle this situation.
keyboard
break
end
else
% it's an unknown table.
% we don't know what to do in this case.
% might as well stop the code and give the programmer a chance
% to check out what's going on and what that table is, and
% adjust the code to handle this situation.
keyboard
break
end
else
% we got something that's not a table.
% we don't know what to do in this case.
% might as well stop the code and give the programmer a chance
% to check out what's going on and what that table is, and
% adjust the code to handle this situation.
keyboard
break
end
end
end
Thank you very much for addressing my issue. As far as I understand, the code exists from the last loop(on y) when the expected table is not provided by the "get_and_validate_data" function. You did this task by using break. That is to say, if we can not capture the expected table for a specific year(y), the code does not go for the next year and instead, it goes to for the next station id. I mean, the code would ignore the years after the year for which there was no expected table. Am I wrong?
However, I think the code would never enter 'else' block within the for loop on y(year). This is because you created a condition that we are pretty sure to get the expected tables.
I would greatly appreciate if you can give me your feedbacks.
I think you understand the code correctly.

Sign in to comment.

More Answers (0)

Categories

Tags

Asked:

on 4 Jan 2023

Commented:

on 9 Jan 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!