La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Overview %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%

Présentations similaires


Présentation au sujet: "Overview %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%"— Transcription de la présentation:

1 Overview %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%

2

3

4 %nakedsoftware.org opensource license, copyright 2010 stephane.poirier@oifii.org % %developed by Stephane Poirier, M.Sc. Optical Physics, Remote Sensing Application Software Developer (1991-2010) % %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\affiche_carte application (lauched with ar\sp\affiche_carte.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 1979-2008, Journal of Geophysical Research - Atmosphere, %Submitted June 2009, http://www.oifii.org/tsatdb/Royer- Poirier_Microwave-derived-daily-surface- temperature_JGR2009JD012760_R2.pdf % %This study's database can be downloaded from the author web site at: %http://www.oifii.org/tsatdb/Royer-Poirier_Microwave-derived- daily-surface-temperature-db_1979-2008.zip % %this function is used by affiche_carte.m to automaticaly interpret an image pixel % %fonction qui permet d'afficher/d'interpreter un point image de donnees brutes %version 0.3: spi, 2009dec15, autodatavalue day of year support %version 0.2: spi, fev 2008, autodatavalue(x_pixel,y_pixel,region,chemin,nomfichier), support fichier 160x240 double %version 0.1: spi, aout 2007, autodatavalue(x_pixel,y_pixel,region,chemin,nomfichier) % %nakedsoftware.org opensource license, copyright 2010 stephane.poirier@oifii.org

5 %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%

6

7 function [string]=autodatavalue(x_pixel,y_pixel,region,chemin,nomfichi er,i) if nargin<1 disp('usage: autodatavalue(x_pixel,y_pixel,''region'',''chemin'',''nomfich ier'')'); return; end if nargin<2 y_pixel=-1; %applications futures, support profiles verticaux disp('autodatavalue: line 11, case not supported'); return; end string = ''; if nargin<3 string = sprinf('%d,%d',x_pixel,y_pixel); return; end if nargin<4 %nomfichier non-specifie, applications futures, support couverts nivaux disp('autodatavalue: line 21, case not supported'); return; end %parametres tous specifies [dim1,dim2,format] = autodimformat(chemin,nomfichier); %dim=[160 240]; %i,j %columns,lines indexes refering to easegrid pix coor %(without region offset) if dim1~=0 && dim2~=0 %dim1,dim2 connues %1) arrondir au plus bas x_pixel_prev = x_pixel; y_pixel_prev = y_pixel; x_pixel = floor(x_pixel); y_pixel = floor(y_pixel); %2) interpreter la valeure au pixel specifie if(dim1==160 && dim2==240) || (dim1==721 && dim2==721) if strcmp(format,'int8') %les valeures sont alors les bytes d'un masque de couvert nival (snowcover) elseif strcmp(format,'uint8') %les valeures sont alors des temps de passage de fichier TIM (pour SSMI seulement) %SSMI TIM if(0) %{ %1) initialisation hm(1:dim1,1:dim2)=255; h(1:dim1,1:dim2)=NaN; m(1:dim1,1:dim2)=NaN; %2) lecture fichier entier fid=fopen(fullfile(chemin,nomfichier),'r'); hm=fread(fid,dim1*dim2,'uint8'); fclose(fid); clear fid; %3) filtrage une valeure (filter out one value) hm=hm(x_pix+(y_pix-1)*dim2); %} else %1) initialisation hm=255; h=NaN; m=NaN; %2) ouverture fichier et positionnement pointeur fichier fid=fopen(fullfile(chemin,nomfichier),'r'); [x_pix,y_pix]=pixel2pix(x_pixel,y_pixel,region); fpo_inbytes=pix2fpo(x_pix,y_pix,dim1,dim2,format,region); fseek(fid,fpo_inbytes,'bof'); %3) lecture une seule valeure hm=fread(fid,1,'uint8'); fclose(fid); clear fid; end %4)conversion hm en heures et minutes h=floor(hm./10); m=rem(hm,10).*6; %5) formatage de la chaine de caractere de sortie string = sprintf('hh:mm:00 = %2d:%2d:00',h,m); %[num2str(h),num2str(m),num2str()] elseif strcmp(format,'int16') %les valeures sont alors des temperatures de brillance (SMMR et SSMI) %int16/10.0; %SMMR %SSMI elseif strcmp(format,'uint16') if findstr(upper(nomfichier),'TIM') %les valeures sont alors des temps de passage de fichier TIM (.TIM SMMR et.tim SSMI 2008 jour 183 et suivants seulement) %SMMR TIM %1) initialisation hm=32768; h=NaN; m=NaN; %2) ouverture fichier et positionnement pointeur fichier fid=fopen(fullfile(chemin,nomfichier),'r'); [x_pix,y_pix]=pixel2pix(x_pixel,y_pixel,region); fpo_inbytes=pix2fpo(x_pix,y_pix,dim1,dim2,format,region); fseek(fid,fpo_inbytes,'bof'); %3) lecture une seule valeure hm=fread(fid,1,'uint16'); fclose(fid); clear fid; %4)conversion hm en heures minutes h=fix(hm./60); %fix() rounds towards zero m=hm-(h.*60); %5) formatage de la chaine de caractere de sortie string = sprintf('hh:mm:00 = %2d:%2d:00',h,m); %[num2str(h),num2str(m),num2str()] %2009dec15, spi, autodatavalue day of year support, begin elseif(findstr(lower(chemin),'jdjf')) %les valeures sont alors des jours debut, jours fin d'ete ou des premiers jours de neige %1) %2) ouverture fichier et positionnement pointeur fichier fid=fopen(fullfile(chemin,nomfichier),'r'); [x_pix,y_pix]=pixel2pix(x_pixel,y_pixel,region); fpo_inbytes=pix2fpo(x_pix,y_pix,dim1,dim2,format,region); fseek(fid,fpo_inbytes,'bof'); %3) lecture une seule valeure doy=fread(fid,1,'uint16'); fclose(fid); clear fid; %4) %5) formatage de la chaine de caractere de sortie string = sprintf('day of year = %d',doy); %2009dec15, spi, autodatavalue day of year support, end else %les valeures sont alors des temperatures de brillance (SMMR et SSMI) %SMMR/SSMI Tb %1) initialisation Tb=-10; %2) ouverture fichier et positionnement pointeur fichier fid=fopen(fullfile(chemin,nomfichier),'r'); [x_pix,y_pix]=pixel2pix(x_pixel,y_pixel,region); fpo_inbytes=pix2fpo(x_pix,y_pix,dim1,dim2,format,region); status = fseek(fid,fpo_inbytes,'bof'); %3) lecture une seule valeure Tb=fread(fid,1,'uint16'); fclose(fid); clear fid; %4) conversion echelle Tb Tb=Tb/10.0; %for both SMMR and SSMI %{ if findstr(upper(chemin),'SMMR') %SMMR, %int16/10.0; %SMMR Tb=Tb/10; elseif findstr(upper(chemin),'SSMI') %SSMI, %SSMI else warning('SMMR/SSMI data sources cannot be distinguished according to the directory naming'); end %} %5) formatage de la chaine de caractere de sortie string = sprintf('Tb = %f',Tb); %Tb end elseif strcmp(format,'4*float32') || strcmp(format,'8*float32') %if i==-1 disp('autodatavalue: format incoherent with argument i'); return; end %les valeures sont alors des temperatures (ERA40 ou NARR) %1) initialisation Tair=-10; Ttemp=-10; %2) ouverture fichier et positionnement pointeur fichier fid=fopen(fullfile(chemin,nomfichier),'r'); [x_pix,y_pix]=pixel2pix(x_pixel,y_pixel,region); fpo_inbytes=pix2fpo(x_pix,y_pix,dim1,dim2,format,region); status = fseek(fid,fpo_inbytes,'bof'); %3) lecture une seule valeure n = str2num(strtok(format, '*')); for ii=1:n %n=4 ou n=8 Ttemp=fread(fid,1,'float32'); if ii==i Tair=Ttemp; end fclose(fid); clear fid; %4) formatage de la chaine de caractere de sortie string = sprintf('Tair(2m) = %f',Tair); elseif strcmp(format,'float32') %if i==-1 disp('autodatavalue: format incoherent with argument i'); return; end %les valeures sont alors des temperatures (Tsmoy,Tscorr/Tsmoy,Tsam,Tspm,ratio) %1) initialisation Ttemp=-10; %2) ouverture fichier et positionnement pointeur fichier fid=fopen(fullfile(chemin,nomfichier),'r'); [x_pix,y_pix]=pixel2pix(x_pixel,y_pixel,region); fpo_inbytes=pix2fpo(x_pix,y_pix,dim1,dim2,format,region); status = fseek(fid,fpo_inbytes,'bof'); %3) lecture une seule valeure Ttemp=fread(fid,1,'float32'); fclose(fid); clear fid; %4) formatage de la chaine de caractere de sortie string = sprintf('Ttemp = %f',Ttemp); elseif strcmp(format,'double') %les valeures sont alors des 'double' %1) initialisation dValue=-10; %2) ouverture fichier et positionnement pointeur fichier fid=fopen(fullfile(chemin,nomfichier),'r'); [x_pix,y_pix]=pixel2pix(x_pixel,y_pixel,region); fpo_inbytes=pix2fpo(x_pix,y_pix,dim1,dim2,format,region); status = fseek(fid,fpo_inbytes,'bof'); %3) lecture une seule valeure dValue=fread(fid,1,'double'); fclose(fid); clear fid; %4) formatage de la chaine de caractere de sortie string = sprintf('dValue = %f',dValue); else disp('autodatavalue: case not fully supported'); return; end end %(dim1==160 && dim2==240) || (dim1==721 && dim2==721) else disp('autodatavalue: dim1 et dim2 non-reconnues'); end %if end %function


Télécharger ppt "Overview %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%"

Présentations similaires


Annonces Google