- Timestamp:
- May 29, 2016, 7:48:24 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/nc_var_tools.py
r783 r786 5611 5611 vardims = varobj.dimensions 5612 5612 5613 if not searchInlist(list(vardims),dimn):5613 if not gen.searchInlist(list(vardims),dimn): 5614 5614 varvals = varobj[:] 5615 5615 else: … … 5627 5627 ## 5628 5628 varattrs = varobj.ncattrs() 5629 if searchInlist(varattrs, '_FillValue'):5629 if gen.searchInlist(varattrs, '_FillValue'): 5630 5630 varfil = varobj._FillValue 5631 5631 else: … … 5854 5854 gen.check_arguments(fname,values,arguments,',') 5855 5855 5856 5857 5856 lonn = values.split(',')[0] 5858 5857 latn = values.split(',')[1] … … 5931 5930 dimx = lonv.shape[0] 5932 5931 dimy = latv.shape[0] 5933 malonlat = np.zeros((dimy,dimx), dtype=lonv.dtype)5934 for i in range(dimx):5935 malonlat[:,i] = malon[i] + malat5932 malonlat = malon.mask + malat.mask 5933 malonv = ma.array(lonv, mask=malonlat) 5934 malatv = ma.array(latv, mask=malonlat) 5936 5935 elif len(lonv.shape) == 2: 5937 5936 dlonn = loninf.dimns[1] … … 5951 5950 dimy = lonv.shape[1] 5952 5951 malonlat = np.zeros((dimy,dimx), dtype=bool) 5953 malonlat = malon.mask [0,:,:] + malat.mask[0,:,:]5954 malonv = ma.array(lonv, mask=malon )5955 malatv = ma.array(latv, mask=malon )5952 malonlat = malon.mask + malat.mask 5953 malonv = ma.array(lonv, mask=malonlat) 5954 malatv = ma.array(latv, mask=malonlat) 5956 5955 else: 5957 5956 print errormsg … … 5969 5968 5970 5969 ilon = dimx 5971 for j in range(dimy):5972 for i in range(dimx):5973 if malonlat[j,i] == False and i < ilon:5974 ilon = i5975 5970 elon = 0 5976 for j in range(dimy):5977 for i in range(dimx):5978 if malonlat[j,i] == False and i > elon:5979 elon = i5980 5981 5971 ilat = dimy 5982 for j in range(dimy):5983 for i in range(dimx):5984 if malonlat[j,i] == False and j < ilat:5985 ilat = j5986 5972 elat = 0 5987 for j in range(dimy): 5988 for i in range(dimx): 5989 if malonlat[j,i] == False and j > elat: 5990 elat = j 5991 5992 newdimx = elon - ilon + 1 5993 newdimy = elat - ilat + 1 5973 if len(lonv.shape) > 1: 5974 for j in range(dimy): 5975 for i in range(dimx): 5976 if malonlat[j,i] == False and i < ilon: 5977 ilon = i 5978 if malonlat[j,i] == False and i > elon: 5979 elon = i 5980 if malonlat[j,i] == False and j < ilat: 5981 ilat = j 5982 if malonlat[j,i] == False and j > elat: 5983 elat = j 5984 else: 5985 if dimx != dimy: 5986 for i in range(dimx): 5987 if malonlat[i] == False and i < ilon: 5988 ilon = i 5989 if malonlat[i] == False and i > elon: 5990 elon = i 5991 for j in range(dimy): 5992 if malonlat[j] == False and j < ilat: 5993 ilat = j 5994 if malonlat[j] == False and j > elat: 5995 elat = i 5996 else: 5997 for i in range(dimx): 5998 if malonlat[i] == False and i < ilon: 5999 ilon = i 6000 ilat = i 6001 if malonlat[i] == False and i > elon: 6002 elon = i 6003 elat = i 6004 6005 print 'ilon elon ilat elat:', ilon, elon, ilat, elat 6006 # newdimx = elon - ilon + 1 6007 # newdimy = elat - ilat + 1 6008 newdimx = dimx - np.sum(malonv.mask) 6009 newdimy = dimy - np.sum(malatv.mask) 5994 6010 5995 6011 if len(malon.shape) == 1: … … 6049 6065 if not gen.searchInlist(newncobj.dimensions, dimn): 6050 6066 newncobj.createDimension(dimn, len(objfile.dimensions[dimn])) 6051 if dimn == dlonn: 6067 # Very special case when we have for example a list of stations (which is the case!) 6068 if dimn == dlonn and dimx != dimy: 6052 6069 varslice.append(slice(ilon,elon+1)) 6053 elif dimn == dlatn :6070 elif dimn == dlatn and dimx != dimy: 6054 6071 varslice.append(slice(ilat,elat+1)) 6055 6072 else: … … 6061 6078 newvar = newncobj.createVariable(vn, nctype(varinf.dtype), varinf.dimns, \ 6062 6079 fill_value = varinf.FillValue) 6063 newvar[:] = varobj[tuple(varslice)] 6080 6081 if dimx != dimy: 6082 newvar[:] = varobj[tuple(varslice)] 6083 else: 6084 # Very special case when we have for example a list of stations (which is the case!) 6085 print ' ' + fname + ': woow we are in a stations-list like of file...' 6086 inpos0 = 0 6087 for i in range(newdimx): 6088 inpos = gen.index_vec(malonlat[inpos0:dimx+1], False) 6089 inpos = inpos + inpos0 6090 inpos0 = inpos + 1 6091 varslice = [] 6092 newvarslice = [] 6093 for dimn in varinf.dimns: 6094 if not gen.searchInlist(newncobj.dimensions, dimn): 6095 newncobj.createDimension(dimn, len(objfile.dimensions[dimn])) 6096 # Very special case when we have for example a list of stations (which is the case!) 6097 if dimn == dlonn: 6098 varslice.append(inpos) 6099 newvarslice.append(i) 6100 else: 6101 varslice.append(slice(0,len(objfile.dimensions[dimn]))) 6102 newvarslice.append(slice(0,len(objfile.dimensions[dimn]))) 6103 newvar[tuple(newvarslice)] = varobj[tuple(varslice)] 6064 6104 6065 6105 for atrn in varinf.attributes:
Note: See TracChangeset
for help on using the changeset viewer.