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
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
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())
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
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
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