Пример #1
0
    def __init__(self, sio_details):
        """

        Parameters
        ----------
        sio_details : str|SIODetails
            filename or SIODetails object
        """

        if isinstance(sio_details, str):
            sio_details = SIODetails(sio_details)
        if not isinstance(sio_details, SIODetails):
            raise TypeError('The input argument for SIOReader must be a filename or '
                            'SIODetails object.')
        self._sio_details = sio_details
        sicd_meta = sio_details.get_sicd()
        if sicd_meta.ImageData.PixelType == 'AMP8I_PHS8I':
            transform_data = amp_phase_to_complex(sicd_meta.ImageData.AmpTable)
        else:
            transform_data = 'COMPLEX'
        raw_bands = 2
        output_bands = 1
        output_dtype = 'complex64'
        chipper = BIPChipper(sio_details.file_name, sio_details.data_type, sio_details.data_size,
                             raw_bands, output_bands, output_dtype,
                             symmetry=sio_details.symmetry, transform_data=transform_data,
                             data_offset=sio_details.data_offset)

        SICDTypeReader.__init__(self, sicd_meta)
        BaseReader.__init__(self, chipper, reader_type="SICD")
        self._check_sizes()
Пример #2
0
    def __init__(self,
                 data_segment: Union[None, DataSegment, Sequence[DataSegment]],
                 cphd_meta: Union[None, CPHDType1_0, CPHDType0_3],
                 close_segments: bool=True,
                 delete_files: Union[None, str, Sequence[str]]=None):
        """

        Parameters
        ----------
        data_segment : None|DataSegment|Sequence[DataSegment]
        cphd_meta : None|CPHDType1_0|CPHDType0_3
            The CPHD metadata object
        close_segments : bool
            Call segment.close() for each data segment on reader.close()?
        delete_files : None|Sequence[str]
            Any temp files which should be cleaned up on reader.close()?
            This will occur after closing segments.
        """

        if cphd_meta is None:
            self._cphd_meta = None
        elif isinstance(cphd_meta, (CPHDType1_0, CPHDType0_3)):
            self._cphd_meta = cphd_meta
        else:
            raise TypeError(
                'The cphd_meta must be of type CPHDType, got `{}`'.format(type(cphd_meta)))

        BaseReader.__init__(
            self, data_segment, reader_type='CPHD', close_segments=close_segments, delete_files=delete_files)
Пример #3
0
    def __init__(self,
                 data_segment: Union[None, DataSegment, Sequence[DataSegment]],
                 sicd_meta: Union[None, SICDType, Sequence[SICDType]],
                 close_segments: bool=True,
                 delete_files: Union[None, str, Sequence[str]]=None):
        """

        Parameters
        ----------
        data_segment : None|DataSegment|Sequence[DataSegment]
        sicd_meta : None|SICDType|Sequence[SICDType]
            The SICD metadata object(s).
        close_segments : bool
            Call segment.close() for each data segment on reader.close()?
        delete_files : None|Sequence[str]
            Any temp files which should be cleaned up on reader.close()?
            This will occur after closing segments.
        """

        if sicd_meta is None:
            self._sicd_meta = None
        elif isinstance(sicd_meta, SICDType):
            self._sicd_meta = sicd_meta
        else:
            temp_list = []
            for el in sicd_meta:
                if not isinstance(el, SICDType):
                    raise TypeError(
                        'Got a collection for sicd_meta, and all elements are required '
                        'to be instances of SICDType.')
                temp_list.append(el)
            self._sicd_meta = tuple(temp_list)

        BaseReader.__init__(
            self, data_segment, reader_type='SICD', close_segments=close_segments, delete_files=delete_files)
Пример #4
0
    def __init__(self, csk_details):
        """

        Parameters
        ----------
        csk_details : str|CSKDetails
            file name or CSKDetails object
        """

        if isinstance(csk_details, string_types):
            csk_details = CSKDetails(csk_details)
        if not isinstance(csk_details, CSKDetails):
            raise TypeError('The input argument for a CSKReader must be a '
                            'filename or CSKDetails object')
        self._csk_details = csk_details
        sicd_data, shape_dict, symmetry = csk_details.get_sicd_collection()
        chippers = []
        sicds = []
        for band_name in sicd_data:
            if self._csk_details.mission_id in ['CSK', 'KMPS']:
                the_band = '{}/SBI'.format(band_name)
            elif self._csk_details.mission_id == 'CSG':
                the_band = '{}/IMG'.format(band_name)
            else:
                raise ValueError('Unhandled mission id {}'.format(
                    self._csk_details.mission_id))

            sicds.append(sicd_data[band_name])
            chippers.append(
                H5Chipper(csk_details.file_name, the_band,
                          shape_dict[band_name], symmetry))

        SICDTypeReader.__init__(self, tuple(sicds))
        BaseReader.__init__(self, tuple(chippers), reader_type="SICD")
Пример #5
0
    def __init__(self, nisar_details):
        """

        Parameters
        ----------
        nisar_details : str|NISARDetails
            file name or NISARDetails object
        """

        if isinstance(nisar_details, str):
            nisar_details = NISARDetails(nisar_details)
        if not isinstance(nisar_details, NISARDetails):
            raise TypeError('The input argument for NISARReader must be a '
                            'filename or NISARDetails object')
        self._nisar_details = nisar_details
        sicd_data, shape_dict, symmetry = nisar_details.get_sicd_collection()
        chippers = []
        sicds = []
        for band_name in sicd_data:
            sicds.append(sicd_data[band_name])
            chippers.append(H5Chipper(nisar_details.file_name, band_name, shape_dict[band_name], symmetry))

        SICDTypeReader.__init__(self, tuple(sicds))
        BaseReader.__init__(self, tuple(chippers), reader_type="SICD")
        self._check_sizes()
Пример #6
0
    def __init__(self, cphd_details):
        """

        Parameters
        ----------
        cphd_details : str|CPHDDetails
        """

        self._cphd_details = _validate_cphd_details(cphd_details,
                                                    version='0.3')
        chipper = self._create_chippers()
        BaseReader.__init__(self, None, chipper, is_sicd_type=False)
Пример #7
0
    def __init__(self, cphd_details):
        """

        Parameters
        ----------
        cphd_details : str|CPHDDetails
        """

        self._cphd_details = _validate_cphd_details(cphd_details,
                                                    version='1.0')
        chipper = self._create_chippers()
        BaseReader.__init__(self, None, chipper, reader_type="CPHD")
Пример #8
0
 def __call__(self,
              *ranges: Sequence[Union[None, int, slice]],
              index: int=0,
              raw: bool=False,
              squeeze: bool=True) -> numpy.ndarray:
     index = self._validate_index(index)
     return BaseReader.__call__(self, *ranges, index=index, raw=raw, squeeze=squeeze)
Пример #9
0
    def __init__(self, crsd_details):
        """

        Parameters
        ----------
        crsd_details : str|CRSDDetails
        """

        self._channel_map = None  # type: Union[None, Dict[str, int]]
        self._support_array_map = None  # type: Union[None, Dict[str, int]]
        self._pvp_memmap = None  # type: Union[None, Dict[str, numpy.ndarray]]
        self._support_array_memmap = None  # type: Union[None, Dict[str, numpy.ndarray]]
        self._crsd_details = _validate_crsd_details(crsd_details,
                                                    version='1.0')
        CRSDTypeReader.__init__(self, self._crsd_details.crsd_meta)
        chipper = self._create_chippers()
        BaseReader.__init__(self, chipper, reader_type="CRSD")

        self._create_pvp_memmaps()
        self._create_support_array_memmaps()
Пример #10
0
    def __init__(self, iceye_details):
        """

        Parameters
        ----------
        iceye_details : str|ICEYEDetails
            file name or ICEYEDetails object
        """

        if isinstance(iceye_details, string_types):
            iceye_details = ICEYEDetails(iceye_details)
        if not isinstance(iceye_details, ICEYEDetails):
            raise TypeError('The input argument for a ICEYEReader must be a '
                            'filename or ICEYEDetails object')
        self._iceye_details = iceye_details
        sicd, data_size, symmetry = iceye_details.get_sicd()
        chipper = ICEYEChipper(iceye_details.file_name, data_size, symmetry)

        SICDTypeReader.__init__(self, sicd)
        BaseReader.__init__(self, chipper, reader_type="SICD")
Пример #11
0
    def __init__(self, capella_details):
        """

        Parameters
        ----------
        capella_details : str|CapellaDetails
        """

        if isinstance(capella_details, string_types):
            capella_details = CapellaDetails(capella_details)

        if not isinstance(capella_details, CapellaDetails):
            raise TypeError('The input argument for capella_details must be a '
                            'filename or CapellaDetails object')
        self._capella_details = capella_details
        sicd = self.capella_details.get_sicd()
        chipper = NativeTiffChipper(
            self.capella_details.tiff_details,
            symmetry=self.capella_details.get_symmetry())

        SICDTypeReader.__init__(self, sicd)
        BaseReader.__init__(self, chipper, reader_type="SICD")
Пример #12
0
    def __init__(self, reader, row_bounds=None, column_bounds=None, index=0):
        """

        Parameters
        ----------
        reader : SICDTypeReader
            The base reader.
        row_bounds : None|Tuple[int, int]
            Of the form `(min row, max row)`.
        column_bounds : None|Tuple[int, int]
            Of the form `(min column, max column)`.
        index : int
            The image index.
        """

        sicd, row_bounds, column_bounds = reader.get_sicds_as_tuple(
        )[index].create_subset_structure(row_bounds, column_bounds)

        chipper = SubsetChipper(reader._get_chippers_as_tuple()[index],
                                row_bounds, column_bounds)
        BaseReader.__init__(self, chipper, reader_type='SICD')
        SICDTypeReader.__init__(self, sicd)
Пример #13
0
    def __init__(self, crsd_details: Union[str, CRSDDetails]):
        """

        Parameters
        ----------
        crsd_details : str|CRSDDetails
        """

        self._channel_map = None  # type: Union[None, Dict[str, int]]
        self._support_array_map = None  # type: Union[None, Dict[str, int]]
        self._pvp_memmap = None  # type: Union[None, Dict[str, numpy.ndarray]]
        self._support_array_memmap = None  # type: Union[None, Dict[str, numpy.ndarray]]
        self._crsd_details = _validate_crsd_details(crsd_details, version='1.0')

        CRSDTypeReader.__init__(self, None, self._crsd_details.crsd_meta)
        # set data segments after setting up the pvp information, because
        #   we need the AmpSf to set up the format function for the data segment
        self._create_pvp_memmaps()
        self._create_support_array_memmaps()

        data_segments = self._create_data_segments()
        BaseReader.__init__(self, data_segments, reader_type='CRSD')