This commit is contained in:
2025-01-26 19:24:23 -08:00
parent 32cd60e92b
commit d1dde0dbc6
4155 changed files with 29170 additions and 216373 deletions

View File

@@ -30,30 +30,76 @@
****************************************************************************/
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.0">
<xs:element name="VRTDataset">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="SRS" type="SRSType"/>
<xs:element name="GeoTransform" type="xs:string"/>
<xs:element name="GCPList" type="GCPListType"/>
<xs:element name="BlockXSize" type="nonNegativeInteger32"/>
<xs:element name="BlockYSize" type="nonNegativeInteger32"/>
<xs:element name="Metadata" type="MetadataType"/> <!-- may be repeated -->
<xs:element name="VRTRasterBand" type="VRTRasterBandType"/> <!-- may be repeated -->
<xs:element name="MaskBand" type="MaskBandType"/>
<xs:element name="GDALWarpOptions" type="GDALWarpOptionsType"/> <!-- only if subClass="VRTWarpedDataset" -->
<xs:element name="PansharpeningOptions" type="PansharpeningOptionsType"/> <!-- only if subClass="VRTPansharpenedDataset" -->
<xs:element name="Group" type="GroupType"/> <!-- only for multidimensional dataset -->
<xs:element name="OverviewList" type="OverviewListType"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="subClass" type="xs:string"/>
<xs:attribute name="rasterXSize" type="nonNegativeInteger32"/>
<xs:attribute name="rasterYSize" type="nonNegativeInteger32"/>
</xs:complexType>
<xs:element name="VRTDataset" type="VRTDatasetType">
<xs:annotation>
<xs:documentation>Root element</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="VRTDatasetType">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="SRS" type="SRSType"/>
<xs:element name="GeoTransform" type="xs:string"/>
<xs:element name="GCPList" type="GCPListType"/>
<xs:element name="BlockXSize" type="nonNegativeInteger32"/>
<xs:element name="BlockYSize" type="nonNegativeInteger32"/>
<xs:element name="Metadata" type="MetadataType">
<xs:annotation>
<xs:documentation>May be repeated</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="VRTRasterBand" type="VRTRasterBandType">
<xs:annotation>
<xs:documentation>May be repeated</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MaskBand" type="MaskBandType"/>
<xs:element name="GDALWarpOptions" type="GDALWarpOptionsType">
<xs:annotation>
<xs:documentation>Allowed only if subClass="VRTWarpedDataset"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="PansharpeningOptions" type="PansharpeningOptionsType">
<xs:annotation>
<xs:documentation>Allowed only if subClass="VRTPansharpenedDataset"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Input" type="InputType">
<xs:annotation>
<xs:documentation>Allowed only if subClass="VRTProcessedDataset"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ProcessingSteps" type="ProcessingStepsType">
<xs:annotation>
<xs:documentation>Allowed only if subClass="VRTProcessedDataset"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Group" type="GroupType">
<xs:annotation>
<xs:documentation>only for multidimensional dataset</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="OverviewList" type="OverviewListType"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="subClass" type="DatasetSubclassType"/>
<xs:attribute name="rasterXSize" type="nonNegativeInteger32"/>
<xs:attribute name="rasterYSize" type="nonNegativeInteger32"/>
</xs:complexType>
<xs:simpleType name="DatasetSubclassType">
<xs:restriction base="xs:string">
<xs:enumeration value="VRTWarpedDataset"/>
<xs:enumeration value="VRTPansharpenedDataset"/>
<xs:enumeration value="VRTProcessedDataset">
<xs:annotation>
<xs:documentation>Added in GDAL 3.9</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="OverviewListType">
<xs:simpleContent>
<xs:extension base="integerList">
@@ -138,6 +184,7 @@
<xs:complexType name="PanchroBandType">
<xs:sequence>
<xs:element name="SourceFilename" type="SourceFilenameType"/>
<xs:element name="OpenOptions" type="OpenOptionsType"/>
<xs:element name="SourceBand" type="xs:string"/> <!-- should be refined into xs:nonNegativeInteger or mask,xs:nonNegativeInteger -->
</xs:sequence>
</xs:complexType>
@@ -145,6 +192,7 @@
<xs:complexType name="SpectralBandType">
<xs:sequence>
<xs:element name="SourceFilename" type="SourceFilenameType"/>
<xs:element name="OpenOptions" type="OpenOptionsType"/>
<xs:element name="SourceBand" type="xs:string"/> <!-- should be refined into xs:nonNegativeInteger or mask,xs:nonNegativeInteger -->
</xs:sequence>
<xs:attribute name="dstBand" type="xs:nonNegativeInteger"/>
@@ -156,6 +204,51 @@
</xs:sequence>
</xs:complexType>
<xs:complexType name="InputType">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="1">
<xs:element name="SourceFilename" type="SourceFilenameType"/>
<xs:element name="VRTDataset" type="VRTDatasetType"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProcessingStepsType">
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="Step" type="ProcessingStepType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProcessingStepType">
<xs:annotation>
<xs:documentation>Processing step of a VRTPansharpenedDataset</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Algorithm" type="xs:string" minOccurs="1">
<xs:annotation>
<xs:documentation>Builtin allowed names are BandAffineCombination, LUT, LocalScaleOffset, Trimming. More algorithms can be registered at run-time.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Argument" type="ArgumentType" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
<xs:complexType name="ArgumentType">
<xs:annotation>
<xs:documentation>Argument of a processing function</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Allowed names are specific of each processing function</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="MDIType">
<xs:simpleContent>
<xs:extension base="xs:string">
@@ -187,7 +280,9 @@
<xs:element name="SimpleSource" type="SimpleSourceType"/>
<xs:element name="ComplexSource" type="ComplexSourceType"/>
<xs:element name="AveragedSource" type="SimpleSourceType"/>
<xs:element name="NoDataFromMaskSource" type="NoDataFromMaskSourceType"/>
<xs:element name="KernelFilteredSource" type="KernelFilteredSourceType"/>
<xs:element name="ArraySource" type="ArraySourceType"/>
<!-- for a VRTDerivedRasterBand -->
<xs:element name="PixelFunctionType" type="xs:string"/>
@@ -230,6 +325,7 @@
<xs:enumeration value="VRTDerivedRasterBand"/>
<xs:enumeration value="VRTRawRasterBand"/>
<xs:enumeration value="VRTPansharpenedRasterBand"/>
<xs:enumeration value="VRTProcessedRasterBand"/>
</xs:restriction>
</xs:simpleType>
@@ -405,6 +501,21 @@
<xs:attribute name="resampling" type="xs:string"/>
</xs:complexType>
<xs:group name="NoDataFromMaskSourceElementsGroup">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="SimpleSourceElementsGroup"/>
<xs:element name="NODATA" type="DoubleOrNanType"/> <!-- NODATA and UseMaskBand are mutually exclusive -->
<xs:element name="MaskValueThreshold" type="xs:double"/>
<xs:element name="RemappedValue" type="xs:double"/>
</xs:choice>
</xs:sequence>
</xs:group>
<xs:complexType name="NoDataFromMaskSourceType">
<xs:group ref="NoDataFromMaskSourceElementsGroup"/>
</xs:complexType>
<xs:complexType name="KernelFilteredSourceType">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
@@ -435,6 +546,31 @@
</xs:restriction>
</xs:simpleType>
<xs:complexType name="ArraySourceType">
<xs:sequence>
<xs:element ref="AbstractArray"/>
<xs:element name="SrcRect" type="RectType" minOccurs="0"/>
<xs:element name="DstRect" type="RectType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:element name="AbstractArray" type="AbstractArrayType" abstract="true"/>
<xs:complexType name="AbstractArrayType"/>
<xs:element name="SingleSourceArray" substitutionGroup="AbstractArray" type="SingleSourceArrayType"/>
<xs:complexType name="SingleSourceArrayType">
<xs:complexContent>
<xs:extension base="AbstractArrayType">
<xs:sequence>
<xs:element name="SourceFilename" type="SourceFilenameType"/>
<xs:element name="SourceArray" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="SourceFilenameType">
<xs:simpleContent>
<xs:extension base="xs:string">
@@ -606,4 +742,139 @@
<xs:attribute name="ref" type="xs:string" use="required"/>
</xs:complexType>
<xs:element name="DerivedArray" substitutionGroup="AbstractArray" type="DerivedArrayType"/>
<xs:complexType name="DerivedArrayType">
<xs:complexContent>
<xs:extension base="AbstractArrayType">
<xs:sequence>
<xs:element ref="AbstractArray"/>
<xs:element name="Step" type="StepType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="StepType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="AbstractStep"/>
</xs:sequence>
</xs:complexType>
<xs:element name="AbstractStep" type="AbstractStepType" abstract="true"/>
<xs:complexType name="AbstractStepType"/>
<xs:element name="View" substitutionGroup="AbstractStep" type="ViewType"/>
<xs:complexType name="ViewType">
<xs:complexContent>
<xs:extension base="AbstractStepType">
<xs:attribute name="expr" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="Transpose" substitutionGroup="AbstractStep" type="TransposeType"/>
<xs:complexType name="TransposeType">
<xs:complexContent>
<xs:extension base="AbstractStepType">
<xs:attribute name="newOrder" type="CommaSeparatedListOfIntegerType" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="CommaSeparatedListOfIntegerType">
<xs:restriction base="xs:string">
<xs:pattern value="(\d)+(,(\d)+).*"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="Resample" substitutionGroup="AbstractStep" type="ResampleType"/>
<xs:complexType name="ResampleType">
<xs:complexContent>
<xs:extension base="AbstractStepType">
<xs:sequence>
<xs:element name="Dimension" type="DimensionType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="ResampleAlg" type="ResampleAlgType" minOccurs="0"/>
<xs:element name="SRS" type="SRSType" minOccurs="0"/>
<xs:element name="Option" type="OptionType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="ResampleAlgType">
<xs:restriction base="xs:string">
<xs:enumeration value="NearestNeighbour"/>
<xs:enumeration value="Bilinear"/>
<xs:enumeration value="Cubic"/>
<xs:enumeration value="CubicSpline"/>
<xs:enumeration value="Lanczos"/>
<xs:enumeration value="Average"/>
<xs:enumeration value="RMS"/>
<xs:enumeration value="Mode"/>
<xs:enumeration value="Gauss"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="OptionType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="Grid" substitutionGroup="AbstractStep" type="GridType"/>
<xs:complexType name="GridType">
<xs:complexContent>
<xs:extension base="AbstractStepType">
<xs:sequence>
<xs:element name="GridOptions" type="xs:string" minOccurs="1"/>
<xs:element name="XArray" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="AbstractArray"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="YArray" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="AbstractArray"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Option" type="OptionType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="GetMask" substitutionGroup="AbstractStep" type="GetMaskType"/>
<xs:complexType name="GetMaskType">
<xs:complexContent>
<xs:extension base="AbstractStepType">
<xs:sequence>
<xs:element name="Option" type="OptionType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="GetUnscaled" substitutionGroup="AbstractStep" type="GetUnscaledType"/>
<xs:complexType name="GetUnscaledType">
<xs:complexContent>
<xs:extension base="AbstractStepType">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>