def get_dataset(self, dsid, info, xslice=slice(None), yslice=slice(None)): if dsid.name not in self.mda['channel_list']: raise KeyError('Channel % s not available in the file' % dsid.name) elif dsid.name not in ['HRV']: shape = (self.mda['number_of_lines'], self.mda['number_of_columns']) # Check if there is only 1 channel in the list as a change # is needed in the arrray assignment ie channl id is not present if len(self.mda['channel_list']) == 1: raw = self.dask_array['visir']['line_data'] else: i = self.mda['channel_list'].index(dsid.name) raw = self.dask_array['visir']['line_data'][:, i, :] data = dec10216(raw.flatten()) data = da.flipud(da.fliplr((data.reshape(shape)))) else: shape = (self.mda['hrv_number_of_lines'], self.mda['hrv_number_of_columns']) raw2 = self.dask_array['hrv']['line_data'][:, 2, :] raw1 = self.dask_array['hrv']['line_data'][:, 1, :] raw0 = self.dask_array['hrv']['line_data'][:, 0, :] shape_layer = (self.mda['number_of_lines'], self.mda['hrv_number_of_columns']) data2 = dec10216(raw2.flatten()) data2 = da.flipud(da.fliplr((data2.reshape(shape_layer)))) data1 = dec10216(raw1.flatten()) data1 = da.flipud(da.fliplr((data1.reshape(shape_layer)))) data0 = dec10216(raw0.flatten()) data0 = da.flipud(da.fliplr((data0.reshape(shape_layer)))) data = np.zeros(shape) idx = range(0, shape[0], 3) data[idx, :] = data2 idx = range(1, shape[0], 3) data[idx, :] = data1 idx = range(2, shape[0], 3) data[idx, :] = data0 xarr = xr.DataArray(data, dims=['y', 'x']).where(data != 0).astype(np.float32) if xarr is None: dataset = None else: dataset = self.calibrate(xarr, dsid) dataset.attrs['units'] = info['units'] dataset.attrs['wavelength'] = info['wavelength'] dataset.attrs['standard_name'] = info['standard_name'] dataset.attrs['platform_name'] = self.mda['platform_name'] dataset.attrs['sensor'] = 'seviri' dataset.attrs['orbital_parameters'] = { 'projection_longitude': self.mda['projection_parameters']['ssp_longitude'], 'projection_latitude': 0., 'projection_altitude': self.mda['projection_parameters']['h']} return dataset
def get_dataset(self, dsid, info, xslice=slice(None), yslice=slice(None)): channel = dsid.name channel_list = self._channel_list if channel not in channel_list: raise KeyError('Channel % s not available in the file' % channel) elif channel not in ['HRV']: shape = (self.mda['number_of_lines'], self.mda['number_of_columns']) # Check if there is only 1 channel in the list as a change # is needed in the arrray assignment ie channl id is not present if len(channel_list) == 1: raw = self.dask_array['visir']['line_data'] else: i = channel_list.index(channel) raw = self.dask_array['visir']['line_data'][:, i, :] data = dec10216(raw.flatten()) data = da.flipud(da.fliplr((data.reshape(shape)))) else: shape = (self.mda['hrv_number_of_lines'], self.mda['hrv_number_of_columns']) raw2 = self.dask_array['hrv']['line_data'][:, 2, :] raw1 = self.dask_array['hrv']['line_data'][:, 1, :] raw0 = self.dask_array['hrv']['line_data'][:, 0, :] shape_layer = (self.mda['number_of_lines'], self.mda['hrv_number_of_columns']) data2 = dec10216(raw2.flatten()) data2 = da.flipud(da.fliplr((data2.reshape(shape_layer)))) data1 = dec10216(raw1.flatten()) data1 = da.flipud(da.fliplr((data1.reshape(shape_layer)))) data0 = dec10216(raw0.flatten()) data0 = da.flipud(da.fliplr((data0.reshape(shape_layer)))) data = np.zeros(shape) idx = range(0, shape[0], 3) data[idx, :] = data2 idx = range(1, shape[0], 3) data[idx, :] = data1 idx = range(2, shape[0], 3) data[idx, :] = data0 xarr = xr.DataArray(data, dims=['y', 'x']).where(data != 0).astype(np.float32) if xarr is None: dataset = None else: dataset = self.calibrate(xarr, dsid) dataset.attrs['units'] = info['units'] dataset.attrs['wavelength'] = info['wavelength'] dataset.attrs['standard_name'] = info['standard_name'] dataset.attrs['platform_name'] = self.platform_name dataset.attrs['sensor'] = 'seviri' return dataset
def get_dataset(self, dsid, info, xslice=slice(None), yslice=slice(None)): channel = dsid.name shape = (self.mda['number_of_lines'], self.mda['number_of_columns']) raw = self.dask_array['DataRecord']['LineRecord']['{}'.format(channel)] tmp1 = raw[:, 0, :] if (channel == 'afm'): not_processed = np.where(tmp1 == 0) not_processed1 = np.where(tmp1 == 3) else: not_processed = np.where(tmp1 == 0) not_processed1 = np.where(tmp1 > 100) data = np.array(tmp1.astype(np.float32)) data[not_processed] = np.nan data[not_processed1] = np.nan data = da.flipud(da.fliplr((data.reshape(shape)))) xarr = xr.DataArray(data, dims=['y', 'x']) if xarr is None: dataset = None else: dataset = xarr dataset.attrs['units'] = info['units'] dataset.attrs['wavelength'] = info['wavelength'] dataset.attrs['standard_name'] = info['standard_name'] dataset.attrs['platform_name'] = self.platform_name dataset.attrs['sensor'] = 'seviri' return dataset
def get_dataset(self, dsid, info, xslice=slice(None), yslice=slice(None)): channel = dsid.name shape = (self.mda['number_of_lines'], self.mda['number_of_columns']) raw = self.dask_array['DataRecord']['sst'] data = raw[:, 0, :] shifted = np.left_shift(data, 5).astype(np.uint16) tmp = np.right_shift(shifted, 5) not_processed = np.where(tmp == 8) data = np.array(tmp.astype(np.float32)) # data[not_processed] = np.nan data = da.flipud(da.fliplr((data.reshape(shape)))) xarr = xr.DataArray(data, dims=['y', 'x']) if xarr is None: dataset = None else: dataset = xarr dataset *= 0.1 dataset += 170. dataset.attrs['units'] = info['units'] dataset.attrs['wavelength'] = info['wavelength'] dataset.attrs['standard_name'] = info['standard_name'] dataset.attrs['platform_name'] = self.platform_name dataset.attrs['sensor'] = 'seviri' return dataset
def get_dataset(self, dsid, info, xslice=slice(None), yslice=slice(None)): channel = dsid.name shape = (self.mda['number_of_lines'], self.mda['number_of_columns']) raw = self.dask_array['DataRecord']['LineRecord']['{}'.format(channel)] data = raw[:, 0, :] data = da.flipud(da.fliplr((data.reshape(shape)))) xarr = xr.DataArray(data, dims=['y', 'x']).where(data != 0) if xarr is None: dataset = None else: dataset = xarr # Create new dataset where 255 values are ignored and interpreted # as nan's # dataset=dataset.where(dataset!=255,other=float('NaN'),drop=False) dataset.attrs['units'] = info['units'] dataset.attrs['wavelength'] = info['wavelength'] dataset.attrs['standard_name'] = info['standard_name'] dataset.attrs['platform_name'] = self.platform_name dataset.attrs['sensor'] = 'seviri' return dataset
def get_dataset(self, dsid, info, xslice=slice(None), yslice=slice(None)): channel = dsid.name shape = (self.mda['number_of_lines'], self.mda['number_of_columns']) raw = self.dask_array['DataRecord']['LineRecord']['{}'.format(channel)].astype(np.uint16) raw1 = self.dask_array['DataRecord']['LineRecord'][:] data = raw[:, 0, :] data = da.flipud(da.fliplr((data.reshape(shape)))) # xarr = xr.DataArray(data, dims=['y', 'x']).where(data != 0) xarr = xr.DataArray(data, dims=['y', 'x']) if xarr is None: dataset = None else: dataset = xarr if channel == 'CTT' or channel == 'CTP': dataset = dataset.where(dataset != 64537.) if channel == 'EFF' or channel == 'SCE': dataset = dataset.where(dataset != 0.) if channel == 'CTT': dataset += 170 dataset.attrs['units'] = info['units'] dataset.attrs['wavelength'] = info['wavelength'] dataset.attrs['standard_name'] = info['standard_name'] dataset.attrs['platform_name'] = self.platform_name dataset.attrs['sensor'] = 'seviri' return dataset
def get_dataset(self, dsid, info, xslice=slice(None), yslice=slice(None)): channel = dsid.name shape = (self.mda['number_of_lines'], self.mda['number_of_columns']) #print (self.dask_array) print (self.dask_array['DataRecord']['Data']['CloudStats']) #raw = self.dask_array['DataRecord']['Data]']['CloudStats'][0]['{}'.format(channel)].astype(np.uint16) raw = self.dask_array['DataRecord']['{}'.format(channel)] print (raw) shape = (232,232) print ('shape',shape) datax = np.empty(shape, dtype=np.float32) datax.fill(np.nan) # MPEF rows and columns start with 1, not 0 rows = self.dask_array['DataRecord']['SegmentRow']-1 cols = self.dask_array['DataRecord']['SegmentCol']-1 datax[rows, cols] = raw[:] data = da.flipud(da.fliplr(datax)) #data = da.flipud(da.fliplr((data.reshape(shape)))) # xarr = xr.DataArray(data, dims=['y', 'x']).where(data != 0) xarr = xr.DataArray(data, dims=['y', 'x']) if xarr is None: dataset = None else: dataset = xarr if channel == 'CTT' or channel == 'CTP': dataset = dataset.where(dataset != 64537.) dataset.attrs['units'] = info['units'] dataset.attrs['wavelength'] = info['wavelength'] dataset.attrs['standard_name'] = info['standard_name'] dataset.attrs['platform_name'] = self.platform_name dataset.attrs['sensor'] = 'seviri' return dataset
def get_dataset(self, dsid, info, xslice=slice(None), yslice=slice(None)): channel = dsid.name shape = (self.mda['number_of_lines'], self.mda['number_of_columns']) raw = self.dask_array['DataRecord']['{}'.format(channel)] # MPEF rows and columns start with 1, not 0 # rows = self.dask_array['DataRecord']['SegmentRow']-1 # cols = self.dask_array['DataRecord']['SegmentCol']-1 # datax[rows, cols] = raw[:] data = raw[:,:] data = da.flipud(da.fliplr(data)) #data = da.flipud(da.fliplr((data.reshape(shape)))) # xarr = xr.DataArray(data, dims=['y', 'x']).where(data != 0) xarr = xr.DataArray(data, dims=['y', 'x']) if xarr is None: dataset = None else: dataset = xarr if channel == 'CTT' or channel == 'CTP': dataset = dataset.where(dataset != 64537.) if channel == 'EFF' or channel == 'SCE': dataset = dataset.where(dataset != 0.) if channel == 'CTT': dataset += 170 dataset.attrs['units'] = info['units'] dataset.attrs['wavelength'] = info['wavelength'] dataset.attrs['standard_name'] = info['standard_name'] dataset.attrs['platform_name'] = self.platform_name dataset.attrs['sensor'] = 'seviri' return dataset
def get_dataset(self, dsid, info, xslice=slice(None), yslice=slice(None)): channel = dsid.name shape = (self.mda['number_of_lines'], self.mda['number_of_columns']) raw = self.dask_array['DataRecord']['LineRecord']['{}'.format(channel)] data = raw[:, 0, :] data = da.flipud(da.fliplr((data.reshape(shape)))) xarr = xr.DataArray(data, dims=['y', 'x']).where(data != 32767) if xarr is None: dataset = None else: dataset = xarr dataset.attrs['units'] = info['units'] dataset.attrs['wavelength'] = info['wavelength'] dataset.attrs['standard_name'] = info['standard_name'] dataset.attrs['platform_name'] = self.platform_name dataset.attrs['sensor'] = 'seviri' return dataset
def get_dataset(self, dsid, info, xslice=slice(None), yslice=slice(None)): channel = dsid.name channel_list = self._channel_list if channel not in channel_list: raise KeyError('Channel % s not available in the file' % channel) elif channel not in ['HRV']: shape = (self.mda['number_of_lines'], self.mda['number_of_columns']) # Check if there is only 1 channel in the list as a change # is needed in the arrray assignment ie channl id is not present if len(channel_list) == 1: raw = self.dask_array['visir']['line_data'] else: i = channel_list.index(channel) raw = self.dask_array['visir']['line_data'][:, i, :] data = dec10216(raw.flatten()) data = da.flipud(da.fliplr((data.reshape(shape)))) else: # Upper HRV stacked directly on top of Lower HRV # (in actuality, these two are offset to eachother) shape = (self.mda['hrv_number_of_lines'], self.mda['hrv_number_of_columns']) raw2 = self.dask_array['hrv']['line_data'][:, 2, :] raw1 = self.dask_array['hrv']['line_data'][:, 1, :] raw0 = self.dask_array['hrv']['line_data'][:, 0, :] shape_layer = (self.mda['number_of_lines'], self.mda['hrv_number_of_columns']) data2 = dec10216(raw2.flatten()) data2 = da.flipud(da.fliplr((data2.reshape(shape_layer)))) data1 = dec10216(raw1.flatten()) data1 = da.flipud(da.fliplr((data1.reshape(shape_layer)))) data0 = dec10216(raw0.flatten()) data0 = da.flipud(da.fliplr((data0.reshape(shape_layer)))) data = np.zeros(shape) idx = range(0, shape[0], 3) data[idx, :] = data2 idx = range(1, shape[0], 3) data[idx, :] = data1 idx = range(2, shape[0], 3) data[idx, :] = data0 # Full disk area (ReferenceGridHRV), with HRV-UPPER and # HRV-Lower embedded inside. # see section 3.1.5 of MSG Level 1.5 Image Data Format Description ref_grid = self.header['15_DATA_HEADER']['ImageDescription'][ 'ReferenceGridHRV'] ysize = ref_grid['NumberOfLines'] xsize = ref_grid['NumberOfColumns'] fulldisk = np.zeros((ysize, xsize)) hrv_coverage = self.trailer['15TRAILER']['ImageProductionStats'][ 'ActualL15CoverageHRV'] un = ysize - hrv_coverage['UpperNorthLineActual'] uw = xsize - hrv_coverage['UpperWestColumnActual'] us = ysize - hrv_coverage['UpperSouthLineActual'] ue = xsize - hrv_coverage['UpperEastColumnActual'] fulldisk[un:us + 1, uw:ue + 1] = data[:us + 1 - un, :] ln = ysize - hrv_coverage['LowerNorthLineActual'] lw = xsize - hrv_coverage['LowerWestColumnActual'] ls = ysize - hrv_coverage['LowerSouthLineActual'] le = xsize - hrv_coverage['LowerEastColumnActual'] fulldisk[ln:ls + 1, lw:le + 1] = data[ln:, :] data = fulldisk xarr = xr.DataArray(data, dims=['y', 'x']).where(data != 0).astype(np.float32) if xarr is None: dataset = None else: dataset = self.calibrate(xarr, dsid) dataset.attrs['units'] = info['units'] dataset.attrs['wavelength'] = info['wavelength'] dataset.attrs['standard_name'] = info['standard_name'] dataset.attrs['platform_name'] = self.platform_name dataset.attrs['sensor'] = 'seviri' return dataset