Example #1
0
    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
Example #2
0
    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
Example #7
0
    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
Example #8
0
    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
Example #10
0
    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