Changeset 219 for trunk/SRC/ToBeReviewed/WIDGET
- Timestamp:
- 03/14/07 16:44:26 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/scanfile.pro
r218 r219 9 9 ; 10 10 ; 11 ; @keyword GRID {default='T'}{type=scalar string}12 ; Used to specify on which grid type are located the data11 ; @keyword GRID 12 ; 13 13 ; 14 14 ; @keyword _EXTRA 15 ; Used to pass your keywords to isafile and ncdf_getaxis15 ; Used to pass your keywords 16 16 ; 17 17 ; @returns … … 76 76 @common 77 77 ;------------------------------------------------------------ 78 res = -1 79 ;------------------------------------------------------------ 78 80 ; filename 79 81 ;------------------------------------------------------------ 80 82 fullname = isafile(filename = namefile, IODIRECTORY = iodir, _extra = ex) 81 IF size(fullname, /type) NE 7 THEN return, -182 83 ;------------------------------------------------------------ 83 84 ; open file … … 87 88 ; What contains the file? 88 89 ;------------------------------------------------------------ 89 in side = ncdf_inquire(cdfid) ;90 infile = ncdf_inquire(cdfid) ; 90 91 ;------------------------------------------------------------ 91 92 ; name of all dimensions 92 93 ;------------------------------------------------------------ 93 namedim = strarr(in side.ndims)94 for dimiq = 0, in side.ndims-1 do begin94 namedim = strarr(infile.ndims) 95 for dimiq = 0, infile.ndims-1 do begin 95 96 ncdf_diminq, cdfid, dimiq, tmpname, value 96 97 namedim[dimiq] = strlowcase(tmpname) 97 98 ENDFOR 98 ;------------------------------------------------------------ 99 ; x/y dimensions id 100 ;------------------------------------------------------------ 101 ncdf_getaxis, cdfid, dimidx, dimidy, _extra = ex 99 ; roms file? 100 dimidx = where(namedim EQ 'xi_rho' OR namedim EQ 'xi_u' OR namedim EQ 'xi_v' OR namedim EQ 'xi_psi') 101 IF dimidx[0] EQ -1 THEN BEGIN 102 ; we are looking for a x dimension with a name matching one of the following regular expression: 103 testname = ['longitude', 'lon', 'x', 'longitude*', 'lon*', 'x*', '*longitude*', '*lon*', '*x*'] 104 cnt = -1 105 ii = 0 106 WHILE cnt NE 1 AND ii LT n_elements(testname) DO BEGIN 107 dimidx = where(strmatch(namedim, testname[ii]) EQ 1, cnt) 108 ii = ii+1 109 ENDWHILE 110 CASE cnt OF 111 0:begin 112 dummy = report(['none of the dimensions name matches one of the following regular expression:' $ 113 , '''longitude'', ''lon'', ''x'', ''longitude*'', ''lon*'', ''x*'', ''*longitude*'', ''*lon*'', ''*x*''' $ 114 , ' => we cannot find the x dimension']) 115 stop 116 END 117 1:dimidx = dimidx[0] 118 ELSE:begin 119 dummy = report(['several (and not one unique) dimensions name matches the following regular expression:' $ 120 , '''longitude'', ''lon'', ''x'', ''longitude*'', ''lon*'', ''x*'', ''*longitude*'', ''*lon*'', ''*x*''' $ 121 , ' => we cannot find the x dimension']) 122 stop 123 ENDELSE 124 ENDCASE 125 ENDIF 126 ; roms file? 127 dimidy = where(namedim EQ 'eta_rho' OR namedim EQ 'eta_u' OR namedim EQ 'eta_v' OR namedim EQ 'eta_psi') 128 IF dimidy[0] EQ -1 THEN BEGIN 129 ; we are looking for a y dimension with a name matching one of the following regular expression: 130 testname = ['latitude', 'lat', 'y', 'latitude*', 'lat*', 'y*', 'eta_*', '*latitude*', '*lat*', '*y*'] 131 cnt = -1 132 ii = 0 133 WHILE cnt NE 1 AND ii LT n_elements(testname) DO BEGIN 134 dimidy = where(strmatch(namedim, testname[ii]) EQ 1, cnt) 135 ii = ii+1 136 ENDWHILE 137 CASE cnt OF 138 0:begin 139 dummy = report(['none of the dimensions name matches one of the following regular expression:' $ 140 , '''latitude'', ''lat'', ''y'', ''latitude*'', ''lat*'', ''y*'', ''eta_*'', ''*latitude*'', ''*lat*'', ''*y*''' $ 141 , ' => we cannot find the y dimension']) 142 stop 143 END 144 1:dimidy = dimidy[0] 145 ELSE:begin 146 dummy = report(['several (and not one unique) dimensions name matches the following regular expression:' $ 147 , '''latitude'', ''lat'', ''y'', ''latitude*'', ''lat*'', ''y*'', ''eta_*'', ''*latitude*'', ''*lat*'', ''*y*''' $ 148 , ' => we cannot find the x dimension']) 149 stop 150 ENDELSE 151 ENDCASE 152 ENDIF 102 153 ;------------------------------------------------------------ 103 154 ; name of all variables 104 155 ;------------------------------------------------------------ 105 156 ; we keep only the variables containing at least x, y and time dimension (if existing...) 106 namevar = strarr(in side.nvars)107 for varid = 0, in side.nvars-1 do begin157 namevar = strarr(infile.nvars) 158 for varid = 0, infile.nvars-1 do begin 108 159 invar = ncdf_varinq(cdfid, varid) ; what contains the variable? 109 160 if (inter(invar.dim, dimidx))[0] NE -1 AND $ 110 161 (inter(invar.dim, dimidy))[0] NE -1 AND $ 111 ((where(invar.dim EQ in side.recdim))[0] NE -1 OR inside.recdim EQ -1) $162 ((where(invar.dim EQ infile.recdim))[0] NE -1 OR infile.recdim EQ -1) $ 112 163 THEN namevar[varid] = invar.name 113 164 ENDFOR … … 159 210 ;------------------------------------------------------------ 160 211 date0fk = date2jul(19000101) 161 IF in side.recdim EQ -1 THEN BEGIN212 IF infile.recdim EQ -1 THEN BEGIN 162 213 jpt = 1 163 214 time = date0fk 164 215 fakecal = 1 165 216 ENDIF ELSE BEGIN 166 ncdf_diminq, cdfid, in side.recdim, timedimname, jpt217 ncdf_diminq, cdfid, infile.recdim, timedimname, jpt 167 218 ; we look for the variable containing the time axis 168 ; we look for the first variable having for only dimension in side.recdim219 ; we look for the first variable having for only dimension infile.recdim 169 220 varid = 0 170 221 repeat BEGIN 171 IF varid LT in side.nvars THEN BEGIN222 IF varid LT infile.nvars THEN BEGIN 172 223 invar = ncdf_varinq(cdfid, varid) 173 224 varid = varid+1 174 225 ENDIF ELSE varid = 0 175 endrep until (n_elements(invar.dim) EQ 1 AND invar.dim[0] EQ in side.recdim) OR (varid EQ 0)226 endrep until (n_elements(invar.dim) EQ 1 AND invar.dim[0] EQ infile.recdim) OR (varid EQ 0) 176 227 varid = varid-1 177 228 ;
Note: See TracChangeset
for help on using the changeset viewer.