#  Copyright 2023-2024 Amazon.com, Inc. or its affiliates.

"""This file was generated by xsdata, v23.8, on 2023-10-05 09:59:45

Generator: DataclassGenerator
See: https://xsdata.readthedocs.io/
"""
from dataclasses import dataclass, field
from enum import Enum
from typing import List, Optional

from xsdata.models.datatype import XmlDateTime

__NAMESPACE__ = "urn:SICommon:0.1"


@dataclass
class AngleMagnitudeType:
    angle: Optional[float] = field(
        default=None,
        metadata={
            "name": "Angle",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
            "min_inclusive": -180.0,
            "max_inclusive": 180.0,
        },
    )
    magnitude: Optional[float] = field(
        default=None,
        metadata={
            "name": "Magnitude",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )


@dataclass
class ArrayDoubleType:
    value: Optional[float] = field(
        default=None,
        metadata={
            "required": True,
        },
    )
    index: Optional[int] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )


class CollectIdentifierType(Enum):
    MONOSTATIC = "MONOSTATIC"
    BISTATIC = "BISTATIC"


@dataclass
class ComplexType:
    real: Optional[float] = field(
        default=None,
        metadata={
            "name": "Real",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    imag: Optional[float] = field(
        default=None,
        metadata={
            "name": "Imag",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )


class CornerStringType(Enum):
    VALUE_1_FRFC = "1:FRFC"
    VALUE_2_FRLC = "2:FRLC"
    VALUE_3_LRLC = "3:LRLC"
    VALUE_4_LRFC = "4:LRFC"


class ErrorFrameType(Enum):
    ECF = "ECF"
    RIC_ECF = "RIC_ECF"
    RIC_ECI = "RIC_ECI"


class GammaZeroSFIncidenceMapType(Enum):
    APPILED = "APPILED"
    NOT_APPLIED = "NOT_APPLIED"


@dataclass
class ImageCreationType:
    application: Optional[str] = field(
        default=None,
        metadata={
            "name": "Application",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )
    date_time: Optional[XmlDateTime] = field(
        default=None,
        metadata={
            "name": "DateTime",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )
    site: Optional[str] = field(
        default=None,
        metadata={
            "name": "Site",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )
    profile: Optional[str] = field(
        default=None,
        metadata={
            "name": "Profile",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )


@dataclass
class LLHType:
    lat: Optional[float] = field(
        default=None,
        metadata={
            "name": "Lat",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    lon: Optional[float] = field(
        default=None,
        metadata={
            "name": "Lon",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    hae: Optional[float] = field(
        default=None,
        metadata={
            "name": "HAE",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )


@dataclass
class LatLonCornerType:
    lat: Optional[float] = field(
        default=None,
        metadata={
            "name": "Lat",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    lon: Optional[float] = field(
        default=None,
        metadata={
            "name": "Lon",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    index: Optional[int] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
            "min_inclusive": 1,
            "max_inclusive": 4,
        },
    )


@dataclass
class LatLonHAECornerType:
    lat: Optional[float] = field(
        default=None,
        metadata={
            "name": "Lat",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    lon: Optional[float] = field(
        default=None,
        metadata={
            "name": "Lon",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    hae: Optional[float] = field(
        default=None,
        metadata={
            "name": "HAE",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    index: Optional[int] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
            "min_inclusive": 1,
            "max_inclusive": 4,
        },
    )


@dataclass
class LatLonType:
    lat: Optional[float] = field(
        default=None,
        metadata={
            "name": "Lat",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    lon: Optional[float] = field(
        default=None,
        metadata={
            "name": "Lon",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )


@dataclass
class LatLonVertexType:
    lat: Optional[float] = field(
        default=None,
        metadata={
            "name": "Lat",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    lon: Optional[float] = field(
        default=None,
        metadata={
            "name": "Lon",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    index: Optional[int] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )


@dataclass
class LineType:
    endpoint: List["LineType.Endpoint"] = field(
        default_factory=list,
        metadata={
            "name": "Endpoint",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "min_occurs": 2,
        },
    )
    size: Optional[int] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )

    @dataclass
    class Endpoint:
        lat: Optional[float] = field(
            default=None,
            metadata={
                "name": "Lat",
                "type": "Element",
                "namespace": "urn:SICommon:0.1",
                "required": True,
            },
        )
        lon: Optional[float] = field(
            default=None,
            metadata={
                "name": "Lon",
                "type": "Element",
                "namespace": "urn:SICommon:0.1",
                "required": True,
            },
        )
        index: Optional[int] = field(
            default=None,
            metadata={
                "type": "Attribute",
                "required": True,
            },
        )


class ModeIdentifierType(Enum):
    SPOTLIGHT = "SPOTLIGHT"
    STRIPMAP = "STRIPMAP"
    DYNAMIC_STRIPMAP = "DYNAMIC STRIPMAP"
    SCANSAR = "SCANSAR"


@dataclass
class ParameterType:
    value: str = field(
        default="",
        metadata={
            "required": True,
        },
    )
    name: Optional[str] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )


class PolarizationType(Enum):
    V = "V"
    H = "H"
    RHC = "RHC"
    LHC = "LHC"
    OTHER = "OTHER"


@dataclass
class PolyCoef1DType:
    value: Optional[float] = field(
        default=None,
        metadata={
            "required": True,
        },
    )
    exponent1: Optional[int] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )


@dataclass
class PolyCoef2DType:
    value: Optional[float] = field(
        default=None,
        metadata={
            "required": True,
        },
    )
    exponent1: Optional[int] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )
    exponent2: Optional[int] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )


@dataclass
class PolygonType:
    vertex: List["PolygonType.Vertex"] = field(
        default_factory=list,
        metadata={
            "name": "Vertex",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "min_occurs": 3,
        },
    )
    size: Optional[int] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )

    @dataclass
    class Vertex:
        lat: Optional[float] = field(
            default=None,
            metadata={
                "name": "Lat",
                "type": "Element",
                "namespace": "urn:SICommon:0.1",
                "required": True,
            },
        )
        lon: Optional[float] = field(
            default=None,
            metadata={
                "name": "Lon",
                "type": "Element",
                "namespace": "urn:SICommon:0.1",
                "required": True,
            },
        )
        index: Optional[int] = field(
            default=None,
            metadata={
                "type": "Attribute",
                "required": True,
            },
        )


@dataclass
class RangeAzimuthType:
    """
    Represents range and azimuth.

    :ivar range: Range dimension.
    :ivar azimuth: Azimuth dimension.
    """

    range: Optional[float] = field(
        default=None,
        metadata={
            "name": "Range",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    azimuth: Optional[float] = field(
        default=None,
        metadata={
            "name": "Azimuth",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )


@dataclass
class RowColDoubleType:
    row: Optional[float] = field(
        default=None,
        metadata={
            "name": "Row",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    col: Optional[float] = field(
        default=None,
        metadata={
            "name": "Col",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )


@dataclass
class RowColIntType:
    row: Optional[int] = field(
        default=None,
        metadata={
            "name": "Row",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    col: Optional[int] = field(
        default=None,
        metadata={
            "name": "Col",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )


@dataclass
class RowColVertexType:
    row: Optional[int] = field(
        default=None,
        metadata={
            "name": "Row",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    col: Optional[int] = field(
        default=None,
        metadata={
            "name": "Col",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    index: Optional[int] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )


class SigmaZeroSFIncidenceMapType(Enum):
    APPLIED = "APPLIED"
    NOT_APPLIED = "NOT_APPLIED"


@dataclass
class XYZType:
    x: Optional[float] = field(
        default=None,
        metadata={
            "name": "X",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    y: Optional[float] = field(
        default=None,
        metadata={
            "name": "Y",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    z: Optional[float] = field(
        default=None,
        metadata={
            "name": "Z",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )


@dataclass
class ErrorStatisticsType:
    composite_scp: Optional["ErrorStatisticsType.CompositeSCP"] = field(
        default=None,
        metadata={
            "name": "CompositeSCP",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )
    components: Optional["ErrorStatisticsType.Components"] = field(
        default=None,
        metadata={
            "name": "Components",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )
    additional_parms: Optional["ErrorStatisticsType.AdditionalParms"] = field(
        default=None,
        metadata={
            "name": "AdditionalParms",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )

    @dataclass
    class CompositeSCP:
        rg_az_err: Optional["ErrorStatisticsType.CompositeSCP.RgAzErr"] = field(
            default=None,
            metadata={
                "name": "RgAzErr",
                "type": "Element",
                "namespace": "urn:SICommon:0.1",
            },
        )
        row_col_err: Optional["ErrorStatisticsType.CompositeSCP.RowColErr"] = field(
            default=None,
            metadata={
                "name": "RowColErr",
                "type": "Element",
                "namespace": "urn:SICommon:0.1",
            },
        )

        @dataclass
        class RgAzErr:
            rg: Optional[float] = field(
                default=None,
                metadata={
                    "name": "Rg",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                    "required": True,
                },
            )
            az: Optional[float] = field(
                default=None,
                metadata={
                    "name": "Az",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                    "required": True,
                },
            )
            rg_az: Optional[float] = field(
                default=None,
                metadata={
                    "name": "RgAz",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                    "required": True,
                },
            )

        @dataclass
        class RowColErr:
            row: Optional[float] = field(
                default=None,
                metadata={
                    "name": "Row",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                    "required": True,
                },
            )
            col: Optional[float] = field(
                default=None,
                metadata={
                    "name": "Col",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                    "required": True,
                },
            )
            row_col: Optional[float] = field(
                default=None,
                metadata={
                    "name": "RowCol",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                    "required": True,
                },
            )

    @dataclass
    class Components:
        pos_vel_err: Optional["ErrorStatisticsType.Components.PosVelErr"] = field(
            default=None,
            metadata={
                "name": "PosVelErr",
                "type": "Element",
                "namespace": "urn:SICommon:0.1",
            },
        )
        radar_sensor: Optional["ErrorStatisticsType.Components.RadarSensor"] = field(
            default=None,
            metadata={
                "name": "RadarSensor",
                "type": "Element",
                "namespace": "urn:SICommon:0.1",
            },
        )
        tropo_error: Optional["ErrorStatisticsType.Components.TropoError"] = field(
            default=None,
            metadata={
                "name": "TropoError",
                "type": "Element",
                "namespace": "urn:SICommon:0.1",
            },
        )
        iono_error: Optional["ErrorStatisticsType.Components.IonoError"] = field(
            default=None,
            metadata={
                "name": "IonoError",
                "type": "Element",
                "namespace": "urn:SICommon:0.1",
            },
        )

        @dataclass
        class PosVelErr:
            frame: Optional[ErrorFrameType] = field(
                default=None,
                metadata={
                    "name": "Frame",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                    "required": True,
                },
            )
            p1: Optional[float] = field(
                default=None,
                metadata={
                    "name": "P1",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                    "required": True,
                },
            )
            p2: Optional[float] = field(
                default=None,
                metadata={
                    "name": "P2",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                    "required": True,
                },
            )
            p3: Optional[float] = field(
                default=None,
                metadata={
                    "name": "P3",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                    "required": True,
                },
            )
            v1: Optional[float] = field(
                default=None,
                metadata={
                    "name": "V1",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                    "required": True,
                },
            )
            v2: Optional[float] = field(
                default=None,
                metadata={
                    "name": "V2",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                    "required": True,
                },
            )
            v3: Optional[float] = field(
                default=None,
                metadata={
                    "name": "V3",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                    "required": True,
                },
            )
            corr_coefs: Optional["ErrorStatisticsType.Components.PosVelErr.CorrCoefs"] = field(
                default=None,
                metadata={
                    "name": "CorrCoefs",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                },
            )
            position_decorr: Optional["ErrorStatisticsType.Components.PosVelErr.PositionDecorr"] = field(
                default=None,
                metadata={
                    "name": "PositionDecorr",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                },
            )

            @dataclass
            class CorrCoefs:
                p1_p2: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "P1P2",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                p1_p3: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "P1P3",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                p1_v1: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "P1V1",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                p1_v2: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "P1V2",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                p1_v3: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "P1V3",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                p2_p3: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "P2P3",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                p2_v1: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "P2V1",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                p2_v2: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "P2V2",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                p2_v3: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "P2V3",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                p3_v1: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "P3V1",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                p3_v2: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "P3V2",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                p3_v3: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "P3V3",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                v1_v2: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "V1V2",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                v1_v3: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "V1V3",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                v2_v3: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "V2V3",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )

            @dataclass
            class PositionDecorr:
                corr_coef_zero: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "CorrCoefZero",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                decorr_rate: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "DecorrRate",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )

        @dataclass
        class RadarSensor:
            range_bias: Optional[float] = field(
                default=None,
                metadata={
                    "name": "RangeBias",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                    "required": True,
                },
            )
            clock_freq_sf: Optional[float] = field(
                default=None,
                metadata={
                    "name": "ClockFreqSF",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                },
            )
            transmit_freq_sf: Optional[float] = field(
                default=None,
                metadata={
                    "name": "TransmitFreqSF",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                },
            )
            range_bias_decorr: Optional["ErrorStatisticsType.Components.RadarSensor.RangeBiasDecorr"] = field(
                default=None,
                metadata={
                    "name": "RangeBiasDecorr",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                },
            )

            @dataclass
            class RangeBiasDecorr:
                corr_coef_zero: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "CorrCoefZero",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                decorr_rate: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "DecorrRate",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )

        @dataclass
        class TropoError:
            tropo_range_vertical: Optional[float] = field(
                default=None,
                metadata={
                    "name": "TropoRangeVertical",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                },
            )
            tropo_range_slant: Optional[float] = field(
                default=None,
                metadata={
                    "name": "TropoRangeSlant",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                },
            )
            tropo_range_decorr: Optional["ErrorStatisticsType.Components.TropoError.TropoRangeDecorr"] = field(
                default=None,
                metadata={
                    "name": "TropoRangeDecorr",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                },
            )

            @dataclass
            class TropoRangeDecorr:
                corr_coef_zero: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "CorrCoefZero",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                decorr_rate: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "DecorrRate",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )

        @dataclass
        class IonoError:
            iono_range_vertical: Optional[float] = field(
                default=None,
                metadata={
                    "name": "IonoRangeVertical",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                },
            )
            iono_range_rate_vertical: Optional[float] = field(
                default=None,
                metadata={
                    "name": "IonoRangeRateVertical",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                },
            )
            iono_rg_rg_rate_cc: Optional[float] = field(
                default=None,
                metadata={
                    "name": "IonoRgRgRateCC",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                    "required": True,
                },
            )
            iono_range_vert_decorr: Optional["ErrorStatisticsType.Components.IonoError.IonoRangeVertDecorr"] = field(
                default=None,
                metadata={
                    "name": "IonoRangeVertDecorr",
                    "type": "Element",
                    "namespace": "urn:SICommon:0.1",
                },
            )

            @dataclass
            class IonoRangeVertDecorr:
                corr_coef_zero: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "CorrCoefZero",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )
                decorr_rate: Optional[float] = field(
                    default=None,
                    metadata={
                        "name": "DecorrRate",
                        "type": "Element",
                        "namespace": "urn:SICommon:0.1",
                        "required": True,
                    },
                )

    @dataclass
    class AdditionalParms:
        parameter: List[ParameterType] = field(
            default_factory=list,
            metadata={
                "name": "Parameter",
                "type": "Element",
                "namespace": "urn:SICommon:0.1",
                "min_occurs": 1,
            },
        )


@dataclass
class LLHCornerStringType:
    lat: Optional[float] = field(
        default=None,
        metadata={
            "name": "Lat",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    lon: Optional[float] = field(
        default=None,
        metadata={
            "name": "Lon",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    hae: Optional[float] = field(
        default=None,
        metadata={
            "name": "HAE",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    index: Optional[CornerStringType] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )


@dataclass
class LatLonCornerStringType:
    lat: Optional[float] = field(
        default=None,
        metadata={
            "name": "Lat",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    lon: Optional[float] = field(
        default=None,
        metadata={
            "name": "Lon",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    index: Optional[CornerStringType] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )


@dataclass
class Poly1DType:
    coef: List[PolyCoef1DType] = field(
        default_factory=list,
        metadata={
            "name": "Coef",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "min_occurs": 1,
        },
    )
    order1: Optional[int] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )


@dataclass
class Poly2DType:
    coef: List[PolyCoef2DType] = field(
        default_factory=list,
        metadata={
            "name": "Coef",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "min_occurs": 1,
        },
    )
    order1: Optional[int] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )
    order2: Optional[int] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )


@dataclass
class RadarModeType:
    mode_type: Optional[ModeIdentifierType] = field(
        default=None,
        metadata={
            "name": "ModeType",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    mode_id: Optional[str] = field(
        default=None,
        metadata={
            "name": "ModeID",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )


@dataclass
class ReferencePointType:
    """
    The reference point.

    :ivar ecef: The XYZ ECEF (units = m) reference point.
    :ivar point: The row and column (units = pixels) which maps to the ECEF point.
    :ivar name: Used for implementation specific signifier for the reference point.
    """

    ecef: Optional[XYZType] = field(
        default=None,
        metadata={
            "name": "ECEF",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    point: Optional[RowColDoubleType] = field(
        default=None,
        metadata={
            "name": "Point",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    name: Optional[str] = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass
class ValidDataType:
    vertex: List[RowColVertexType] = field(
        default_factory=list,
        metadata={
            "name": "Vertex",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "min_occurs": 3,
        },
    )
    size: Optional[int] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )


@dataclass
class XYZAttributeType(XYZType):
    name: Optional[str] = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass
class CollectionInfoType:
    collector_name: Optional[str] = field(
        default=None,
        metadata={
            "name": "CollectorName",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    illuminator_name: Optional[str] = field(
        default=None,
        metadata={
            "name": "IlluminatorName",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )
    core_name: Optional[str] = field(
        default=None,
        metadata={
            "name": "CoreName",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    collect_type: Optional[CollectIdentifierType] = field(
        default=None,
        metadata={
            "name": "CollectType",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )
    radar_mode: Optional[RadarModeType] = field(
        default=None,
        metadata={
            "name": "RadarMode",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    classification: Optional[str] = field(
        default=None,
        metadata={
            "name": "Classification",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    country_code: List[str] = field(
        default_factory=list,
        metadata={
            "name": "CountryCode",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )
    parameter: List[ParameterType] = field(
        default_factory=list,
        metadata={
            "name": "Parameter",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )


@dataclass
class RadiometricType:
    noise_poly: Optional[Poly2DType] = field(
        default=None,
        metadata={
            "name": "NoisePoly",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )
    rcssfpoly: Optional[Poly2DType] = field(
        default=None,
        metadata={
            "name": "RCSSFPoly",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )
    beta_zero_sfpoly: Optional[Poly2DType] = field(
        default=None,
        metadata={
            "name": "BetaZeroSFPoly",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )
    sigma_zero_sfpoly: Optional[Poly2DType] = field(
        default=None,
        metadata={
            "name": "SigmaZeroSFPoly",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )
    sigma_zero_sfincidence_map: Optional[SigmaZeroSFIncidenceMapType] = field(
        default=None,
        metadata={
            "name": "SigmaZeroSFIncidenceMap",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )
    gamma_zero_sfpoly: Optional[Poly2DType] = field(
        default=None,
        metadata={
            "name": "GammaZeroSFPoly",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )
    gamma_zero_sfincidence_map: Optional[GammaZeroSFIncidenceMapType] = field(
        default=None,
        metadata={
            "name": "GammaZeroSFIncidenceMap",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
        },
    )


@dataclass
class XYZPolyType:
    x: Optional[Poly1DType] = field(
        default=None,
        metadata={
            "name": "X",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    y: Optional[Poly1DType] = field(
        default=None,
        metadata={
            "name": "Y",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )
    z: Optional[Poly1DType] = field(
        default=None,
        metadata={
            "name": "Z",
            "type": "Element",
            "namespace": "urn:SICommon:0.1",
            "required": True,
        },
    )


@dataclass
class XYZPolyAttributeType(XYZPolyType):
    index: Optional[int] = field(
        default=None,
        metadata={
            "type": "Attribute",
            "required": True,
        },
    )
