Changeset 205
- Timestamp:
- 01/22/07 08:55:49 (17 years ago)
- Location:
- trunk/SRC
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SRC/Calendar/caldat.pro
r163 r205 70 70 IF n_elements(key_caltype) EQ 0 THEN key_caltype = 'greg' 71 71 if keyword_set(ndayspm) then key_caltype = '360d' 72 73 nParam = N_PARAMS() 74 IF (nParam LT 1) THEN MESSAGE, 'Incorrect number of arguments.' 75 72 76 CASE key_caltype OF 73 77 'greg':BEGIN 74 75 nParam = N_PARAMS()76 IF (nParam LT 1) THEN MESSAGE, 'Incorrect number of arguments.'77 78 78 79 min_julian = -1095 … … 110 111 year = TEMPORARY(year) - (month GT 2) 111 112 year = year - (year LE 0) 112 ; see if we need to do hours, minutes, seconds113 IF (nParam GT 4) THEN BEGIN114 fraction = julian + 0.5d - TEMPORARY(julLong)115 hour = floor(fraction * 24d)116 fraction = TEMPORARY(fraction) - hour/24d117 minute = floor(fraction*1440d)118 second = (TEMPORARY(fraction) - minute/1440d) * 86400d119 ENDIF120 121 ; if julian is an array, reform all output to correct dimensions122 IF (SIZE(julian, /N_DIMENSION) GT 0) THEN BEGIN123 dimensions = SIZE(julian, /DIMENSION)124 month = REFORM(month, dimensions)125 day = REFORM(day, dimensions)126 year = REFORM(year, dimensions)127 IF (nParam GT 4) THEN BEGIN128 hour = REFORM(hour, dimensions)129 minute = REFORM(minute, dimensions)130 second = REFORM(second, dimensions)131 ENDIF132 ENDIF133 113 134 114 END 135 115 '360d':BEGIN 136 137 jul = long(julian) 138 f = (jul - floor(jul)) 139 IF total(f NE 0.0) GT 0 THEN BEGIN ;Get hours, minutes, seconds. 140 hour = floor(f*24.) 141 f = f - hour / 24.d 142 minute = floor(f*1440) 143 second = (f - minute/1440.d0) * 86400.0d0 144 ENDIF ELSE BEGIN 145 hour = replicate(0L, n_elements(julian)) 146 minute = replicate(0L, n_elements(julian)) 147 second = replicate(0L, n_elements(julian)) 148 ENDELSE 149 116 150 117 IF keyword_set(ndayspm) THEN BEGIN 151 118 IF ndayspm EQ 1 THEN ndayspm = 30 … … 153 120 154 121 ndayspm = long(ndayspm) 155 Z = floor(julian)156 year = z/(12*ndayspm)+1157 month = ( z-(12*ndayspm)*(year-1))/ndayspm+1158 day = z-(12*ndayspm)*(year-1)-ndayspm*(month-1)122 julLong = FLOOR(julian + 0.5d) ;Better be long 123 year = julLong/(12*ndayspm)+1 124 month = (julLong-(12*ndayspm)*(year-1))/ndayspm+1 125 day = julLong-(12*ndayspm)*(year-1)-ndayspm*(month-1) 159 126 WHILE total(day LT 1) GT 0 DO BEGIN 160 127 tochange = where(day LT 1) … … 173 140 'noleap':BEGIN 174 141 175 jul = long(julian) 176 year = jul/365 + 1 177 day = jul MOD 365L 178 ; 142 julLong = FLOOR(julian + 0.5d) ;Better be long 143 year = julLong/365 + 1 144 day = julLong MOD 365L 179 145 ; 180 146 zero = where(day EQ 0) 181 147 ; 182 148 month = 1 + (day GT 31) + (day GT 59) + (day GT 90) + (day GT 120) $ 183 149 + (day GT 151) + (day GT 181) + (day GT 212) + (day GT 243) $ … … 195 161 day[zero] = 31L 196 162 ENDIF 197 163 ; 198 164 END 199 165 ELSE:BEGIN … … 206 172 IF cnt NE 0 THEN year[zero] = year[zero]-654321L 207 173 ; 174 ; see if we need to do hours, minutes, seconds 175 IF (nParam GT 4) THEN BEGIN 176 fraction = julian + 0.5d - TEMPORARY(julLong) 177 hour = floor(fraction * 24d) 178 fraction = TEMPORARY(fraction) - hour/24d 179 minute = floor(fraction*1440d) 180 second = (TEMPORARY(fraction) - minute/1440d) * 86400d 181 ENDIF 182 183 ; if julian is an array, reform all output to correct dimensions 184 IF (SIZE(julian, /N_DIMENSION) GT 0) THEN BEGIN 185 dimensions = SIZE(julian, /DIMENSION) 186 month = REFORM(month, dimensions, /overwrite) 187 day = REFORM(day, dimensions, /overwrite) 188 year = REFORM(year, dimensions, /overwrite) 189 IF (nParam GT 4) THEN BEGIN 190 hour = REFORM(hour, dimensions, /overwrite) 191 minute = REFORM(minute, dimensions, /overwrite) 192 second = REFORM(second, dimensions, /overwrite) 193 ENDIF 194 ENDIF 195 ; 208 196 return 209 197 -
trunk/SRC/Calendar/date2jul.pro
r157 r205 50 50 + 2000 * (year GE 1 AND year LE 49) 51 51 ;------------------------------------------------------------ 52 return, julday(month, day, year) 52 IF array_equal(date, long(date)) THEN return, julday(month, day, year) 53 54 fraction = date - long(date) 55 hour = floor(fraction * 24d) 56 fraction = TEMPORARY(fraction) - hour/24d 57 minute = floor(fraction*1440d) 58 second = (TEMPORARY(fraction) - minute/1440d) * 86400d 59 60 return, julday(month, day, year, hour, minute, second) 61 53 62 end 54 63 -
trunk/SRC/Calendar/jul2date.pro
r157 r205 30 30 compile_opt idl2, strictarrsubs 31 31 ; 32 33 caldat, jday, month, day, year 34 32 caldat, jday, month, day, year, hour, min, sec 33 ; 35 34 res = (10000L*year + 100L*month + day)*(year GE 0) $ 36 35 +( 10000L*year - 100L*month - day)*(year LT 0) 36 ; 37 IF total([hour NE 12, min NE 0, sec NE 0]) EQ 0 THEN return, long(res) $ 38 ELSE return, double(res) + (hour / 24.0d0) + (min/1440.0d0) + (sec / 86400.0d0) 37 39 38 return, long(res)39 40 end -
trunk/SRC/Calendar/julday.pro
r163 r205 93 93 if keyword_set(ndayspm) then key_caltype = '360d' 94 94 ; 95 96 95 YEAR = long(yearin) 97 96 zero = where(year EQ 0, cnt) … … 100 99 CASE key_caltype OF 101 100 'greg':BEGIN 102 103 101 104 102 ; Gregorian Calender was adopted on Oct. 15, 1582 … … 245 243 if n_elements(Hour) + n_elements(Minute) + n_elements(Second) eq 0 then $ 246 244 return, JUL 247 if n_elements(Hour) eq 0 then Hour = 0245 if n_elements(Hour) eq 0 then Hour = 12 248 246 if n_elements(Minute) eq 0 then Minute = 0 249 247 if n_elements(Second) eq 0 then Second = 0 250 248 251 IF Hour+Minute+SecondEQ 0 THEN return, JUL ELSE $252 return, JUL + (Hour / 24.0d0 ) + (Minute/1440.0d0) + (Second / 86400.0d0)249 IF total([hour NE 12, minute NE 0, second NE 0]) EQ 0 THEN return, JUL ELSE $ 250 return, JUL + (Hour / 24.0d0 - 0.5d) + (Minute/1440.0d0) + (Second / 86400.0d0) 253 251 254 252 END … … 275 273 daysyear = long(total([0, 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30], /cumulative)) 276 274 277 return, 365*L_YEAR + daysyear[L_MONTH] + L_DAY 275 JUL = 365*L_YEAR + daysyear[L_MONTH] + L_DAY 276 if n_elements(Hour) + n_elements(Minute) + n_elements(Second) eq 0 then $ 277 return, JUL 278 if n_elements(Hour) eq 0 then Hour = 12 279 if n_elements(Minute) eq 0 then Minute = 0 280 if n_elements(Second) eq 0 then Second = 0 281 282 IF total([hour NE 12, minute NE 0, second NE 0]) EQ 0 THEN return, JUL ELSE $ 283 return, JUL + (Hour / 24.0d0 - 0.5d) + (Minute/1440.0d0) + (Second / 86400.0d0) 278 284 279 285 END -
trunk/SRC/Interpolation/fromirr.pro
r202 r205 14 14 ; a 2D array the input data to interpolate 15 15 ; 16 ; @param lonin {in}{ optional}{type=2d array}16 ; @param lonin {in}{required}{type=2d array} 17 17 ; a 2D array defining the longitude of the input data 18 18 ; 19 ; @param latin {in}{ optional}{type=2d array}19 ; @param latin {in}{required}{type=2d array} 20 20 ; a 2D array defining the latitude of the input data. 21 21 ; 22 ; @param mskin {in}{ optional}{type=2d array or -1}22 ; @param mskin {in}{required}{type=2d array or -1} 23 23 ; a 2D array, the land-sea mask of the input data (1 on ocean, 0 on land) 24 24 ; put -1 if input data are not masked 25 25 ; 26 ; @param lonout {in}{ optional}{type=1d or 2d array}26 ; @param lonout {in}{required}{type=1d or 2d array} 27 27 ; 1D or 2D array defining the longitude of the output data. 28 28 ; 29 ; @param latout {in}{ optional}{type=1d or 2d array}29 ; @param latout {in}{required}{type=1d or 2d array} 30 30 ; 1D or 2D array defining the latitude of the output data. 31 31 ; -
trunk/SRC/Interpolation/fromreg.pro
r163 r205 17 17 ; a 2D array the input data to interpolate 18 18 ; 19 ; @param lonin {in}{ optional}{type=1d or 2d array}19 ; @param lonin {in}{required}{type=1d or 2d array} 20 20 ; 1D or 2D array defining the longitude of the input data 21 21 ; 22 ; @param latin {in}{ optional}{type=1d or 2d array}22 ; @param latin {in}{required}{type=1d or 2d array} 23 23 ; 1D or 2D array defining the latitude of the input data 24 24 ; 25 ; @param lonout {in}{ optional}{type=1d or 2d array}25 ; @param lonout {in}{required}{type=1d or 2d array} 26 26 ; 1D or 2D array defining the longitude of the output data 27 27 ; -
trunk/SRC/ToBeReviewed/PLOTS/axe.pro
r163 r205 74 74 if coupe EQ 'yt' OR coupe EQ 'zt' OR coupe EQ 't' then sep = '!C' ELSE sep = ' ' 75 75 ; 76 caldat, tempsmin, mmin, dmin, ymin, hmin, mnmin, smin, _EXTRA = ex77 caldat, tempsmax, mmax, dmax, ymax, hmax, mnmax, smax, _EXTRA = ex76 caldat, tempsmin, mmin, dmin, ymin, hmin, mnmin, smin, _EXTRA = ex 77 caldat, tempsmax, mmax, dmax, ymax, hmax, mnmax, smax, _EXTRA = ex 78 78 ; format used for the year (2 or 4/5 digits). 79 79 IF NOT keyword_set(digitsyear) THEN digitsyear = 4 80 80 IF digitsyear EQ 2 THEN fmtyr = '%Z' ELSE fmtyr = '%Y' 81 81 ; 82 if ymax EQ ymin then BEGIN 83 if mmin ne mmax then BEGIN 84 ; Same year but several monthes 85 nticks = mmax-mmin+1 86 ticknom = lonarr(nticks) 87 for m = 0,nticks-1 do ticknom[m] = julday(m+mmin, 1, ymin, _EXTRA = ex) 88 tminor = 6 89 datfmt = '%M'+sep+fmtyr 90 ; We check that labels are betwenn TEMPSMIN and TEMPSMAX... 91 ticknom = ticknom[where(ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE -1)] 92 nticks = n_elements(ticknom) 93 ; Particular case where we are overlap two monthes 94 if nticks LE 1 then begin 95 nticks = (dmax+(jourdsmois(mmin, ymin))[0]-dmin+1)/2 96 ticknom = lonarr(nticks) 97 for d = 0,nticks-1 do ticknom[d] = julday(mmin, d*2+dmin, ymin, _EXTRA = ex) 98 ticknom = ticknom[where(ticknom GE tempsmin AND ticknom LE tempsmax $ 99 AND ticknom NE -1)] 100 nticks = n_elements(ticknom) 101 tminor = 2 102 datfmt = '%D'+sep+'%M' 103 endif 104 ENDIF ELSE BEGIN 105 ; Same year and same month 106 IF dmax-dmin+1 GT 4 THEN BEGIN ; more than 4 days 107 nticks = dmax-dmin+1 108 ticknom = lonarr(nticks) 109 for d = 0,nticks-1 do ticknom[d] = julday(mmin, d+dmin, ymin, _EXTRA = ex) 110 ticknom = ticknom[where(ticknom GE tempsmin AND ticknom LE tempsmax $ 111 AND ticknom NE -1)] 112 nticks = n_elements(ticknom) 113 tminor = 2 114 datfmt = '%D'+sep+'%M' 115 ENDIF ELSE BEGIN ; less than 4 days : divday ticks per day 116 divday = 4 117 nticks = (dmax-dmin)*divday + 1 118 ticknom = fltarr(nticks) 119 for d = 0,nticks-1 do $ 120 ticknom[d] = julday(mmin, d/divday+dmin, ymin, _EXTRA = ex) $ 121 +(d MOD divday)/float(divday) 122 tminor = 2 123 datfmt = '%H:00' 124 ENDELSE 125 ENDELSE 126 ENDIF ELSE BEGIN 127 ; Several years 128 CASE 1 OF 129 ymax-ymin+1 LE 10: BEGIN & freq = 1. & tminor = 12 & datfmt = '%M'+sep+fmtyr & end 130 ymax-ymin+1 LE 20: BEGIN & freq = 2. & tminor = 6 & datfmt = '%M'+sep+fmtyr & end 131 ymax-ymin+1 LE 50: BEGIN & freq = 5. & tminor = 5 & datfmt = '%M'+sep+fmtyr & end 132 ymax-ymin+1 LE 100: BEGIN & freq = 10. & tminor = 10 & datfmt = fmtyr & end 133 ymax-ymin+1 LE 1000: BEGIN & freq = 50. & tminor = 5 & datfmt = fmtyr & end 134 ELSE : BEGIN & freq = 100. & tminor = 50 & datfmt = '%Y' & end 135 ENDCASE 136 nticks = floor((ymax-ymin)/freq)+1 137 IF floor((ymin)/freq) NE (ymin)/freq THEN $ 138 yminf = (floor(ymin/freq)+1)*freq ELSE $ 82 CASE 1 OF 83 ; yearly base 84 tempsmax GT julday(mmin, dmin, ymin + 3, hmin, mnmin, smin):BEGIN ; more than 3 years 85 CASE 1 OF 86 ymax-ymin+1 GT 5000: BEGIN & freq = 500. & tminor = 5 & datfmt = fmtyr & end 87 ymax-ymin+1 GT 2000: BEGIN & freq = 200. & tminor = 4 & datfmt = fmtyr & end 88 ymax-ymin+1 GT 1000: BEGIN & freq = 100. & tminor = 5 & datfmt = fmtyr & end 89 ymax-ymin+1 GT 500: BEGIN & freq = 50. & tminor = 5 & datfmt = fmtyr & end 90 ymax-ymin+1 GT 200: BEGIN & freq = 20. & tminor = 4 & datfmt = fmtyr & end 91 ymax-ymin+1 GT 100: BEGIN & freq = 10. & tminor = 5 & datfmt = fmtyr & end 92 ymax-ymin+1 GT 50: BEGIN & freq = 5. & tminor = 5 & datfmt = '%M'+sep+fmtyr & end 93 ymax-ymin+1 GT 20: BEGIN & freq = 4. & tminor = 4 & datfmt = '%M'+sep+fmtyr & end 94 ymax-ymin+1 GT 10: BEGIN & freq = 2. & tminor = 4 & datfmt = '%M'+sep+fmtyr & end 95 ELSE: BEGIN & freq = 1. & tminor = 4 & datfmt = '%M'+sep+fmtyr & end 96 ENDCASE 97 nticks = ceil((ymax-ymin)/freq) + 2 139 98 yminf = (floor(ymin/freq))*freq 140 ticknom = lonarr(nticks) 141 for y = 0, nticks-1 do ticknom[y] = julday(1, 1, yminf+(y*freq), _EXTRA = ex) 142 ; We check that labels are betwenn TEMPSMIN and TEMPSMAX... 143 ticknom = ticknom[where(ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE -1)] 144 nticks = n_elements(ticknom) 145 ; Particular case where we are overlap two monthes 146 if nticks LE 1 then begin 147 nticks = (mmax+12)-mmin+1 148 ticknom = lonarr(nticks) 149 for m = 0,nticks-1 do ticknom[m] = julday(m+mmin, 1, ymin, _EXTRA = ex) 150 ticknom = ticknom[where(ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE -1)] 151 nticks = n_elements(ticknom) 152 tminor = 6 153 datfmt = '%M'+sep+fmtyr 154 ; Particular case where we are overlap two monthes 155 if nticks LE 1 then begin 156 nticks = (dmax+(jourdsmois(mmin, ymin))[0]-dmin+1)/2 157 ticknom = lonarr(nticks) 158 for d = 0,nticks-1 do ticknom[d] = julday(mmin, d*2+dmin, ymin, _EXTRA = ex) 159 ticknom = ticknom[where(ticknom GE tempsmin AND ticknom LE tempsmax $ 160 AND ticknom NE -1)] 161 nticks = n_elements(ticknom) 162 tminor = 2 163 datfmt = '%D'+sep+'%M' 164 endif 165 endif 166 ENDELSE 167 toto = label_date(0, 0, 0, DATE_FORMAT = datfmt, _EXTRA = ex) 99 ticknom = lonarr(nticks) 100 for y = 0, nticks-1 do ticknom[y] = julday(1, 1, yminf + y*freq, _EXTRA = ex) 101 ticknom = ticknom[where(ticknom GE tempsmin AND ticknom LE tempsmax, nticks)] 102 END 103 ; monthly base 104 tempsmax GT julday(mmin + 3, dmin, ymin, hmin, mnmin, smin):BEGIN ; more than 3 months 105 CASE 1 OF 106 tempsmax GT julday(mmin + 30, dmin, ymin, hmin, mnmin, smin):BEGIN ; more than 30 months -> ticks every 3 months 107 freq = 3. & tminor = 3 & END 108 tempsmax GT julday(mmin + 16, dmin, ymin, hmin, mnmin, smin):BEGIN ; more than 16 months -> ticks every 2 months 109 freq = 2. & tminor = 2 & END 110 else:BEGIN ; monthly ticks 111 freq = 1. & tminor = 6 & END 112 ENDCASE 113 nticks = ceil((mmax + 12*(ymax - ymin) - mmin)/freq) + 2 114 mminf = 1 > ((floor(mmin/freq))*freq) 115 ticknom = lonarr(nticks) 116 for m = 0, nticks-1 do ticknom[m] = julday(mminf + freq*m, 1, ymin, _EXTRA = ex) 117 datfmt = '%M'+sep+fmtyr 118 ticknom = ticknom[where(ticknom GE tempsmin AND ticknom LE tempsmax, nticks)] 119 END 120 ; daily base 121 tempsmax GT julday(mmin, dmin + 3, ymin, hmin, mnmin, smin):BEGIN ; more than 3 days 122 CASE 1 OF 123 tempsmax GT julday(mmin, dmin + 60, ymin, hmin, mnmin, smin):BEGIN ; more than 60 days -> ticks every 7 days 124 freq = 7. & tminor = 2 & END 125 tempsmax GT julday(mmin, dmin + 30, ymin, hmin, mnmin, smin):BEGIN ; more than 30 days -> ticks every 5 days 126 freq = 5. & tminor = 5 & END 127 tempsmax GT julday(mmin, dmin + 16, ymin, hmin, mnmin, smin):BEGIN ; more than 16 days -> ticks every 2 days 128 freq = 2. & tminor = 2 & END 129 ELSE:BEGIN ; daily ticks 130 freq = 1. & tminor = 2 & END 131 ENDCASE 132 nticks = ceil((tempsmax - tempsmin)/freq) + 2 133 dminf = 1 > ((floor(dmin/freq))*freq) 134 ticknom = lonarr(nticks) 135 for d = 0, nticks-1 do ticknom[d] = julday(mmin, dminf + freq*d, ymin, _EXTRA = ex) 136 datfmt = '%D'+sep+'%M' 137 ticknom = ticknom[where(ticknom GE tempsmin AND ticknom LE tempsmax, nticks)] 138 END 139 ; hourly base 140 tempsmax GT julday(mmin, dmin, ymin, hmin + 3, mnmin, smin):BEGIN ; more than 3 hours 141 CASE 1 OF 142 tempsmax GT julday(mmin, dmin, ymin, hmin + 48, mnmin, smin):BEGIN ; more than 48 hours -> ticks every 6 hours 143 freq = 6. & tminor = 3 & datfmt = '%D'+sep+'%H:00' & END 144 tempsmax GT julday(mmin, dmin, ymin, hmin + 30, mnmin, smin):BEGIN ; more than 30 hours -> ticks every 4 hours 145 freq = 4. & tminor = 2 & datfmt = '%D'+sep+'%H:00' & END 146 tempsmax GT julday(mmin, dmin, ymin, hmin + 16, mnmin, smin):BEGIN ; more than 16 hours -> ticks every 2 hours 147 freq = 2. & tminor = 2 & datfmt = '%H:00' & END 148 ELSE:BEGIN ; ticks every hour 149 freq = 1. & tminor = 2 & datfmt = '%H:00' & END 150 ENDCASE 151 nticks = ceil((hmax + 24*(dmax - dmin) - hmin)/freq) + 2 152 hminf = (floor(hmin/freq))*freq 153 ticknom = dblarr(nticks) 154 for h = 0, nticks-1 do ticknom[h] = julday(mmin, dmin, ymin, hminf + freq*h, 0, 0, _EXTRA = ex) 155 ticknom = ticknom[where(ticknom GE tempsmin AND ticknom LE tempsmax, nticks)] 156 END 157 ; minute base 158 tempsmax GT julday(mmin, dmin, ymin, hmin, mnmin + 3, smin):BEGIN ; more than 3 minutes 159 CASE 1 OF 160 tempsmax GT julday(mmin, dmin, ymin, hmin, mnmin + 120, smin):BEGIN ; more than 120 minutes -> ticks every 10 minutes 161 freq = 10. & tminor = 2 & END 162 tempsmax GT julday(mmin, dmin, ymin, hmin, mnmin + 60, smin):BEGIN ; more than 60 minutes -> ticks every 6 minutes 163 freq = 6. & tminor = 3 & END 164 tempsmax GT julday(mmin, dmin, ymin, hmin, mnmin + 30, smin):BEGIN ; more than 30 minutes -> ticks every 4 minutes 165 freq = 4. & tminor = 2 & END 166 tempsmax GT julday(mmin, dmin, ymin, hmin, mnmin + 15, smin):BEGIN ; more than 15 minutes -> ticks every 2 minutes 167 freq = 2. & tminor = 2 & END 168 ELSE:BEGIN ; ticks every minutes 169 freq = 1. & tminor = 2 & END 170 ENDCASE 171 nticks = ceil((mnmax + 60*(hmax - hmin) - mnmin)/freq) + 2 172 mnminf = (floor(mnmin/freq))*freq 173 ticknom = dblarr(nticks) 174 for mn = 0, nticks-1 do ticknom[mn] = julday(mmin, dmin, ymin, hmin, mnminf + freq*mn, 0, _EXTRA = ex) 175 ticknom = ticknom[where(ticknom GE tempsmin AND ticknom LE tempsmax, nticks)] 176 datfmt = '%H:%I' 177 END 178 ; second base 179 ELSE:BEGIN ; less than 3 minutes 180 CASE 1 OF 181 tempsmax GT julday(mmin, dmin, ymin, hmin, mnmin, smin + 120):BEGIN ; more than 120 seconds -> ticks every 20 seconds 182 freq = 20. & tminor = 2 & datfmt = '%H:%I:%S' & END 183 tempsmax GT julday(mmin, dmin, ymin, hmin, mnmin, smin + 60):BEGIN ; more than 60 seconds -> ticks every 15 seconds 184 freq = 15. & tminor = 3 & datfmt = '%H:%I:%S' & END 185 tempsmax GT julday(mmin, dmin, ymin, hmin, mnmin, smin + 30):BEGIN ; more than 30 seconds -> ticks every 10 seconds 186 freq = 10. & tminor = 2 & datfmt = '%H:%I:%S' & END 187 tempsmax GT julday(mmin, dmin, ymin, hmin, mnmin, smin + 15):BEGIN ; more than 15 seconds -> ticks every 4 seconds 188 freq = 4. & tminor = 4 & datfmt = '%H:%I:%S' & END 189 tempsmax GT julday(mmin, dmin, ymin, hmin, mnmin, smin + 7):BEGIN ; more than 7 seconds -> ticks every 2 seconds 190 freq = 2. & tminor = 2 & datfmt = '%H:%I:%S' & END 191 ELSE:BEGIN ; ticks every minutes 192 freq = 1. & tminor = 2 & datfmt = '%H:%I:%S' & END 193 ENDCASE 194 nticks = ceil((smax + 60*(mnmax - mnmin) - smin)/freq) + 2 195 sminf = (floor(smin/freq))*freq 196 ticknom = dblarr(nticks) 197 for s = 0, nticks-1 do ticknom[s] = julday(mmin, dmin, ymin, hmin, mnmin, sminf + freq*s, _EXTRA = ex) 198 ticknom = ticknom[where(ticknom GE tempsmin AND ticknom LE tempsmax, nticks)] 199 END 200 ENDCASE 201 dummy = label_date(0, 0, 0, DATE_FORMAT = datfmt, _EXTRA = ex) 168 202 if chkstru(ex, 'DATE_FORMAT') then ex.DATE_FORMAT = '' 169 203 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.