<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" targetNamespace="http://www.opengis.net/gml" elementFormDefault="qualified" version="3.0.0" finalDefault="" blockDefault="" attributeFormDefault="unqualified">
    <xsd:annotation>
        <xsd:appinfo source="urn:opengis:specification:gml:schema-xsd:direction:v3.0.0">direction.xsd</xsd:appinfo>
        <xsd:documentation>This schema defines "direction" element and type.</xsd:documentation>
    </xsd:annotation>
    <xsd:include schemaLocation="geometryBasic0d1d.xsd"/>
    <xsd:element name="direction" type="gml:DirectionPropertyType" nillable="false" abstract="false"/>
    <xsd:complexType name="DirectionPropertyType" mixed="false" abstract="false">
        <xsd:annotation>
            <xsd:documentation/>
        </xsd:annotation>
        <xsd:choice minOccurs="1" maxOccurs="1">
            <xsd:element ref="gml:DirectionVector" minOccurs="1" maxOccurs="1" nillable="false"/>
            <xsd:element ref="gml:CompassPoint" minOccurs="1" maxOccurs="1" nillable="false"/>
            <xsd:element name="DirectionKeyword" type="gml:CodeType" minOccurs="1" maxOccurs="1" nillable="false"/>
            <xsd:element name="DirectionString" type="gml:StringOrRefType" minOccurs="1" maxOccurs="1" nillable="false"/>
        </xsd:choice>
        <xsd:attributeGroup ref="gml:AssociationAttributeGroup"/>
    </xsd:complexType>
    <xsd:element name="DirectionVector" type="gml:DirectionVectorType" nillable="false" abstract="false"/>
    <xsd:complexType name="DirectionVectorType" mixed="false" abstract="false">
        <xsd:annotation>
            <xsd:documentation>Direction expressed as a vector, either using components, or using angles.</xsd:documentation>
        </xsd:annotation>
        <xsd:choice minOccurs="1" maxOccurs="1">
            <xsd:element ref="gml:vector" minOccurs="1" maxOccurs="1" nillable="false"/>
            <xsd:sequence minOccurs="1" maxOccurs="1">
                <xsd:element name="horizontalAngle" type="gml:AngleType" minOccurs="1" maxOccurs="1" nillable="false"/>
                <xsd:element name="verticalAngle" type="gml:AngleType" minOccurs="1" maxOccurs="1" nillable="false"/>
            </xsd:sequence>
        </xsd:choice>
    </xsd:complexType>
    <xsd:element name="CompassPoint" type="gml:CompassPointEnumeration" nillable="false" abstract="false"/>
    <xsd:simpleType name="CompassPointEnumeration">
        <xsd:restriction base="string">
            <xsd:enumeration value="N"/>
            <xsd:enumeration value="NNE"/>
            <xsd:enumeration value="NE"/>
            <xsd:enumeration value="ENE"/>
            <xsd:enumeration value="E"/>
            <xsd:enumeration value="ESE"/>
            <xsd:enumeration value="SE"/>
            <xsd:enumeration value="SSE"/>
            <xsd:enumeration value="S"/>
            <xsd:enumeration value="SSW"/>
            <xsd:enumeration value="SW"/>
            <xsd:enumeration value="WSW"/>
            <xsd:enumeration value="W"/>
            <xsd:enumeration value="WNW"/>
            <xsd:enumeration value="NW"/>
            <xsd:enumeration value="NNW"/>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:schema>