Ejemplo n.º 1
0
    def __init__(self,pattern,dimension,dim_func,variable=None,preload=False):

        files = glob(pattern)
        files.sort()

        if len(files) == 0:
            raise Exception("No files matching pattern", pattern)

        layer_dim = [dim_func(f) for f in files]

        self.variable = variable

        #import h5py
        #self.fh = h5py.File(filename,'r')

        self.file_layers = [_spatial_file_loader(filename,variable) for filename in files]

        self.ref_fh = self.file_layers[0]

        #lats,lons = self.fh['dimensions/latitude'][...], self.fh['dimensions/longitude'][...]
        self._flat_cs = self.ref_fh.get_coords()

        self.cs = mt.CoordinateSet((mt.Coordinates(dimension,layer_dim),self._flat_cs['latitude'],self._flat_cs['longitude']))

        if preload:
            self.v =[fh.data[...] for fh in self.file_layers]
        else:
            self.v = [fh.data for fh in self.file_layers]
        self.dtype = self.v[0].dtype

        self._shaper = _3shaper
Ejemplo n.º 2
0
 def __init__(self,path,pattern,nc_var,preload=False):
     import netCDF4 as nc
     self.fh = nc.Dataset(path+pattern,'r')
     self.v = self.fh.variables[nc_var]
     self.time_idx = self.fh.variables['time'][:]
     lats,lons = self.fh.variables['latitude'][...], self.fh.variables['longitude'][...]
     self.cs = mt.CoordinateSet(mt.latlon_to_coords(lats,lons))
Ejemplo n.º 3
0
 def __init__(self, filename, variable, preload=False):
     import netCDF4 as nc
     self.fh = nc.Dataset(filename, 'r')
     lats, lons = self.fh.variables['latitude'][
         ...], self.fh.variables['longitude'][...]
     self.cs = mt.CoordinateSet(mt.latlon_to_coords(lats, lons))
     if preload:
         self.v = self.fh.variables[variable][...]
     else:
         self.v = self.fh.variables[variable]
Ejemplo n.º 4
0
    def get_data(self,coords):
        idx = self._flat_cs.get_index(mt.CoordinateSet([coords.latitude,coords.longitude]))

        out_shape = tuple([len(self.cs[0])] + list(index_shape(idx)))

        out_data = np.empty(out_shape,dtype=self.dtype)

        for i,v in enumerate(self.v):
            out_data[i] = v[idx]

        return out_data.reshape(self._shaper(self.cs,coords))
Ejemplo n.º 5
0
 def __setitem__(self, k, extent):
     group = self.f.create_group(k)
     g = DatasetManager(group)
     lats = mt.Coordinates(mt.latitude, extent.latitudes.to_degrees())
     lons = mt.Coordinates(mt.longitude, extent.longitudes.to_degrees())
     cs = mt.CoordinateSet([lats, lons])
     v = mt.Variable(
         'area', 'm2',
         dict(long_name='Metres squared covered by cell',
              cell_size=extent.cell_size.to_degrees(),
              lat_orient=extent.parent_ref.lat_orient))
     mapped_var = mt.MappedVariable(v, cs, np.float64)
     ncv = g.create_variable(mapped_var)
     ncv[...] = extent.areas.data
Ejemplo n.º 6
0
    def __init__(self,filename,variable,preload=False):
        self.filename = filename
        self.variable = variable
        self.preload = preload

        import h5py
        self.fh = h5py.File(filename,'r')

        lats,lons = self.fh['dimensions/latitude'][...], self.fh['dimensions/longitude'][...]
        self.cs = mt.CoordinateSet(mt.latlon_to_coords(lats,lons))
        if preload:
            self.v = self.fh[variable][...]
        else:
            self.v = self.fh[variable]
        self.dtype = self.v.dtype
Ejemplo n.º 7
0
 def get_data(self, coords):
     idx = self.cs.get_index(
         mt.CoordinateSet([coords.latitude, coords.longitude]))
     return self.v[idx].reshape(self._shaper(self.cs, coords))
Ejemplo n.º 8
0
 def get_coords(self):
     return mt.CoordinateSet([
         mt.Coordinates(mt.get_dimension(k, '', self._dim_handles[k].dtype),
                        self._dim_handles[k][...]) for k in self.dims
     ])
Ejemplo n.º 9
0
 def get_coords(self):
     return mt.CoordinateSet([mt.Coordinates(mt.get_dimension(k),self.fh['dimensions'][k][...]) for k in self.dims])