<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:alt="http://www.opengis.net/alt/2.0" xmlns:ows="http://www.opengis.net/ows/2.0" xmlns:eop="http://www.opengis.net/eop/2.0" targetNamespace="http://www.opengis.net/alt/2.0" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0.0">
    <annotation>
        <documentation>Altimetric products application schema.
        
        Earth Observation Metadata profile of Observations and Measurements is an OGC Standard.
        Copyright (c) 2013 Open Geospatial Consortium. 
        To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .
        </documentation>
    </annotation>
    <import namespace="http://www.opengis.net/gml/3.2" schemaLocation="http://schemas.opengis.net/gml/3.2.1/gml.xsd"/>
    <import namespace="http://www.opengis.net/eop/2.0" schemaLocation="eop.xsd"/>
    <import namespace="http://www.opengis.net/ows/2.0" schemaLocation="http://schemas.opengis.net/ows/2.0/owsAll.xsd"/>
    <element name="EarthObservationEquipment" substitutionGroup="eop:EarthObservationEquipment" type="alt:EarthObservationEquipmentType">
        <annotation>
            <documentation>Extends EOP EarthObservationEquipment for Altimetry products</documentation>
        </annotation>
    </element>
    <complexType name="EarthObservationEquipmentType">
        <complexContent>
            <extension base="eop:EarthObservationEquipmentType">
                <sequence>
                    <element maxOccurs="unbounded" minOccurs="0" name="instrument" type="eop:InstrumentPropertyType">
                        <annotation>
                            <documentation>The instrument is the main instrument used to obtain the data. In the case of combined products there may be more than one main instrument. The cardinality is therefore zero to many.</documentation>
                        </annotation>
                    </element>
                    <element maxOccurs="unbounded" minOccurs="0" name="auxiliaryInstrument" type="alt:AuxiliaryInstrumentPropertyType">
                        <annotation>
                            <documentation>As well as the altimeter, one or more auxiliary instruments may be used for an acquisition.

Auxiliary Instruments are a class of instrument that are not the primary instrument. e.g. the DORIS-DIODE doppler system is an auxiliary instrument that works alongside an altimeter.</documentation>
                        </annotation>
                    </element>
                    <element maxOccurs="unbounded" minOccurs="0" name="platform" type="eop:PlatformPropertyType">
                        <annotation>
                            <documentation> In the case of combined products there may be more than one platform. The cardinality of the platform is is therefore zero to many.</documentation>
                        </annotation>
                    </element>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <complexType name="EarthObservationEquipmentPropertyType">
        <sequence minOccurs="0">
            <element ref="alt:EarthObservationEquipment"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
    </complexType>
    <element name="Footprint" substitutionGroup="eop:Footprint" type="alt:FootprintType">
        <annotation>
            <documentation>Extends the EOP Footprint for along track data used in Altimetry products.</documentation>
        </annotation>
    </element>
    <complexType name="FootprintType">
        <complexContent>
            <extension base="eop:FootprintType">
                <sequence>
                    <element maxOccurs="1" minOccurs="0" name="nominalTrack" type="gml:MultiCurvePropertyType">
                        <annotation>
                            <documentation>A geometry of type GM_Multicurve is used to define the nominal track on the earths surface. This track is essentially a line that is representative of the product but does not include points for every value. 
The use of GM_MultiCurve allows for multiple lines and breaks in lines.
In future wide-swath altimetry cases (e.g. SWOT) where the track will be a swath, the multiExtentOf property in the base schema may be used (as it is for other EO products).
</documentation>
                        </annotation>
                    </element>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <complexType name="FootprintPropertyType">
        <sequence minOccurs="0">
            <element ref="alt:Footprint"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
    </complexType>
    <element name="EarthObservation" substitutionGroup="eop:EarthObservation" type="alt:EarthObservationType">
        <annotation>
            <documentation>Extends eop:EarthObservation for Altimetry products </documentation>
        </annotation>
    </element>
    <complexType name="EarthObservationType">
        <complexContent>
            <extension base="eop:EarthObservationType"/>
        </complexContent>
    </complexType>
    <complexType name="EarthObservationPropertyType">
        <sequence minOccurs="0">
            <element ref="alt:EarthObservation"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
    </complexType>
    <element name="EarthObservationMetaData" substitutionGroup="eop:EarthObservationMetaData" type="alt:EarthObservationMetaDataType">
        <annotation>
            <documentation>Extends EOP EarthObservationMetadata for Altimetry products</documentation>
        </annotation>
    </element>
    <complexType name="EarthObservationMetaDataType">
        <complexContent>
            <extension base="eop:EarthObservationMetaDataType">
                <sequence>
                    <element maxOccurs="unbounded" minOccurs="0" name="processing" type="eop:ProcessingInformationPropertyType">
                        <annotation>
                            <documentation>the value of the processing property should be the extended alt:ProcessingInformation</documentation>
                        </annotation>
                    </element>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <complexType name="EarthObservationMetaDataPropertyType">
        <sequence>
            <element ref="alt:EarthObservationMetaData"/>
        </sequence>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
    </complexType>
    <element name="Acquisition" substitutionGroup="eop:Acquisition" type="alt:AcquisitionType">
        <annotation>
            <documentation>Extends EOP Acquisition for Altimetry products</documentation>
        </annotation>
    </element>
    <complexType name="AcquisitionType">
        <complexContent>
            <extension base="eop:AcquisitionType">
                <sequence>
                    <element maxOccurs="1" minOccurs="0" name="cycleNumber" type="integer">
                        <annotation>
                            <documentation>Number of cycle.</documentation>
                        </annotation>
                    </element>
                    <element maxOccurs="1" minOccurs="0" name="isSegment" type="boolean">
                        <annotation>
                            <documentation>Acquisition may not be a pass but may be a segment characterised by a start and end time. 

In this case the isSegment flag should be set to "True"

The default value (or the assumed value if not present) is "False"</documentation>
                        </annotation>
                    </element>
                    <element maxOccurs="1" minOccurs="0" name="relativePassNumber" type="integer">
                        <annotation>
                            <documentation>Pass number since start of cycle.</documentation>
                        </annotation>
                    </element>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <complexType name="AcquisitionPropertyType">
        <sequence>
            <element ref="alt:Acquisition"/>
        </sequence>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
    </complexType>
    <element name="AuxiliaryInstrument" substitutionGroup="eop:Instrument" type="alt:AuxiliaryInstrumentType">
        <annotation>
            <documentation>Auxiliary Instruments are a class of instrument that are not the primary instrument. e.g. the DORIS-DIODE doppler system is an auxiliary instrument that works alongside an altimeter.</documentation>
        </annotation>
    </element>
    <complexType name="AuxiliaryInstrumentType">
        <complexContent>
            <extension base="eop:InstrumentType">
                <sequence>
                    <element name="instrumentType" type="alt:AuxiliaryInstrumentTypeValueType">
                        <annotation>
                            <documentation>The type of the auxiliary instrument e.g. Doppler, Laser, GPS. Must be taken from the codeList AuxiliaryInstrumentType</documentation>
                        </annotation>
                    </element>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <complexType name="AuxiliaryInstrumentPropertyType">
        <sequence>
            <element ref="alt:AuxiliaryInstrument"/>
        </sequence>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
    </complexType>
    <element name="ProcessingInformation" substitutionGroup="eop:ProcessingInformation" type="alt:ProcessingInformationType">
        <annotation>
            <documentation>Extends EOP ProcessingInformation for Altimetry products.</documentation>
        </annotation>
    </element>
    <complexType name="ProcessingInformationType">
        <complexContent>
            <extension base="eop:ProcessingInformationType">
                <sequence>
                    <element maxOccurs="1" minOccurs="0" name="groundTrackUncertainty" type="gml:MeasureType">
                        <annotation>
                            <documentation>Measure of the uncertainty of the ground track. Sometimes known as deadband e.g. 1Km deadband.
</documentation>
                        </annotation>
                    </element>
                    <element maxOccurs="unbounded" minOccurs="0" name="productContentsType" type="alt:ProductContentsTypeValueType">
                        <annotation>
                            <documentation>Classification of product according to ground type covered. Value of this property must be taken from the enumeration ProductContentsTypeValue. Note cardinality allows for multiple instances of this property.</documentation>
                        </annotation>
                    </element>
                    <element maxOccurs="unbounded" minOccurs="0" name="samplingRate" type="gml:MeasureType">
                        <annotation>
                            <documentation>Rate at which samples are provided in product. Some products may contain more than one sampling rate, e.g. 1kHz and 20kHz. Cardinality is therefore zero to many.
</documentation>
                        </annotation>
                    </element>
                </sequence>
            </extension>
        </complexContent>
    </complexType>
    <complexType name="ProcessingInformationPropertyType">
        <sequence>
            <element ref="alt:ProcessingInformation"/>
        </sequence>
        <attributeGroup ref="gml:OwnershipAttributeGroup"/>
    </complexType>
    <simpleType name="ProductContentsTypeValueType">
        <union memberTypes="alt:ProductContentsTypeValueEnumerationType alt:ProductContentsTypeValueOtherType"/>
    </simpleType>
    <simpleType name="ProductContentsTypeValueEnumerationType">
        <restriction base="string">
            <enumeration value="REGIONAL">
                <annotation>
                    <documentation>Indicates a regional data product</documentation>
                </annotation>
            </enumeration>
            <enumeration value="OTHER">
                <annotation>
                    <documentation>Indicates another type of data product</documentation>
                </annotation>
            </enumeration>
            <enumeration value="OPEN_OCEAN">
                <annotation>
                    <documentation>Indicates an open ocean data product</documentation>
                </annotation>
            </enumeration>
            <enumeration value="ICE">
                <annotation>
                    <documentation>Indicates an ice data product</documentation>
                </annotation>
            </enumeration>
            <enumeration value="HYDROLOGY">
                <annotation>
                    <documentation>Indicates a hydrological data product</documentation>
                </annotation>
            </enumeration>
            <enumeration value="COASTAL">
                <annotation>
                    <documentation>Indicates a coastal data product</documentation>
                </annotation>
            </enumeration>
            <enumeration value="CONTINENTAL">
                <annotation>
                    <documentation>Indicates a continenta datal product</documentation>
                </annotation>
            </enumeration>
        </restriction>
    </simpleType>
    <simpleType name="ProductContentsTypeValueOtherType">
        <restriction base="string">
            <pattern value="other: \w{2,}"/>
        </restriction>
    </simpleType>
    <simpleType name="AuxiliaryInstrumentTypeValueType">
        <union memberTypes="alt:AuxiliaryInstrumentTypeValueEnumerationType alt:AuxiliaryInstrumentTypeValueOtherType"/>
    </simpleType>
    <simpleType name="AuxiliaryInstrumentTypeValueEnumerationType">
        <restriction base="string">
            <enumeration value="OTHER"/>
            <enumeration value="MICROWAVE_RADIOMETER"/>
            <enumeration value="LASER"/>
            <enumeration value="DOPPLER"/>
            <enumeration value="GPS"/>
        </restriction>
    </simpleType>
    <simpleType name="AuxiliaryInstrumentTypeValueOtherType">
        <restriction base="string">
            <pattern value="other: \w{2,}"/>
        </restriction>
    </simpleType>
</schema>
