Exemplo n.º 1
0
    def cruiseSelector(self, var,Cruisename):
        '''
        Returns a profile list  by selecting for
        variable (string) and
        Cruisename (string)

         Returns a profile list
         
         '''
        iCruise = find_index(Cruisename, self.CRUISES)
        ivar    = find_index(var, self.VARIABLES)
        values= self.DATA[ivar,:]
        good = (values < 1e+19) & (values > 0) 
        ii = self.DATA[-1,:] == (iCruise+1)
        Selected = good & ii
        year    = self.DATA[ 0,Selected]
        month   = self.DATA[ 1,Selected]
        day     = self.DATA[ 2,Selected]
        lat     = self.DATA[ 3,Selected]
        lon     = self.DATA[ 4,Selected]
        depth   = self.DATA[ 5,Selected]
        dataset = self.DATA[-1,Selected]
        
        values  = values[Selected]
        nValues=values.size
        TIME     = np.zeros((nValues), dtype=np.int32)
        for i in range(nValues):
            time = datetime.datetime(year[i],month[i],day[i])
            TIME[i] = time.toordinal()
        
        return self.profileGenerator(TIME, lon, lat, values, depth, dataset)
Exemplo n.º 2
0
    def stationSelector(self, var,stationname):
        '''
        Returns a profile list  by selecting for
        variable (string) and
        stationname(string)

         Returns a profile list
         
         '''
        print('-------------------------------------------')
        print('NON ancora testato, potrebbe NON funzionare')
        print('-------------------------------------------')
        iStation= find_index(stationname, self.STATIONS)
        ivar    = find_index(var, self.VARIABLES)
        values= self.DATA[ivar,:]
        good = (values < 1e+19) & (values > 0) 
        ii = self.DATA[-1,:] == (iStation+1)
        Selected = good & ii
        year    = self.DATA[ 0,Selected]
        month   = self.DATA[ 1,Selected]
        day     = self.DATA[ 2,Selected]
        lat     = self.DATA[ 3,Selected]
        lon     = self.DATA[ 4,Selected]
        depth   = self.DATA[ 5,Selected]
        dataset = self.DATA[-1,Selected]
        
        values  = values[Selected]
        nValues=values.size
        TIME     = np.zeros((nValues), dtype=np.int32)
        for i in range(nValues):
            time = datetime.datetime(year[i],month[i],day[i])
            TIME[i] = time.toordinal()
        
        return self.profileGenerator(TIME, lon, lat, values, depth, dataset)
Exemplo n.º 3
0
    def __init__(self):
        '''
        Reads the NetCDF Dataset
        '''
        self.filename="/gss/gss_work/DRES_OGS_BiGe/Observations/TIME_RAW_DATA/STATIC/Carbon/Dataset_Med_CarbSys.nc"
        self.DataExtractor = DatasetExtractor(self.filename)

        # DATA ELIMINATION in order to not duplicate values with nutrients dataset
        for cruisename in ['METEOR','METEOR51', 'METEOR95','PROSOPE']:
            iCruise = find_index(cruisename, self.DataExtractor.CRUISES)
            for var in ['nitrate','phosphate','silicate','oxygen']:
                ivar    = find_index(var, self.DataExtractor.VARIABLES)
                ii = self.DataExtractor.DATA[-1,:] == (iCruise+1)
                self.DataExtractor.DATA[ivar,ii] = -999.0
Exemplo n.º 4
0
    def selector(self,var,T_int, region):
        '''
        Returns a profile list by selecting for
          variable (string),
          T_int   (TimeInterval object)
          region  (region object)

         '''

        ivar  = find_index(var, self.VARIABLES)
        values= self.DATA[ivar,:]
        units = self.UNITS[ivar,:].tostring()

        if units =="\\mumol/kg":
            itemp  = find_index('temp'    , self.VARIABLES)
            ipsal  = find_index('salinity', self.VARIABLES)
            idens  = find_index('density' , self.VARIABLES)
            temp   = self.DATA[itemp,:]
            sali   = self.DATA[ipsal,:]
            pres   = self.DATA[5,:]
            dens   = self.DATA[idens,:]
            good_rho  = (sali < 1.e+19 ) & (sali>0) & (temp < 1.e+19 ) & (temp>0) & (pres < 1.e+19 ) & (pres>0)
            t = T90conv(temp)
            n = len(values)
            calculated_rho  = np.ones((n),np.float32)*np.nan
            assumed_density = np.ones((n),np.float32)*np.nan
            calculated_rho[good_rho]  = seawater.dens(sali[good_rho],t[good_rho],pres[good_rho])


            good_dens = (dens < 1.e+19 ) & (dens>0)
            for i in range(n):
                if good_dens[i]:
                    assumed_density[i] = dens[i]
                else:
                    if good_rho[i]:
                        assumed_density[i] = calculated_rho[i]


            good = ~np.isnan(assumed_density)
            values[good] = values[good] * assumed_density[good] /1000.
            values[~good] = 1.e+20

        good  = (values < 1e+19) & (values > 0)
        
        values = values[good]
        
        year    = self.DATA[ 0,good]
        month   = self.DATA[ 1,good]
        day     = self.DATA[ 2,good]
        lat     = self.DATA[ 3,good]
        lon     = self.DATA[ 4,good]
        depth   = self.DATA[ 5,good]
        dataset = self.DATA[-1,good]
        
        nValues=values.size
        Selected = np.zeros((nValues,),dtype=np.bool)
        TIME     = np.zeros((nValues), dtype=np.int32)
        for i in range(nValues):
            time = datetime.datetime(year[i],month[i],day[i])
            TIME[i] = time.toordinal()
            if T_int.contains(time) & region.is_inside(lon[i], lat[i]):
                Selected[i] = True 
    
        Time    = TIME[Selected]
        Lon     =  lon[Selected]
        Lat     =  lat[Selected]
        values  =  values[Selected]
        depth   =   depth[Selected]
        dataset = dataset[Selected]
        
        return self.profileGenerator(Time, Lon, Lat, values, depth, dataset)