source: trunk/SRC/ToBeReviewed/PLOTS/DIVERS/determineminmax.pro @ 114

Last change on this file since 114 was 114, checked in by smasson, 18 years ago

new compilation options (compile_opt idl2, strictarrsubs) in each routine

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 3.2 KB
Line 
1;------------------------------------------------------------
2;------------------------------------------------------------
3;------------------------------------------------------------
4;+
5; NAME:determineminmax
6;
7; PURPOSE:determiner le min et le max d''un tableau masque
8;
9; CATEGORY: delestage de l''ecriture de plt, pltz, pltt
10;
11; CALLING SEQUENCE:determineminmax, tab, mask, vraimin, vraimax
12;
13; INPUTS:
14;
15;       tab: le tableau dont il faut determiner le min et le max
16;       mask: le tableau de masque
17;
18; KEYWORD PARAMETERS:
19;
20;       minin et maxin deux scalaire qui s''il ne sont pas definits
21;       prennent la valeur de vraimin et vraimax
22;
23;       /ZEROMIDDLE: fo force the middle of the colorbar to be equal
24;       to 0 (force max=max(abs([min,max])) and min=-max)
25;
26; OUTPUTS:
27;
28;       vraimin et vraimax: le min et le max du tableau
29;
30; COMMON BLOCKS:
31;       common.pro
32;
33; SIDE EFFECTS:degarde si le champ est constant sur la mer
34;
35; RESTRICTIONS:
36;
37; EXAMPLE:
38;
39; MODIFICATION HISTORY: Sebastien Masson (smasson@lodyc.jussieu.fr)
40;                       11/12/98
41;-
42;------------------------------------------------------------
43;------------------------------------------------------------
44;------------------------------------------------------------
45PRO determineminmax, tab, mask, vraimin, vraimax, glam, gphi, MAXIN = maxin, MININ = minin, INTERVALLE = intervalle, usetri = usetri, ZEROMIDDLE = zeromiddle, _extra = ex
46;
47  compile_opt idl2, strictarrsubs
48;
49@common
50;-----------------------------------------------------------------------------
51;-----------------------------------------------------------------------------
52; type de grille verticale:
53  if vargrid EQ 'W' then nz = nzw ELSE nz = nzt
54; liste des points mer
55  if (size(mask))[0] EQ 3 then mer = mask[*, *, 0] $
56  ELSE mer = mask
57; si key_irregular eq 1, on masque aussi les points qui ne rentrent
58; pas ds le domaine geographique definit par lon1,lon2,lat1,lat2
59  if keyword_set(key_irregular) AND n_elements(glam) NE 0 AND n_elements(gphi) NE 0 then begin
60    dom =   where(glam LT lon1 OR glam GT lon2 OR gphi LT lat1 OR gphi GT lat2)
61    if dom[0] NE -1 then mer[dom] = 0
62  endif
63;
64  mer = where(mer eq 1)
65;
66  if mer[0] eq -1 then begin
67    ras = report('Il n''y a que de la terre sur le dessin!')
68    vraimax = 0
69    vraimin = 0
70    maxin = vraimax+1
71    minin = vraimin-1
72    usetri = 0
73    return
74  endif
75; ma et mi : max et min sur les points mer
76  vraimax = max(tab[mer], min = vraimin, _extra = ex)
77  sameminmax = testvar(var = minin) EQ testvar(var = maxin)
78  if n_elements(maxin) EQ 0 OR sameminmax then maxin = vraimax
79  if n_elements(minin) EQ 0 OR sameminmax then BEGIN
80    if keyword_set(intervalle) then minin = floor(vraimin/intervalle)*intervalle $
81    ELSE minin = vraimin
82  endif
83  if vraimin eq vraimax then BEGIN
84    IF size(vraimin, /type) EQ 1 THEN vraimin = fix(vraimin)
85    question = ['Warning: constant filed, same value everywhere : ' + strtrim(vraimin, 2) +'!', 'Shall we make the plot?']
86    answer = report(question, /default_no, /question)
87    if answer then begin
88      maxin = vraimax+1
89      minin = vraimin-1
90    endif ELSE tab = -1
91  ENDIF
92  IF keyword_set(zeromiddle) THEN BEGIN
93      maxin = max(abs([minin, maxin]))
94      minin = -maxin
95  ENDIF
96
97
98  return
99end
Note: See TracBrowser for help on using the repository browser.