Example #1
0
    def resample_variable_wind(self):

        if self.ncfile == None:
            raise IOError("Please call write_axis() first")

        logging.info('[CoverageInterpolator] Resample variable \'wind\' to the resolution '+str(self.targetResX)+'/'+str(self.targetResY)+'.')

        ucur = self.ncfile.createVariable('uwind', float32, ('time', 'latitude', 'longitude',),fill_value=9.96921e+36)
        ucur.long_name = "eastward wind" ;
        ucur.standard_name = "eastward_wind_velocity" ;
        ucur.globwave_name = "eastward_wind_velocity" ;
        ucur.units = "m s-1" ;
        #ucur.scale_factor = 1.f ;
        #ucur.add_offset = 0.f ;
        #ucur.valid_min = -990 ;
        #ucur.valid_max = 990 ;
        ucur.comment = "cur=sqrt(U**2+V**2)" ;

        vcur = self.ncfile.createVariable('vwind', float32, ('time', 'latitude', 'longitude',),fill_value=9.96921e+36)
        vcur.long_name = "northward wind" ;
        vcur.standard_name = "northward_wind_velocity" ;
        vcur.globwave_name = "northward_wind_velocity" ;
        vcur.units = "m s-1" ;
        #ucur.scale_factor = 1.f ;
        #ucur.add_offset = 0.f ;
        #ucur.valid_min = -990 ;
        #ucur.valid_max = 990 ;
        vcur.comment = "cur=sqrt(U**2+V**2)" ;

        time_index=0
        for time in self.coverage.read_axis_t():
            cur = self.coverage.read_variable_wind_at_time(time)
            ucur[time_index:time_index+1,:,:] = resample_2d_to_grid(self.coverage.read_axis_x(),self.coverage.read_axis_y(),self.lon_reg,self.lat_reg,cur[0])
            vcur[time_index:time_index+1,:,:] = resample_2d_to_grid(self.coverage.read_axis_x(),self.coverage.read_axis_y(),self.lon_reg,self.lat_reg,cur[1])
            time_index += 1
Example #2
0
    def resample_variable_current_at_depths(self,vertical_method="nearest"):
        """
        Interpole un champ de courant au niveau donnée à la construction
        @vertical_method: méthode d'interpolation verticale. "nearest" ou "linear"
        """
        if self.ncfile == None:
            raise IOError("Please call write_axis() first")

        ucur = self.ncfile.createVariable('ucur', float32, ('time', 'depth', 'latitude', 'longitude',),fill_value=9.96921e+36)
        ucur.long_name = "eastward current" ;
        ucur.standard_name = "eastward_sea_water_velocity" ;
        ucur.globwave_name = "eastward_sea_water_velocity" ;
        ucur.units = "m s-1" ;
        #ucur.scale_factor = 1.f ;
        #ucur.add_offset = 0.f ;
        #ucur.valid_min = -990 ;
        #ucur.valid_max = 990 ;
        ucur.comment = "cur=sqrt(U**2+V**2)" ;

        vcur = self.ncfile.createVariable('vcur', float32, ('time', 'depth', 'latitude', 'longitude',),fill_value=9.96921e+36)
        vcur.long_name = "northward current" ;
        vcur.standard_name = "northward_sea_water_velocity" ;
        vcur.globwave_name = "northward_sea_water_velocity" ;
        vcur.units = "m s-1" ;
        #ucur.scale_factor = 1.f ;
        #ucur.add_offset = 0.f ;
        #ucur.valid_min = -990 ;
        #ucur.valid_max = 990 ;
        vcur.comment = "cur=sqrt(U**2+V**2)" ;

        time_index=0
        for time in self.coverage.read_axis_t():

            logging.info('[CoverageInterpolator] Resample variable \'current\' at time '+str(time)+' to the resolution '+str(self.targetResX)+'/'+str(self.targetResY)+'.')

            level_index = 0
            for level in self.targetDepths:

                logging.info('[CoverageInterpolator] At depth '+str(level)+' m.')

                cur = self.coverage.read_variable_current_at_time_and_depth(time,level,vertical_method)
                ucur[time_index:time_index+1,level_index:level_index+1,:,:] = resample_2d_to_grid(self.coverage.read_axis_x(),self.coverage.read_axis_y(),self.lon_reg,self.lat_reg,cur[0])
                vcur[time_index:time_index+1,level_index:level_index+1,:,:] = resample_2d_to_grid(self.coverage.read_axis_x(),self.coverage.read_axis_y(),self.lon_reg,self.lat_reg,cur[1])
                level_index+= 1

            time_index += 1
Example #3
0
    def resample_variable_2D_mask(self):
        if self.ncfile == None:
            raise IOError("Please call write_axis() first")

        logging.info('[CoverageInterpolator] Resample variable \'mask\' at resolution '+str(self.targetResX)+'/'+str(self.targetResY)+'.')

        var = self.ncfile.createVariable('mask', float32, ('latitude', 'longitude',),fill_value=9.96921e+36)
        var.long_name = "land/sea mask" ;
        var.standard_name = "land_sea_mask" ;
        var.globwave_name = "land_sea_mask" ;
        var.units = "m" ;
        #wlv.scale_factor = "1.f" ;
        #wlv.add_offset = "0.f" ;
        #wlv.valid_min = "0f" ;
        #wlv.valid_max = 10000f ;

        var[:,:] = resample_2d_to_grid(self.coverage.read_axis_x(),self.coverage.read_axis_y(),self.lon_reg,self.lat_reg,self.coverage.read_variable_2D_mask())
Example #4
0
    def resample_variable_waves_mean_period(self):
        if self.ncfile == None:
            raise IOError("Please call write_axis() first")

        logging.info('[CoverageInterpolator] Resample variable \'waves_mean_period\' at resolution '+str(self.targetResX)+'/'+str(self.targetResY)+'.')

        var = self.ncfile.createVariable('waves_mean_period', float32, ('time', 'latitude', 'longitude',),fill_value=9.96921e+36)
        var.long_name = "surface wave mean period" ;
        var.standard_name = "surface_wave_mean_period" ;
        var.globwave_name = "surface_wave_mean_period" ;
        var.units = "deg" ;
        #wlv.scale_factor = "1.f" ;
        #wlv.add_offset = "0.f" ;
        #wlv.valid_min = "0f" ;
        #wlv.valid_max = 10000f ;

        time_index=0
        for time in self.coverage.read_axis_t():
            var[time_index:time_index+1,:,:] = resample_2d_to_grid(self.coverage.read_axis_x(),self.coverage.read_axis_y(),self.lon_reg,self.lat_reg,self.coverage.read_variable_waves_mean_period_at_time(time))
            time_index += 1
Example #5
0
    def resample_variable_ssh(self):
        if self.ncfile == None:
            raise IOError("Please call write_axis() first")

        logging.info('[CoverageInterpolator] Resample variable \'ssh\' at resolution '+str(self.targetResX)+'/'+str(self.targetResY)+'.')

        wlv = self.ncfile.createVariable('ssh', float32, ('time', 'latitude', 'longitude',),fill_value=9.96921e+36)
        wlv.long_name = "sea surface height above sea level" ;
        wlv.standard_name = "sea_surface_height_above_sea_level" ;
        wlv.globwave_name = "sea_surface_height_above_sea_level" ;
        wlv.units = "m" ;
        #wlv.scale_factor = "1.f" ;
        #wlv.add_offset = "0.f" ;
        #wlv.valid_min = "0f" ;
        #wlv.valid_max = 10000f ;

        time_index=0
        for time in self.coverage.read_axis_t():
            wlv[time_index:time_index+1,:,:] = resample_2d_to_grid(self.coverage.read_axis_x(),self.coverage.read_axis_y(),self.lon_reg,self.lat_reg,self.coverage.read_variable_ssh_at_time(time))
            time_index += 1
Example #6
0
    def resample_variable_salinity_at_depths(self,vertical_method="nearest"):
        """
        Interpole un champ de courant au niveau donnée à la construction
        @vertical_method: méthode d'interpolation verticale. "nearest" ou "linear"
        """
        if self.ncfile == None:
            raise IOError("Please call write_axis() first")

        var = self.ncfile.createVariable('salinity', float32, ('time', 'depth', 'latitude', 'longitude',),fill_value=9.96921e+36)
        var.long_name = "salinity" ;
        var.standard_name = "salinity" ;
        var.globwave_name = "salinity" ;
        var.units = "psu" ;
        #ucur.scale_factor = 1.f ;
        #ucur.add_offset = 0.f ;
        #ucur.valid_min = -990 ;
        #ucur.valid_max = 990 ;

        time_index=0
        for time in self.coverage.read_axis_t():

            logging.info('[CoverageInterpolator] Resample variable \'salinity\' at time '+str(time)+' to the resolution '+str(self.targetResX)+'/'+str(self.targetResY)+'.')

            level_index = 0
            for level in self.targetDepths:

                if type(level) == int:
                    logging.info('[CoverageInterpolator] At index level '+str(level)+'')
                else:
                    logging.info('[CoverageInterpolator] At depth '+str(level)+' m.')

                var[time_index:time_index+1,level_index:level_index+1,:,:] = resample_2d_to_grid(self.coverage.read_axis_x(),self.coverage.read_axis_y(),self.lon_reg,self.lat_reg,self.coverage.read_variable_salinity_at_time_and_depth(time,level,vertical_method))

                level_index+= 1


            time_index += 1