function windcan
% COPYRIGHT (C) 2009, JOSH WIEBE
% DISTRIBUTED "AS IS" UNDER THE BSD SOFTWARE LICENCE, SEE LICENCE FILE
% THIS PROGRAM USES THE URLWRITE COMMAND TO DOWNLOAD HOURLY CLIMATE DATA FROM THE ENVIRONMENT CANADA WEBSITE
% WIND DATA IS THEN PLUCKED FROM THE DOWNLOADED FILES AND SAVED IN A CSV FILE WHICH CAN LATER BE ANALYSED
% IN WRPLOT OR A SIMILAR PROGRAM, OUTPUT FILE COLUMN ORDER IS YEAR, MONTH, DAY, HOUR, DIRECTION, SPEED
fprintf ('See http://climate.weatheroffice.ec.gc.ca/climateData/canada_e.html \n select location, scroll to link to "bulk data", station id appears in menu bar. \n e.g. Ottawa = 4337 \n');
stationid = input('Enter Station ID ');
year1 = input('Enter start year ');
year2 = input('Enter end year ');
month1 = input('Enter start month, enter 1 for January ');
month2 = input('Enter end month ');
filename = input('Enter output file name: ', 's');
N = (month2-month1+1)*(year2-year1+1);
year = year1;
month = month1;
% ROUTINE TO DOWNLOAD CLIMATE DATA
for i=1:N
urlwrite(sprintf('http://www.climate.weatheroffice.ec.gc.ca/climateData/bulkdata_e.html?timeframe=1&Prov=XX&StationID=%i&Year=%i&Month=%i&Day=1&format=csv&type=hly', stationid, year, month), sprintf('%i%i%i.csv', stationid, year, month));
if month < month2;
month = month +1;
else
month = month1;
year = year+1;
end %if
end %for
% RESET PARAMETERS, ASSIGN NAME FOR OUTPUT FILE
year = year1;
month = month1;
s = 'YEAR, MONTH, DAY, HOUR, DIRECTION, SPEED (m/s)';
dlmwrite(filename, s, '');
% ROUTINE TO PLUCK WIND DATA FROM DOWNLOADED CLIMATE DATA
for i=1:N
temp=dlmread(sprintf('%i%i%i.csv', stationid, year, month), ' "," '); % ' "," ' USED AS DELIMITER BECAUSE THE .CSV FILE USES QUOTATION MARKS AROUND TEXT FIELDS
L=length(temp);
yearI = temp (15:L, 6); % START IMPORT AT ROW 15, COLUMN 6 IS YEAR
monthI = temp (15:L, 9);
dayI = temp (15:L, 12);
hourI = temp (15:L, 15);
winddir = temp (15:L, 36);
windspd = temp (15:L, 42);
winddat(:,1) = yearI; % PUT DATA INTO ONE MATRIX
winddat(:,2) = monthI;
winddat(:,3) = dayI;
winddat(:,4) = hourI;
winddat(:,5) = winddir*10; % WIND DIRECTION IN 10 DEGREE BINS
winddat(:,6) = windspd*0.278; % CONVERT WINDSPEED FROM KPH TO MPS
dlmwrite(filename, winddat, ',' , '-append'); %APPEND MATRIX "WINDDAT" TO OUTPUT FILE
clear winddat; %CLEAR THE WINDDAT VARIABLE ONLY
if month < month2;
month = month +1;
else
month = month1;
year = year+1;
end %if
end %for
end %function