Ignore:
Timestamp:
03/14/07 17:00:19 (17 years ago)
Author:
smasson
Message:

add x/ydimname and cleaning to solve ticket:61

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SRC/ToBeReviewed/INIT/initncdf.pro

    r219 r221  
    2828; @keyword START1 {default=0}{type=scalar: 0 or 1} 
    2929; Index the axis from 1 instead of 0 when using 
    30 ; /xyindex and/or zindex 
     30; /xyindex and/or /zindex 
    3131; 
    3232; @keyword USEASMASK {type=scalar string} 
     
    3939;    3 NaN values if existing 
    4040; 
    41 ; @keyword XAXISNAME {default='x', 'longitude', 'nav_lon', 'lon', 'lon_rho' or 'NbLongitudes'}{type=scalar string} 
    42 ; A string giving the name of the variable in the file  
    43 ; that contains the [xyz]axis.  
    44 ;       
    45 ; @keyword YAXISNAME {default='y', 'latitude', 'nav_lat','lat', 'lat_rho' or 'NbLatitudes'}{type=scalar string} 
    46 ; A string giving the name of the variable in the file  
    47 ; that contains the [xyz]axis.  
    48 ; 
    4941; @keyword ZAXISNAME {default='z', 'level', 'lev', 'depth...'}{type=scalar string} 
    5042; A string giving the name of the variable in the file  
     
    6355;  
    6456; @keyword _EXTRA 
    65 ; Used to pass keywords to computegrid 
     57; Used to pass keywords to computegrid and ncdf_getaxis 
    6658; 
    6759; @uses 
     
    8880;------------------------------------------------------------ 
    8981;------------------------------------------------------------ 
    90 PRO initncdf, ncfilein, XAXISNAME = xaxisname, YAXISNAME = yaxisname $ 
     82PRO initncdf, ncfilein $ 
    9183              , ZAXISNAME = zaxisname, MASKNAME = maskname $ 
    9284              , INVMASK = invmask, USEASMASK = useasmask $ 
     
    113105; what is inside the file 
    114106  inside = ncdf_inquire(cdfid) 
     107;------------------------------------------------------------ 
     108; name of all dimensions 
     109  namedim = strarr(inside.ndims) 
     110  for dimiq = 0, inside.ndims-1 do begin 
     111    ncdf_diminq, cdfid, dimiq, tmpname, value  
     112    namedim[dimiq] = strlowcase(tmpname) 
     113  ENDFOR 
    115114;---------------------------------------------------------- 
    116115; name of the variables 
     
    121120  ENDFOR 
    122121;---------------------------------------------------------- 
    123 ; find the xaxis 
    124   if keyword_set(xaxisname) then xaxisname = strlowcase(xaxisname) ELSE xaxisname = 'x' 
    125   xvarid = (where(namevar EQ xaxisname OR namevar EQ 'longitude' $ 
    126                   OR namevar EQ 'nav_lon' OR namevar EQ 'lon' $ 
    127                   OR namevar EQ 'lon_rho' OR namevar EQ 'nblongitudes'))[0] 
    128   if xvarid EQ -1 then begin 
    129     print, 'the xaxis was not found, check the use of XAXISNAME keyword' 
    130     stop 
    131   endif 
    132   romsgrid = strmid(namevar[xvarid], 0, 4) EQ 'lon_' 
    133 ; get the size of xaxis 
    134   xinq = ncdf_varinq(cdfid, xvarid) 
    135   ncdf_diminq, cdfid, xinq.dim[0], blabla, jpifromx 
    136 ; should we read or compute the xaxis? 
    137   IF NOT keyword_set(xyindex) THEN BEGIN 
    138 ; read the xaxis 
    139     ncdf_varget, cdfid, xvarid, xaxis 
    140 ; make sure of the shape of xaxis 
    141     IF xinq.ndims GE 2 THEN BEGIN 
    142       ncdf_diminq, cdfid, xinq.dim[1], blabla, jpjfromx 
    143       xaxis = reform(xaxis, jpifromx, jpjfromx, /over) 
    144     ENDIF 
    145   ENDIF ELSE xaxis = keyword_set(start1) + findgen(jpifromx) 
    146 ;---------------------------------------------------------- 
    147 ; find the yaxis 
    148   if keyword_set(yaxisname) then yaxisname = strlowcase(yaxisname) ELSE yaxisname = 'y' 
    149   yvarid = (where(namevar EQ yaxisname OR namevar EQ 'latitude' $ 
    150                   OR namevar EQ 'nav_lat' OR namevar EQ 'lat' $ 
    151                   OR namevar EQ 'lat_rho' OR namevar EQ 'nblatitudes'))[0] 
    152   yvarid = yvarid[0] 
    153   if yvarid EQ -1 then begin 
    154     print, 'the yaxis was not found, check the use of YAXISNAME keyword' 
    155     stop 
    156   endif 
    157 ; get the size of yaxis and check it is ok with the values found for x 
    158   yinq = ncdf_varinq(cdfid, yvarid) 
    159   IF xinq.ndims GE 2 THEN BEGIN 
    160     ncdf_diminq, cdfid, yinq.dim[0], blabla, jpifromy 
    161     ncdf_diminq, cdfid, yinq.dim[1], blabla, jpjfromy 
    162     IF jpifromy NE jpifromx THEN BEGIN  
    163       print, 'xaxis and y axis do not have the same x dimension...' 
    164     ENDIF 
    165   ENDIF ELSE ncdf_diminq, cdfid, yinq.dim[0], blabla, jpjfromy 
    166   IF n_elements(jpjfromx) NE 0 THEN BEGIN 
    167     IF jpjfromy NE jpjfromx THEN BEGIN  
    168       print, 'xaxis and y axis do not have the same y dimension...' 
    169     ENDIF     
    170   ENDIF 
    171 ; should we read or compute the xaxis? 
    172   IF NOT keyword_set(xyindex) THEN BEGIN 
    173 ; read the yaxis 
    174     ncdf_varget, cdfid, yvarid, yaxis 
    175 ; make sure of the shape of xaxis 
    176     IF xinq.ndims GE 2 THEN yaxis = reform(yaxis, jpifromy, jpjfromy, /over) 
    177   ENDIF ELSE yaxis = keyword_set(start1) + findgen(jpjfromy) 
     122; find the x/yaxis 
     123 ncdf_getaxis, cdfid, dimidx, dimidy, xaxis, yaxis $ 
     124               , START1 = start1, XYINDEX = xyindex, ROMSGRID = romsgrid, _extra = ex 
    178125;---------------------------------------------------------- 
    179126; find the zaxis 
Note: See TracChangeset for help on using the changeset viewer.