;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ ;+ ; NAME:determineminmax ; ; PURPOSE:determiner le min et le max d''un tableau masque ; ; CATEGORY: delestage de l''ecriture de plt, pltz, pltt ; ; CALLING SEQUENCE:determineminmax, tab, mask, vraimin, vraimax ; ; INPUTS: ; ; tab: le tableau dont il faut determiner le min et le max ; mask: le tableau de masque ; ; KEYWORD PARAMETERS: ; ; minin et maxin deux scalaire qui s''il ne sont pas definits ; prennent la valeur de vraimin et vraimax ; ; OUTPUTS: ; ; vraimin et vraimax: le min et le max du tableau ; ; COMMON BLOCKS: ; common.pro ; ; SIDE EFFECTS:degarde si le champ est constant sur la mer ; ; RESTRICTIONS: ; ; EXAMPLE: ; ; MODIFICATION HISTORY: Sebastien Masson (smasson@lodyc.jussieu.fr) ; 11/12/98 ;- ;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ PRO determineminmax, tab, mask, vraimin, vraimax, glam, gphi, MAXIN = maxin, MININ = minin, INTERVALLE = intervalle, _extra = ex @common ;----------------------------------------------------------------------------- ;----------------------------------------------------------------------------- ; type de grille verticale: if vargrid EQ 'W' then nz = nzw ELSE nz = nzt ; liste des points mer if (size(mask))[0] EQ 3 then BEGIN if (size(mask))[3] EQ jpk then mer=mask[*,*,niveau-1] $ ELSE mer=mask[*,*,nz-1] ENDIF ELSE mer=mask ; si key_irregular eq 1, on masque aussi les points qui ne rentrent ; pas ds le domaine geographique definit par lon1,lon2,lat1,lat2 if keyword_set(key_irregular) AND n_elements(glam) NE 0 AND n_elements(gphi) NE 0 then begin dom = where(glam LT lon1 OR glam GT lon2 OR gphi LT lat1 OR gphi GT lat2) if dom[0] NE -1 then mer[dom] = 0 endif ; mer=where(mer eq 1) ; if mer[0] eq -1 then begin ras = report('Il n''y a que de la terre sur le dessin!') tab = -1 endif ; ma et mi : max et min sur les points mer vraimax=max(tab(mer),min=vraimin, _extra = ex) sameminmax = testvar(var = minin) EQ testvar(var = maxin) if n_elements(maxin) EQ 0 OR sameminmax then maxin = vraimax if n_elements(minin) EQ 0 OR sameminmax then BEGIN if keyword_set(intervalle) then minin = floor(vraimin/intervalle)*intervalle $ ELSE minin = vraimin endif if vraimin eq vraimax then BEGIN question = 'ATTENTION le champ est CONSTANT! Faut-il quand meme le tracer?' answer = report(question, /default_no, /question) if answer then begin maxin=vraimax+1 minin=vraimin-1 endif ELSE tab = -1 endif return end