<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema targetNamespace="http://fdogrfp.osgeo.org/schemas" 
    xmlns:fdo="http://fdo.osgeo.org/schemas"
    xmlns:grfp="http://fdogrfp.osgeo.org/schemas" 
    xmlns:gml="http://www.opengis.net/gml"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns="http://fdogrfp.osgeo.org/schemas"
    elementFormDefault="qualified" 
    attributeFormDefault="unqualified">
    <xs:import  
        namespace="http://www.opengis.net/gml" 
        schemaLocation="../../../../Fdo/Docs/XmlSchema/GML/referenceSystems.xsd" />
    <xs:import  
        namespace="http://fdo.osgeo.org/schemas" 
        schemaLocation="../../../../Fdo/Docs/XmlSchema/FdoOverride.xsd" />
    <xs:element 
        name="SchemaMapping" 
        type="SchemaMappingType" 
        abstract="false" 
        substitutionGroup="fdo:PhysicalSchemaMapping">
        <xs:annotation>
            <xs:documentation>A Schema Override Set for 
			the GDAL FDO Raster File Provider.</xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:element name="complexType" type="complexTypeType" abstract="false">
        <xs:annotation>
            <xs:documentation>A GDAL Raster File Provider physical class override that 
			corresponds to a logical class definition with the same 
            name.</xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:element name="RasterDefinition" type="RasterDefinitionType" abstract="false">
        <xs:annotation>
            <xs:documentation>A physical Raster Property override definition 
			that conforms to a logical Raster Property definition in 
			the corresponding logical class.</xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:element name="RasterLocation" type="RasterLocationType" abstract="false">
        <xs:annotation>
            <xs:documentation>A File location for raster images 
			located on disk.</xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:element name="RasterFeature" type="RasterFeatureType" abstract="false">
        <xs:annotation>
            <xs:documentation>A Raster Feature definition consisting of multiple  
			bands of data, each of which references a separate raster image 
			file.</xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:element name="RasterBand" type="RasterBandType" abstract="false">
        <xs:annotation>
            <xs:documentation>A Raster Band definition which physically 
			references a raster image file on disk.</xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:element name="RasterImage" type="RasterImageType" abstract="false">
        <xs:annotation>
            <xs:documentation>A raster image file located on disk.</xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:element name="RasterGeoreference" type="RasterGeoreferenceType" abstract="false">
        <xs:annotation>
            <xs:documentation>The raster images georeference information that allows 
            it’s placement in space to be accurately located. A raster images location 
            and orientation is determined by its insertion point, resolution and 
            rotation.</xs:documentation>
        </xs:annotation>
    </xs:element>
    <xs:complexType name="SchemaMappingType" abstract="false">
        <xs:complexContent>
            <xs:extension base="fdo:PhysicalSchemaMappingType">
                <xs:sequence>
                    <xs:element ref="complexType" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="complexTypeType" abstract="false">
        <xs:complexContent>
            <xs:extension base="fdo:SchemaMappingElement">
                <xs:sequence>
                    <xs:element ref="RasterDefinition" minOccurs="0" />
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="RasterDefinitionType" abstract="false">
        <xs:complexContent>
            <xs:extension base="fdo:SchemaMappingElement">
                <xs:sequence>
                    <xs:element name="Location" type="RasterLocationType" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="RasterLocationType" abstract="false">
        <xs:complexContent>
            <xs:extension base="fdo:SchemaMappingElement">
                <xs:sequence>
                    <xs:element name="Feature" type="RasterFeatureType" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="RasterFeatureType" abstract="false">
        <xs:complexContent>
            <xs:extension base="fdo:SchemaMappingElement">
                <xs:sequence>
                    <xs:element name="Band" type="RasterBandType" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="RasterBandType" abstract="false">
        <xs:complexContent>
            <xs:extension base="fdo:SchemaMappingElement">
                <xs:attribute name="number" type="xs:unisignedInt" use="required" />
                <xs:sequence>
                    <xs:element name="Image" type="RasterImageType" />
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="RasterImageType" abstract="false">
        <xs:complexContent>
            <xs:extension base="fdo:SchemaMappingElement">
                <xs:attribute name="frame" type="xs:unisignedInt" />
                <xs:sequence>
                    <xs:element name="Georeference" type="RasterGeoreferenceType" />
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="RasterGeoreferenceType" abstract="false">
        <xs:complexContent>
            <xs:extension>
                <xs:sequence>
                    <xs:element name="InsertionPointX" type="xs:double" />
                    <xs:element name="InsertionPointY" type="xs:double" />
                    <xs:element name="ResolutionX" type="xs:double" />
                    <xs:element name="ResolutionY" type="xs:double" />
                    <xs:element name="RotationX" type="xs:double" />
                    <xs:element name="RotationY" type="xs:double" />
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
</xs:schema>