def __init__(self, file_object: Union[str, BinaryIO]): """ Parameters ---------- file_object : str|BinaryIO file name or file like object for a NITF 2.1 or 2.0 containing a SICD. """ self._des_index = None self._des_header = None self._img_headers = None self._is_sicd = False self._sicd_meta = None NITFDetails.__init__(self, file_object) if self._nitf_header.ImageSegments.subhead_sizes.size == 0: raise SarpyIOError('There are no image segments defined.') if self._nitf_header.GraphicsSegments.item_sizes.size > 0: raise SarpyIOError('A SICD file does not allow for graphics segments.') if self._nitf_header.DataExtensions.subhead_sizes.size == 0: raise SarpyIOError( 'A SICD file requires at least one data extension, containing the ' 'SICD xml structure.') # define the sicd metadata self._find_sicd() if not self.is_sicd: raise SarpyIOError('Could not find the SICD XML des.')
def __init__(self, file_name: str, reverse_axes: Union[None, int, Sequence[int]] = None, transpose_axes: Optional[Tuple[int, ...]] = None): """ Parameters ---------- file_name : str file name for a NITF file containing a complex SICD reverse_axes : None|Sequence[int] Any entries should be restricted to `{0, 1}`. The presence of `0` means to reverse the rows (in the raw sense), and the presence of `1` means to reverse the columns (in the raw sense). transpose_axes : None|Tuple[int, ...] If presented this should be only `(1, 0)`. """ self._reverse_axes = reverse_axes self._transpose_axes = transpose_axes self._segment_status = None self._sicd_meta = None self._segment_bands = None NITFDetails.__init__(self, file_name) self._find_complex_image_segments() if len(self.sicd_meta) == 0: raise SarpyIOError( 'No complex valued image segments found in file {}'.format( file_name))