Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
__author__ = "Thomas McCullough"
class STDeskewType(Serializable):
"""
Parameters to describe image domain ST Deskew processing.
"""
_fields = ('Applied', 'STDSPhasePoly')
_required = _fields
# descriptors
Applied = _BooleanDescriptor(
'Applied', _required, strict=DEFAULT_STRICT,
docstring='Parameter indicating if slow time *(ST)* Deskew Phase function has been applied.') # type: bool
STDSPhasePoly = _SerializableDescriptor(
'STDSPhasePoly', Poly2DType, _required, strict=DEFAULT_STRICT,
docstring='Slow time deskew phase function to perform the *ST/Kaz* shift. Two-dimensional phase '
'(cycles) polynomial function of image range coordinate *(variable 1)* and '
'azimuth coordinate *(variable 2)*.') # type: Poly2DType
def __init__(self, Applied=None, STDSPhasePoly=None, **kwargs):
"""
Parameters
----------
Applied : bool
STDSPhasePoly : Poly2DType|numpy.ndarray|list|tuple
kwargs : dict
"""
if '_xml_ns' in kwargs:
self._xml_ns = kwargs['_xml_ns']
# descriptors
TStart = _FloatDescriptor(
'TStart', _required, strict=DEFAULT_STRICT,
docstring='IPP start time relative to collection start time, i.e. offsets in seconds.') # type: float
TEnd = _FloatDescriptor(
'TEnd', _required, strict=DEFAULT_STRICT,
docstring='IPP end time relative to collection start time, i.e. offsets in seconds.') # type: float
IPPStart = _IntegerDescriptor(
'IPPStart', _required, strict=True, docstring='Starting IPP index for the period described.') # type: int
IPPEnd = _IntegerDescriptor(
'IPPEnd', _required, strict=True, docstring='Ending IPP index for the period described.') # type: int
IPPPoly = _SerializableDescriptor(
'IPPPoly', Poly1DType, _required, strict=DEFAULT_STRICT,
docstring='IPP index polynomial coefficients yield IPP index as a function of time.') # type: Poly1DType
index = _IntegerDescriptor(
'index', _required, strict=DEFAULT_STRICT, docstring='The element array index.') # type: int
def __init__(self, TStart=None, TEnd=None, IPPStart=None, IPPEnd=None, IPPPoly=None, index=None, **kwargs):
"""
Parameters
----------
TStart : float
TEnd : float
IPPStart : int
IPPEnd : int
IPPPoly : Poly1DType|numpy.ndarray|list|tuple
index : int
kwargs : dict
"""
if '_xml_ns' in kwargs:
__classification__ = "UNCLASSIFIED"
__author__ = "Thomas McCullough"
class RgAzCompType(Serializable):
"""
Parameters included for a Range, Doppler image.
"""
_fields = ('AzSF', 'KazPoly')
_required = _fields
_numeric_format = {'AzSF': '0.16G'}
# descriptors
AzSF = _FloatDescriptor(
'AzSF', _required, strict=DEFAULT_STRICT,
docstring='Scale factor that scales image coordinate az = ycol (meters) to a delta cosine of the '
'Doppler Cone Angle at COA, *(in 1/m)*') # type: float
KazPoly = _SerializableDescriptor(
'KazPoly', Poly1DType, _required, strict=DEFAULT_STRICT,
docstring='Polynomial function that yields azimuth spatial frequency *(Kaz = Kcol)* as a function of '
'slow time ``(variable 1)``. That is '
r':math:`\text{Slow Time (sec)} \to \text{Azimuth spatial frequency (cycles/meter)}`. '
'Time relative to collection start.') # type: Poly1DType
def __init__(self, AzSF=None, KazPoly=None, **kwargs):
"""
Parameters
----------
AzSF : float
KazPoly : Poly1DType|numpy.ndarray|list|tuple
'AmpTable', _collections_tags, _required, strict=DEFAULT_STRICT,
minimum_length=256, maximum_length=256,
docstring="The amplitude look-up table. This is required if "
"`PixelType == 'AMP8I_PHS8I'`") # type: numpy.ndarray
NumRows = _IntegerDescriptor(
'NumRows', _required, strict=True,
docstring='The number of Rows in the product. May include zero rows.') # type: int
NumCols = _IntegerDescriptor(
'NumCols', _required, strict=True,
docstring='The number of Columns in the product. May include zero rows.') # type: int
FirstRow = _IntegerDescriptor(
'FirstRow', _required, strict=DEFAULT_STRICT,
docstring='Global row index of the first row in the product. '
'Equal to 0 in full image product.') # type: int
FirstCol = _IntegerDescriptor(
'FirstCol', _required, strict=DEFAULT_STRICT,
docstring='Global column index of the first column in the product. '
'Equal to 0 in full image product.') # type: int
FullImage = _SerializableDescriptor(
'FullImage', FullImageType, _required, strict=DEFAULT_STRICT,
docstring='Original full image product.') # type: FullImageType
SCPPixel = _SerializableDescriptor(
'SCPPixel', RowColType, _required, strict=DEFAULT_STRICT,
docstring='Scene Center Point pixel global row and column index. Should be located near the '
'center of the full image.') # type: RowColType
ValidData = _SerializableArrayDescriptor(
'ValidData', RowColArrayElement, _collections_tags, _required, strict=DEFAULT_STRICT, minimum_length=3,
docstring='Indicates the full image includes both valid data and some zero filled pixels. '
'Simple polygon encloses the valid data (may include some zero filled pixels for simplification). '
'Vertices in clockwise order.') # type: Union[SerializableArray, List[RowColArrayElement]]
def __init__(self, PixelType=None, AmpTable=None, NumRows=None, NumCols=None,
"""
_fields = ('Application', 'DateTime', 'Site', 'Profile')
_required = ()
# descriptors
Application = _StringDescriptor(
'Application', _required, strict=DEFAULT_STRICT,
docstring='Name and version of the application used to create the image.') # type: str
DateTime = _DateTimeDescriptor(
'DateTime', _required, strict=DEFAULT_STRICT, numpy_datetime_units='us',
docstring='Date and time the image creation application processed the image (UTC).') # type: numpy.datetime64
Site = _StringDescriptor(
'Site', _required, strict=DEFAULT_STRICT,
docstring='The creation site of this SICD product.') # type: str
Profile = _StringDescriptor(
'Profile', _required, strict=DEFAULT_STRICT,
docstring='Identifies what profile was used to create this SICD product.') # type: str
def __init__(self, Application=None, DateTime=None, Site=None, Profile=None, **kwargs):
"""
Parameters
----------
Application : str
DateTime : numpy.datetime64|datetime|date|str
Site : str
Profile : str
kwargs : dict
"""
if '_xml_ns' in kwargs:
self._xml_ns = kwargs['_xml_ns']
'collection. The current collection is the collection from which this '
'SIDD product was generated.') # type: MatchInfoType
Compression = _SerializableDescriptor(
'Compression', CompressionType, _required, strict=DEFAULT_STRICT,
docstring='Contains information regarding any compression that has occurred '
'to the image data.') # type: CompressionType
DigitalElevationData = _SerializableDescriptor(
'DigitalElevationData', DigitalElevationDataType, _required, strict=DEFAULT_STRICT,
docstring='This describes any Digital ElevatioNData included with '
'the SIDD product.') # type: DigitalElevationDataType
ProductProcessing = _SerializableDescriptor(
'ProductProcessing', ProductProcessingType, _required, strict=DEFAULT_STRICT,
docstring='Contains metadata related to algorithms used during '
'product generation.') # type: ProductProcessingType
Annotations = _SerializableDescriptor(
'Annotations', AnnotationsType, _required, strict=DEFAULT_STRICT,
docstring='List of annotations for the imagery.') # type: AnnotationsType
def __init__(self, ProductCreation=None, Display=None, GeoData=None,
Measurement=None, ExploitationFeatures=None, DownstreamReprocessing=None,
ErrorStatistics=None, Radiometric=None, MatchInfo=None, Compression=None,
DigitalElevationData=None, ProductProcessing=None, Annotations=None, **kwargs):
"""
Parameters
----------
ProductCreation : ProductCreationType
Display : ProductDisplayType
GeoData : GeoDataType
Measurement : MeasurementType
ExploitationFeatures : ExploitationFeaturesType
DownstreamReprocessing : None|DownstreamReprocessingType
# The SIDD object
class SIDDType(Serializable):
"""
The root element of the SIDD 2.0 document.
"""
_fields = (
'ProductCreation', 'Display', 'GeoData', 'Measurement', 'ExploitationFeatures',
'DownstreamReprocessing', 'ErrorStatistics', 'Radiometric', 'MatchInfo', 'Compression',
'DigitalElevationData', 'ProductProcessing', 'Annotations')
_required = (
'ProductCreation', 'Display', 'GeoData', 'Measurement', 'ExploitationFeatures')
# Descriptor
ProductCreation = _SerializableDescriptor(
'ProductCreation', ProductCreationType, _required, strict=DEFAULT_STRICT,
docstring='Information related to processor, classification, and product type.') # type: ProductCreationType
Display = _SerializableDescriptor(
'Display', ProductDisplayType, _required, strict=DEFAULT_STRICT,
docstring='Contains information on the parameters needed to display the product in '
'an exploitation tool.') # type: ProductDisplayType
GeoData = _SerializableDescriptor(
'GeoData', GeoDataType, _required, strict=DEFAULT_STRICT,
docstring='Contains generic and extensible targeting and geographic region '
'information.') # type: GeoDataType
Measurement = _SerializableDescriptor(
'Measurement', MeasurementType, _required, strict=DEFAULT_STRICT,
docstring='Contains the metadata necessary for performing measurements.') # type: MeasurementType
ExploitationFeatures = _SerializableDescriptor(
'ExploitationFeatures', ExploitationFeaturesType, _required, strict=DEFAULT_STRICT,
docstring='Computed metadata regarding the input collections and '
'final product.') # type: ExploitationFeaturesType
class RMRefType(Serializable):
"""
Range migration reference element of RMA type.
"""
_fields = ('PosRef', 'VelRef', 'DopConeAngRef')
_required = _fields
_numeric_format = {'DopConeAngRef': '0.16G', }
# descriptors
PosRef = _SerializableDescriptor(
'PosRef', XYZType, _required, strict=DEFAULT_STRICT,
docstring='Platform reference position in ECF coordinates used to establish '
'the reference slant plane.') # type: XYZType
VelRef = _SerializableDescriptor(
'VelRef', XYZType, _required, strict=DEFAULT_STRICT,
docstring='Platform reference velocity vector in ECF coordinates used to establish '
'the reference slant plane.') # type: XYZType
DopConeAngRef = _FloatDescriptor(
'DopConeAngRef', _required, strict=DEFAULT_STRICT,
docstring='Reference Doppler Cone Angle in degrees.') # type: float
def __init__(self, PosRef=None, VelRef=None, DopConeAngRef=None, **kwargs):
"""
Parameters
----------
PosRef : XYZType|numpy.ndarray|list|tuple
VelRef : XYZType|numpy.ndarray|list|tuple
DopConeAngRef : float
kwargs
"""
class NoiseLevelType_(Serializable):
"""
Noise level structure.
"""
_fields = ('NoiseLevelType', 'NoisePoly')
_required = _fields
# class variables
_NOISE_LEVEL_TYPE_VALUES = ('ABSOLUTE', 'RELATIVE')
# descriptors
NoiseLevelType = _StringEnumDescriptor(
'NoiseLevelType', _NOISE_LEVEL_TYPE_VALUES, _required, strict=DEFAULT_STRICT,
docstring='Indicates that the noise power polynomial yields either absolute power level or power '
'level relative to the *SCP* pixel location.') # type: str
NoisePoly = _SerializableDescriptor(
'NoisePoly', Poly2DType, _required, strict=DEFAULT_STRICT,
docstring='Polynomial coefficients that yield thermal noise power *(in dB)* in a pixel as a function of '
'image row coordinate *(variable 1)* and column coordinate *(variable 2)*.') # type: Poly2DType
def __init__(self, NoiseLevelType=None, NoisePoly=None, **kwargs):
"""
Parameters
----------
NoiseLevelType : str
NoisePoly : Poly2DType|numpy.ndarray|list|tuple
kwargs : dict
"""
if '_xml_ns' in kwargs:
self._xml_ns = kwargs['_xml_ns']
if '_xml_ns_key' in kwargs:
from .blocks import XYZType, XYZPolyType, XYZPolyAttributeType
__classification__ = "UNCLASSIFIED"
__author__ = "Thomas McCullough"
class PositionType(Serializable):
"""The details for platform and ground reference positions as a function of time since collection start."""
_fields = ('ARPPoly', 'GRPPoly', 'TxAPCPoly', 'RcvAPC')
_required = ('ARPPoly',)
_collections_tags = {'RcvAPC': {'array': True, 'child_tag': 'RcvAPCPoly'}}
# descriptors
ARPPoly = _SerializableDescriptor(
'ARPPoly', XYZPolyType, _required, strict=DEFAULT_STRICT,
docstring='Aperture Reference Point (ARP) position polynomial in ECF as a function of elapsed '
'seconds since start of collection.') # type: XYZPolyType
GRPPoly = _SerializableDescriptor(
'GRPPoly', XYZPolyType, _required, strict=DEFAULT_STRICT,
docstring='Ground Reference Point (GRP) position polynomial in ECF as a function of elapsed '
'seconds since start of collection.') # type: XYZPolyType
TxAPCPoly = _SerializableDescriptor(
'TxAPCPoly', XYZPolyType, _required, strict=DEFAULT_STRICT,
docstring='Transmit Aperture Phase Center (APC) position polynomial in ECF as a function of '
'elapsed seconds since start of collection.') # type: XYZPolyType
RcvAPC = _SerializableArrayDescriptor(
'RcvAPC', XYZPolyAttributeType, _collections_tags, _required, strict=DEFAULT_STRICT,
docstring='Receive Aperture Phase Center polynomials array. '
'Each polynomial has output in ECF, and represents a function of elapsed seconds since start of '
'collection.') # type: Union[SerializableArray, List[XYZPolyAttributeType]]