source: trunk/LECTURE/nlecserie.pro @ 2

Last change on this file since 2 was 2, checked in by opalod, 22 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 5.8 KB
Line 
1;------------------------------------------------------------
2;------------------------------------------------------------
3;------------------------------------------------------------
4;+
5; NAME:NLECSERIE
6;
7; PURPOSE:lit les series temporelles se rapportant a une variable
8; sur maia: /u/rech/eee/reee217/TOTEM/REF/OUTPUTS
9;
10; CATEGORY:lecture de NETCDF
11;
12; CALLING SEQUENCE:res=nlecserie(nom, date1, date2)
13;
14; INPUTS:
15;       nom:nom du tableau contenant le champ que l'on veut (le
16; trouver avec ncdflec,fichier,/var
17;
18;       date1 et date2 les dates vermairs qui delimitent la serie temporelle
19;
20; KEYWORD PARAMETERS:
21;
22;       BOITE: boite sur laquelle integrer (par defaut tt le domaine)
23;
24;       GRILLE:impose la grille a laquelle est rapporte le champ. rq permet
25; d'aller plus vite ds la lecture
26;
27;       /TOUT:oblige a lire le tableau entier en non pas celui reduit a domdef
28;
29; OUTPUTS: res=tableau 2d (qd la serie ne fait que 1 pas de temps) ou
30; 3d (valable ds 1 premier tps que pour les tableaux 2d)
31;
32; COMMON BLOCKS:
33;       common.pro
34;
35; SIDE EFFECTS:appele par nlec
36;
37; RESTRICTIONS:
38;
39; EXAMPLE:
40;
41; MODIFICATION HISTORY: Sebastien Masson (smasson@lodyc.jussieu.fr)
42;
43;-
44;------------------------------------------------------------
45;------------------------------------------------------------
46;REF.sss.grid.T.nc
47;------------------------------------------------------------
48function nlecserie, nom, date1, date2,BOITE = boite, GRILLE=grille,TOUT=tout, _EXTRA = ex
49@common
50;------------------------------------------------------------
51;------------------------------------------------------------
52   res=-1
53   anneedepart=1979
54;------------------------------------------------------------
55; gestion du nom de la grille
56; et ouverture du fichier
57;------------------------------------------------------------
58; liste des fichiers pouvant convenir
59   quelsfichiers = findfile(iodir+prefix+'.'+nom+'.grid.*')
60   IF quelsfichiers[0] EQ '' THEN BEGIN ; liste vide
61;      print, 'LES FICHIERS: '+iodir+prefix+'.'+nom+'.grid... n''existe pas.'
62      return,  -1
63   ENDIF ELSE BEGIN
64      vargrid=strmid(quelsfichiers[0],strpos(quelsfichiers[0],'grid')+5,1) ;nom de grille
65      cdfid=ncdf_open(quelsfichiers[0])
66   ENDELSE
67;------------------------------------------------------------
68; lecture de certains attributs et de l'axe des temps
69;------------------------------------------------------------
70   ncdf_attget,cdfid,nom,'title',value
71   varname=string(value)
72   ncdf_attget,cdfid,nom,'units',value
73   varunit=string(value)
74   if rstrpos(varname,'(') eq -1 then varname=varname+' ('+varunit+')'
75   ncdf_attget,cdfid,'file_name',value,/global
76   varexp=string(value)
77   varexp=strmid(varexp, 0, strpos(varexp, '.'))
78;------------------------------------------------------------
79; lecture de l'axe des temps en entier on ja reperer la place des
80; dates debut et fin pour faire l''extraction temporelle
81;------------------------------------------------------------
82   ncdf_varget,cdfid,'time_counter',time
83   time = long(time)+julday(1, 5, 1979)
84;   debut = where(time EQ juldate(date1))
85;   fin = where(time EQ juldate(date2))
86   debut = where(time EQ date1)
87   fin = where(time EQ date2)
88   if debut[0] EQ -1 then $
89      return, report('l''axe des temps ne contient pas la date de debut '+strtrim(date1, 1))
90   if fin[0] EQ -1 then $
91      return, report('l''axe des temps ne contient pas la date de fin '+strtrim(date2, 1))
92   time = time[debut[0]:fin[0]]
93   jpt=fin[0]-debut[0]+1
94   IF jpt EQ 1 THEN BEGIN
95      caldat, time[0], month, day, year
96      case 1 of
97         year lt 10:                 s_year ='0'+string(format='(i1)',year)
98         year lt 100 and year ge 10 :s_year =    string(format='(i2)',year)
99         year ge 100:                s_year =    string(format='(i2)',year-1900)
100      endcase
101      if month lt 10 then s_month='0'+string(format='(i1)',month) $
102      else s_month=    string(format='(i2)',month)
103      if day lt 10 then s_day='0'+string(format='(i1)',day) $
104      else s_day=    string(format='(i2)',day)
105      vardate=s_year+s_month+s_day
106   endif
107;------------------------------------------------------------
108;------------------------------------------------------------
109; extraction du tableau qui nous interesse
110;------------------------------------------------------------
111;------------------------------------------------------------
112;------------------------------------------------------------
113; determination du domaine geographique
114;------------------------------------------------------------
115   if keyword_set(tout) then begin
116      nx=jpi
117      ny=jpj
118      nz=jpk
119      premierx = 0
120      premiery = 0
121      premierz = 0
122   endif else BEGIN
123;------------------------------------------------------------
124; redefinition eventuelle du domaine ajuste a boite (a 6 elements)
125; + on recupere la dim du no9uveau domaine
126;------------------------------------------------------------
127      if keyword_set(boite) then BEGIN
128         Case N_Elements(Boite) Of
129            1:Domdef, lon1, lon2, lat1, lat2, 0.,boite[0],GRILLE=vargrid, _EXTRA = ex
130            2:Domdef, lon1, lon2, lat1, lat2, boite[0],boite[1],GRILLE=vargrid, _EXTRA = ex
131            4:Domdef, [Boite, prof1, prof2],GRILLE=vargrid, _EXTRA = ex
132            5:Domdef, [Boite[0:3], 0, Boite[4]],GRILLE=vargrid, _EXTRA = ex
133            6:Domdef, Boite,GRILLE=vargrid, _EXTRA = ex
134            Else:return, report('Mauvaise Definition de Boite')
135         endcase
136      ENDIF
137      grille, mask, glam, gphi, gdep, nx, ny,nz,premierx,premiery
138   ENDELSE
139;------------------------------------------------------------
140   ncdf_varget,cdfid,nom,res $
141    ,offset=[premierx,premiery,debut[0]] $
142    ,count=[nx,ny,fin[0]-debut[0]+1]
143;------------------------------------------------------------
144   ncdf_close,cdfid
145   return,res
146;------------------------------------------------------------
147;------------------------------------------------------------
148end
Note: See TracBrowser for help on using the repository browser.