Overview %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%
%nakedsoftware.org opensource license, copyright 2010 % %developed by Stephane Poirier, M.Sc. Optical Physics, Remote Sensing Application Software Developer ( ) % %this function is part of oifii.org's ar\sp\ Microwave- derived 30-year Canada-Alaska Daily Temperature and Snowcover Databases library % %this function is part of oifii.org's ar\sp\'this folder' application (lauched with ar\sp\'this file'.m) %oifii.org's ar\sp\affiche_carte application is part of the oifii.org's ar\sp set of applications which %may also contain similar variant versions of this function with identical filename. % %A geophysical research paper about this work has been submitted in June 2009 for publication in JGR-Atmosphere %Royer, A. and Poirier S., Surface temperature spatial and temporal variations in North America from homogenized %satellite SMMR-SSM/I microwave measurements and reanalysis for , Journal of Geophysical Research - Atmosphere, %Submitted June 2009, Poirier_Microwave-derived-daily-surface- temperature_JGR2009JD012760_R2.pdf % %This study's database can be downloaded from the author web site at: % daily-surface-temperature-db_ zip % %this function is used to display the raw microwave raster data (NSIDC's SMMR and SSMI satellite, ref. nsidc.org) % %usage: % 20yymmmdd % %version 0.0, 20yymmmdd, spi, initial function draft % %nakedsoftware.org opensource license, copyright 2010
%%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%
function [pentadRange] = GetPentadRange(dataSet, year, day); %GETPENTADRANGE Retourne les bornes du dossier qui contient le jour donné. % % [PENTADRANGE] = GETPENTADRANGE(DATASET, YEAR, DAY) retourne les bornes du % dossier qui contient les données du jour ordinal DAY de l'année YEAR. Si % le dossier n'existe pas (i.e. les données pour ce jour sont manquantes), % la fonction retourne PENTADRANGE = []. % % Les valeurs possibles pour DATASET sont : 1 = SMMR % 2 = SSMI % % DAY est un entier compris entre 1 et 365 pour les années non-bissextiles et % entre 1 et 366 pour les années bissextiles. % % PENTADRANGE est de la forme [PENTADSTART PENTADEND] où PENTADSTART et % PENTADEND sont des entiers compris entre 1 et 370. pentadRange = []; % Vérifie que le paramètre d'entrée DAY est valide if day 366 | (day == 366 & ~IsLeapYear(year)) return; end % (les bornes des répertoires SSMI sont décalées de 2 pour l'année 1987) if year == 1987 & (strcmp(dataSet, 'SSMI') | dataSet == 2) day = (day - 2); end % Aligne (DAY - 1) sur un multiple de 5, i.e. sur la borne inférieure du dossier. day = day - mod(day - 1, 5); % Selons les conventions du NSIDC pentadStart = day; pentadEnd = day + 4; % ============================================================= =================== % Entrer les cas particuliers / répertoires manquants ici % ============================================================= =================== % SMMR if dataSet == 1 % Aucun répertoire SMMR avant le répertoire D296_300 de l'année 1978 if year < 1978 | (year == 1978 & pentadStart < 296) return; % Le répertoire SMMR D141_145 n'existe pas pour l'année 1979 elseif year == 1979 & pentadStart == 141 return; % Les répertoires SMMR D006_010, D076_080, D101_105 et D366_370 % n'existent pas pour l'année 1980 elseif year == 1980 & (pentadStart == 6 | pentadStart == 76 |... pentadStart == 101 | pentadStart == 366) return; % Les répertoires SMMR D226_230 et D231_235 n'existent pas pour l'année 1984 elseif year == 1984 & (pentadStart == 226 | pentadStart == 231) return; % Le répertoire SMMR D266_270 n'existe pas pour l'année 1985 elseif year == 1985 & pentadStart == 266 return; % Les répertoires SMMR D006_010 et D011_015 n'existent pas pour l'année 1987 elseif year == 1987 & (pentadStart == 6 | pentadStart == 11) return; % Aucun répertoire SMMR après le répertoire D231_235 de l'année 1987 elseif (year == 1987 & pentadStart > 231) | year > 1987 return; end % SSMI elseif dataSet == 2 [yearMax, monthMax, dayNbMax] = GetLastAvailableSSMIYear; if year == 1987 % Les bornes des répertoires SSMI sont décalées de 2 pour l'année 1987 pentadStart = pentadStart + 2; pentadEnd = pentadEnd + 2; end % Aucun répertoire SSMI avant le répertoire D213_217 de l'année 1987 if year < 1987 | (year == 1987 & pentadStart < 213) return; % Pour l'année 1987, le dernier répertoire SSMI est D333_337 elseif year == 1987 & pentadStart >= 338 return; % Les répertoires SSMI D001_005 et D006_010 n'existent pas pour l'année 1988 elseif year == 1988 & (pentadStart == 1 | pentadStart == 6) return; % Le répertoire D356_360 n'existe pas pour l'année 1990 elseif year == 1990 & pentadStart == 356 return; %spi, let pentad D366_370 go through, begin %elseif year == yearMax & pentadStart >= dayNbMax elseif (year==yearMax) && (pentadStart>dayNbMax) %spi, let pentad D366_370 go through, end return; elseif year > yearMax return; end else % Série de données inconnue... return; end pentadRange = [pentadStart pentadEnd];