Downloading weather files from a server

5 views (last 30 days)
Hello
I am working on a project where i need to periodically download weather forecasts from a server. I have been experimenting with the urlread() and urlwrite() functions which is easy enough. The problem is that the url for the file includes date and time of submission. So i would like to download the most recent files.
where the date and time portion changes. How can i specify a url such that i will get the most recent copy?

Accepted Answer

Walter Roberson
Walter Roberson on 8 Jan 2012
If you urlread() on http://dd.weatheroffice.ec.gc.ca/meteocode/ont/csv/ then you could pick out the most recent file.
  2 Comments
alexander
alexander on 9 Jan 2012
ok i have that done. It's kind of dirty but it works. I did this:
clear all
clc
current_files=urlread('http://dd.weatheroffice.ec.gc.ca/meteocode/ont/csv/');
relev_files=strfind(current_files,'FPTO11.0_r1124_TA.csv');
%for most recent file use last index in relev_files
ta_url=['http://dd.weatheroffice.ec.gc.ca/meteocode/ont/csv/',current_files(relev_files(1:end)-21:relev_files(1:end)+20)];
ta_data=urlread(ta_url)
Now i want to format this data into a matrix.
i was going use character location relative to the comma and then use num2str() but this does not work on the right side of the comma. How can i specify the end of a line?
I tried (ta_data(6:\n) but this does not work.
Abdul
Abdul on 9 Aug 2015
Edited: Cedric on 9 Aug 2015
I have worked on this and put the data in the separate matrices
close all, clear all, clc
%%download weather forecast data from server
current_files=urlread('http://dd.weatheroffice.ec.gc.ca/meteocode/ont/csv/');
relev_files=strfind(current_files,'FPTO51.0_r1101_TA.csv');
%for most recent file use last index in relev_files
ta_url=['http://dd.weatheroffice.ec.gc.ca/meteocode/ont/csv/',current_files(relev_files(1:end)-21:relev_files(1:end)+20)];
% ta_url=['http://dd.weatheroffice.ec.gc.ca/meteocode/ont/csv/',current_files(relev_files(1:end)-21:relev_files(1:end)+20)];
ta_data=urlread(ta_url)
%%put forecast data into vectors
clc
C = [strsplit(ta_data, '\n')]' ;
D = char(C(2:end-1));
for I = 1:length(D)
E = strsplit(D(I,:), '-');
year(I) = str2num(char(E(1,1)));
month(I) = str2num(char(E(1,2)));
F = char(E(1,3));
G = strsplit(F, 'T');
day(I) = str2num(char(G(1,1)));
H = char(G(1,2));
J = strsplit(H, ':');
hour(I) = str2num(char(J(1,1)));
min(I) = str2num(char(J(1,2)));
K = char(J(1,3));
L = strsplit(K, 'Z');
sec(I) = str2num(char(L(1,1)));
M = char(L(1,2));
N = strsplit(M, ',');
value(I) = str2num(char(N(1,2)));
end
% F = strsplit(D(1,:), 'T')
[year' month' day' hour' min' sec' value']
figure
t = datetime(year, month, day, hour, min, sec);
plot(t, value, '*')
hold on
plot(t, value, '-k', 'Linewidth', 2)
axis tight, grid minor
xlabel('Time')
ylabel('Temperature (°C)')

Sign in to comment.

More Answers (0)

Categories

Find more on Introduction to Installation and Licensing in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!