source: trunk/SRC/Obsolete/nlecserie.pro @ 76

Last change on this file since 76 was 44, checked in by pinsard, 18 years ago

upgrade of LECTURE/ReadWrite according to cerbere.lodyc.jussieu.fr: /usr/home/smasson/SAXO_RD/ : files

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 5.9 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      IF !version.OS_FAMILY EQ 'unix' THEN spawn, '\file '+quelsfichiers[0]+' > /dev/null'
66      cdfid=ncdf_open(quelsfichiers[0])
67   ENDELSE
68;------------------------------------------------------------
69; lecture de certains attributs et de l'axe des temps
70;------------------------------------------------------------
71   ncdf_attget,cdfid,nom,'title',value
72   varname=string(value)
73   ncdf_attget,cdfid,nom,'units',value
74   varunit=string(value)
75   if rstrpos(varname,'(') eq -1 then varname=varname+' ('+varunit+')'
76   ncdf_attget,cdfid,'file_name',value,/global
77   varexp=string(value)
78   varexp=strmid(varexp, 0, strpos(varexp, '.'))
79;------------------------------------------------------------
80; lecture de l'axe des temps en entier on ja reperer la place des
81; dates debut et fin pour faire l''extraction temporelle
82;------------------------------------------------------------
83   ncdf_varget,cdfid,'time_counter',time
84   time = long(time)+julday(1, 5, 1979)
85;   debut = where(time EQ juldate(date1))
86;   fin = where(time EQ juldate(date2))
87   debut = where(time EQ date1)
88   fin = where(time EQ date2)
89   if debut[0] EQ -1 then $
90      return, report('l''axe des temps ne contient pas la date de debut '+strtrim(date1, 1))
91   if fin[0] EQ -1 then $
92      return, report('l''axe des temps ne contient pas la date de fin '+strtrim(date2, 1))
93   time = time[debut[0]:fin[0]]
94   jpt=fin[0]-debut[0]+1
95   IF jpt EQ 1 THEN BEGIN
96      caldat, time[0], month, day, year
97      case 1 of
98         year lt 10:                 s_year ='0'+string(format='(i1)',year)
99         year lt 100 and year ge 10 :s_year =    string(format='(i2)',year)
100         year ge 100:                s_year =    string(format='(i2)',year-1900)
101      endcase
102      if month lt 10 then s_month='0'+string(format='(i1)',month) $
103      else s_month=    string(format='(i2)',month)
104      if day lt 10 then s_day='0'+string(format='(i1)',day) $
105      else s_day=    string(format='(i2)',day)
106      vardate=s_year+s_month+s_day
107   endif
108;------------------------------------------------------------
109;------------------------------------------------------------
110; extraction du tableau qui nous interesse
111;------------------------------------------------------------
112;------------------------------------------------------------
113;------------------------------------------------------------
114; determination du domaine geographique
115;------------------------------------------------------------
116   if keyword_set(tout) then begin
117      nx=jpi
118      ny=jpj
119      nz=jpk
120      premierx = 0
121      premiery = 0
122      premierz = 0
123   endif else BEGIN
124;------------------------------------------------------------
125; redefinition eventuelle du domaine ajuste a boite (a 6 elements)
126; + on recupere la dim du no9uveau domaine
127;------------------------------------------------------------
128      if keyword_set(boite) then BEGIN
129         Case N_Elements(Boite) Of
130            1:Domdef, lon1, lon2, lat1, lat2, 0.,boite[0],GRILLE=vargrid, _EXTRA = ex
131            2:Domdef, lon1, lon2, lat1, lat2, boite[0],boite[1],GRILLE=vargrid, _EXTRA = ex
132            4:Domdef, [Boite, prof1, prof2],GRILLE=vargrid, _EXTRA = ex
133            5:Domdef, [Boite[0:3], 0, Boite[4]],GRILLE=vargrid, _EXTRA = ex
134            6:Domdef, Boite,GRILLE=vargrid, _EXTRA = ex
135            Else:return, report('Mauvaise Definition de Boite')
136         endcase
137      ENDIF
138      grille, mask, glam, gphi, gdep, nx, ny,nz,premierx,premiery
139   ENDELSE
140;------------------------------------------------------------
141   ncdf_varget,cdfid,nom,res $
142    ,offset=[premierx,premiery,debut[0]] $
143    ,count=[nx,ny,fin[0]-debut[0]+1]
144;------------------------------------------------------------
145   ncdf_close,cdfid
146   return,res
147;------------------------------------------------------------
148;------------------------------------------------------------
149end
Note: See TracBrowser for help on using the repository browser.