Changeset 1107 in lmdz_wrf


Ignore:
Timestamp:
Sep 16, 2016, 2:55:39 PM (9 years ago)
Author:
lfita
Message:

Fixing `sellonlatbox'
Adding `numpydarray' as type in 'set_attributek'

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/nc_var_tools.py

    r1103 r1107  
    872872        elif attrkind == type(np.float64(1.)):
    873873            attrvalue = np.float64(attrval)
     874        elif attrkind == type(np.array([1.,2.])):
     875            attrvalue = attrval
    874876        else:
    875877            print errormsg
     
    60566058    latinf = variable_inf(latobj)
    60576059
    6058     lonv = lonobj[:]
    6059     latv = latobj[:]
     6060    if len(lonobj.shape) <= 2:
     6061        lonv = lonobj[:]
     6062        latv = latobj[:]
     6063    else:
     6064        print warnmsg
     6065        print '  ' + fname + ': assuming that lon/lat is constant to the first dimension!!'
     6066        print '    shape lon:', lonobj.shape, 'lat:', latobj.shape
     6067        lonv = lonobj[0,]
     6068        latv = latobj[0,]
    60606069
    60616070    if varn == 'all':
     
    61016110    malat = ma.masked_outside(latv,latSW,latNE)
    61026111
    6103     if len(lonv.shape) == 1:
     6112    if len(lonobj.shape) == 1:
    61046113        dlonn = loninf.dimns[0]
    61056114        dlatn = latinf.dimns[0]
     
    61096118        malonv = ma.array(lonv, mask=malonlat)
    61106119        malatv = ma.array(latv, mask=malonlat)
    6111     elif len(lonv.shape) == 2:
     6120    elif len(lonobj.shape) == 2:
    61126121        dlonn = loninf.dimns[1]
    61136122        dlatn = loninf.dimns[0]
     
    61176126        malonv = ma.array(lonv, mask=malonlat)
    61186127        malatv = ma.array(latv, mask=malonlat)
    6119     elif len(lonv.shape) == 3:
    6120         print warnmsg
    6121         print '  ' + fname + ': assuming that lon/lat is constant to the first dimension!!'
    6122         print '    shape lon:', lonv.shape, 'lat:', latv.shape
     6128    elif len(lonobj.shape) == 3:
    61236129        dlonn = loninf.dimns[2]
    61246130        dlatn = loninf.dimns[1]
    6125         dimx = lonv.shape[2]
    6126         dimy = lonv.shape[1]
     6131        dimx = lonv.shape[1]
     6132        dimy = lonv.shape[0]
    61276133        malonlat = np.zeros((dimy,dimx), dtype=bool)
    61286134        malonlat = malon.mask + malat.mask
     
    61416147    xlat = malat.max()
    61426148
    6143     print '  ' + fname + ': data box: SW', nlon, nlat,'NE:',xlon,xlat
     6149    print '  ' + fname + ': data box: SW', nlon, nlat,'NE:',xlon,xlat
     6150    print '  ' + fname + ': name of the longitudinal dimension:', dlonn,             \
     6151      'latitudinal:', dlatn
    61446152
    61456153    ilon = dimx
     
    61806188
    61816189    print 'ilon elon ilat elat:', ilon, elon, ilat, elat
    6182 #    newdimx = elon - ilon + 1
    6183 #    newdimy = elat - ilat + 1
    6184     newdimx = dimx - np.sum(malonv.mask)
    6185     newdimy = dimy - np.sum(malatv.mask)
     6190    newdimx = elon - ilon + 1
     6191    newdimy = elat - ilat + 1
    61866192
    61876193    if len(malon.shape) == 1:
     
    62406246        for dimn in varinf.dimns:
    62416247            if not gen.searchInlist(newncobj.dimensions, dimn):
    6242                 newncobj.createDimension(dimn, len(objfile.dimensions[dimn]))
     6248                if objfile.dimensions[dimn].isunlimited():
     6249                    newncobj.createDimension(dimn, None)
     6250                else:
     6251                    newncobj.createDimension(dimn, len(objfile.dimensions[dimn]))
    62436252# Very special case when we have for example a list of stations (which is the case!)
    62446253            if dimn == dlonn and dimx != dimy:
     
    62486257            else:
    62496258                varslice.append(slice(0,len(objfile.dimensions[dimn])))
     6259                print fname + '; Lluis here! dimn', dimn
    62506260
    62516261        if varinf.FillValue is not None:
     
    62566266
    62576267        if dimx != dimy:
     6268            print fname + '; Lluis; varslice:', varslice,'shape newvar:', newvar.shape
    62586269            newvar[:] = varobj[tuple(varslice)]
    62596270        else:
     
    62886299    for atrn in objfile.ncattrs():
    62896300        attrv = objfile.getncattr(atrn)
     6301        print fname + '; Lluis attrn, attrv, type:', atrn, attrv, type(attrv)
    62906302        newattr = set_attributek(newncobj, atrn, attrv, type(attrv))
    62916303
Note: See TracChangeset for help on using the changeset viewer.