source: RevitalizationWS/schemas/cim/trunk/src/main/resources/eu.metaforclimate/gridspec.xsd @ 7450

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/RevitalizationWS/schemas/cim/trunk/src/main/resources/eu.metaforclimate/gridspec.xsd@7450
Revision 7450, 26.4 KB checked in by mnagni, 10 years ago (diff)

Share project "cim" into " http://proj.badc.rl.ac.uk/svn/ndg/RevitalizationWS"

  • Property svn:mime-type set to text/plain
Line 
1<?xml version="1.0" encoding="utf-8"?>
2<xs:schema
3        targetNamespace="http://www.gfdl.noaa.gov/gridspec"
4        xmlns="http://www.gfdl.noaa.gov/gridspec"
5        xmlns:gml="http://www.opengis.net/gml/3.2"
6        xmlns:gridspec="http://www.gfdl.noaa.gov/gridspec"
7        xmlns:xlink="http://www.w3.org/1999/xlink"
8        xmlns:xs="http://www.w3.org/2001/XMLSchema"
9        elementFormDefault="qualified"
10        attributeFormDefault="unqualified"
11        version="0.8">
12
13<!-- ================= -->
14<!-- Import statements -->
15<!-- ================= -->
16
17        <!-- Import GML top-level schema. -->
18        <xs:import namespace="http://www.opengis.net/gml/3.2" schemaLocation="gml/3.2.1/gml.xsd"/>
19       
20<!-- ============================= -->
21<!-- Top-level (document) elements -->
22<!-- ============================= -->
23
24        <xs:element name="GridSpec" type="GridSpecType" substitutionGroup="gml:AbstractGeometry">
25                <xs:annotation><xs:documentation>
26                        The GridSpec element is a container element for encapsulating model grid definitions.
27                        This element may be used in any of the following ways:
28                        - To define a single grid used by a particular earth system model.
29                        - To define multiple grids used by a model framework.
30                        - To define one or more exchange grids.
31                        - To define a number of model grids and exchange grids in one large document.
32                </xs:documentation></xs:annotation>
33        </xs:element>
34       
35        <xs:element name="esmModelGrid" type="GridMosaicType">
36                <xs:annotation><xs:documentation>
37                        The esmModelGrid element is used to describe the geometry, and other characteristics,
38                        of a grid required by an earth system numerical model. The hierarchical nature of the
39                        esmModelGrid element means that it may be used to describe a single grid for a single
40                        model, or a number of grids used by a framework of such models.
41                </xs:documentation></xs:annotation>
42        </xs:element>
43
44        <xs:element name="esmExchangeGrid" type="GridMosaicType">
45                <xs:annotation><xs:documentation>
46                        The esmExchangeGrid element may be used to describe the exchange grid that is produced by
47                        the intersection of two earth system model grids. Note that an exchange grid is defined as
48                        a grid mosaic, just like a model grid: they differ mainly in purpose. In most cases it is
49                        envisaged that an esmExchangeGrid element will contain only grid tiles, not nested grid
50                        mosaics (although that possibility is allowed for by this XML content model.)
51                </xs:documentation></xs:annotation>
52        </xs:element>
53       
54<!-- ======================== -->
55<!-- Complex Type Definitions -->
56<!-- ========================= -->
57
58        <!-- GridSpecType -->
59        <xs:complexType name="GridSpecType">
60                <xs:annotation><xs:documentation>
61                        A GridSpec element contains zero or more esmModelGrid definitions followed by zero or
62                        more esmExchangeGrid definitions.
63                </xs:documentation></xs:annotation>
64                <xs:complexContent>
65                        <xs:extension base="gml:AbstractGeometryType">
66                                <xs:sequence>
67                                        <xs:element ref="esmModelGrid" minOccurs="0" maxOccurs="unbounded"/>
68                                        <xs:element ref="esmExchangeGrid" minOccurs="0" maxOccurs="unbounded"/>
69                                </xs:sequence> 
70                                <xs:attribute name="version" type="xs:string" use="required">
71                                        <xs:annotation><xs:documentation>
72                                                Used to identify the version of a GridSpec document instance.
73                                        </xs:documentation></xs:annotation>
74                                </xs:attribute>
75                                <xs:anyAttribute namespace="http://purl.org/dc/elements/1.1" processContents="lax"/>
76                        </xs:extension>
77                </xs:complexContent>
78        </xs:complexType>
79
80        <!-- GridMosaicType -->
81        <xs:element name="gridMosaic" type="GridMosaicType"/>
82        <xs:complexType name="GridMosaicType">
83                <xs:annotation><xs:documentation>
84                        A gridMosaic consists of either one or more gridMosaics, or     one or more gridTiles, but
85                        not both. In the latter case the mosaic may optionally contain a list of the contact
86                        regions between pairs of gridTiles. A GridMosaic object should be uniquely identified
87                        - within its hierarchy - by the 'id' attribute.
88                </xs:documentation></xs:annotation>
89                <xs:sequence>
90                        <xs:group ref="IdElemGroup"/>
91                        <xs:element name="referenceList" type="ReferenceListType" minOccurs="0"/>
92                        <xs:choice>
93                                <xs:element ref="gridMosaic" minOccurs="1" maxOccurs="unbounded"/>
94                                <xs:element ref="gridTile" minOccurs="1" maxOccurs="unbounded"/>
95                        </xs:choice>
96                </xs:sequence>
97                <xs:attributeGroup ref="IdAttrGroup"/>
98                <xs:attributeGroup ref="gml:SRSReferenceGroup"/>
99                <xs:attribute name="isLeaf" type="xs:boolean">
100                        <xs:annotation><xs:documentation>
101                                Set to true if this is a leaf mosaic; that is, it contains only grid tiles.
102                        </xs:documentation></xs:annotation>
103                </xs:attribute>
104                <xs:attribute name="gridType" type="GridTypeEnum">
105                        <xs:annotation><xs:documentation>
106                                The type of all grid tiles in the mosaic, e.g. "tripolar". If the mosaic is a root
107                                or a branch mosaic (i.e. it consists of other mosaics rather than grid tiles), then
108                                this attribute may be omitted.
109                        </xs:documentation></xs:annotation>
110                </xs:attribute>
111        </xs:complexType>
112
113        <!-- GridTileType -->
114        <xs:element name="gridTile" type="GridTileType"/>
115        <xs:complexType name="GridTileType">
116                <xs:annotation><xs:documentation>
117                        A contiguous area of grid cells distinct in some way from other such areas, e.g. the six
118                        faces of a cubed sphere. Note that many mosaics will have only one tile. The "isRegular"
119                        and "isUniform" attributes can be used to reduce the amount of data required for a grid
120                        specification, e.g. if grid cells are at regular intervals, then coordinates do not need
121                        to be supplied for every cell since they can be calculated. A GridTile object should be
122                        uniquely identified - within its parent mosaic - using the 'id' attribute. The coordinates
123                        of the grid cells should be specified using one of the following methods: 1) a simple
124                        grid geometry definition; 2) an array of grid cell elements; 3) an array of grid cell
125                        reference elements; 4) a URI to an external file containing the coordinates. In the latter
126                        case any additional information regarding the structure and content of the file must be
127                        gleaned from the file's own metadata properties (e.g. attributes in the case of a netCDF
128                        file). Where appropriate, the vertical coordinates associated with a tile may be specified
129                        using the optional zcoords element. This element can be used when the vertical surfaces or
130                        levels in the grid are constant and therefore can be specified using a 1D array, z(1:k).
131                </xs:documentation></xs:annotation>
132                <xs:sequence>
133                        <xs:group ref="IdElemGroup"/>
134                        <xs:element name="geometryType" type="GeometryTypeEnum"/>
135                        <xs:element name="discretizationType" type="DiscretizationEnum"/>
136                        <xs:element name="horizontalCRS" type="gml:CRSPropertyType" minOccurs="0"/>
137                        <xs:element name="verticalCRS" type="gml:CRSPropertyType" minOccurs="0"/>
138                        <xs:element name="gridNorthPole" type="gml:PointPropertyType" minOccurs="0"/>
139                        <xs:element name="coordinatePole" type="gml:PointPropertyType" minOccurs="0" maxOccurs="unbounded"/>
140                   <xs:choice>
141                        <xs:element name="simpleGridGeom" type="SimpleGridGeometryType"/>
142                        <xs:element name="cellArray" type="GridCellArrayType"/>
143                        <xs:element name="cellRefArray" type="GridCellRefArrayType"/>
144                        <xs:element name="coordFile" type="xs:anyURI"/>
145                   </xs:choice>
146                        <xs:element name="zcoords" type="CoordListType" minOccurs="0"/>
147                </xs:sequence>
148                <xs:attributeGroup ref="IdAttrGroup"/>
149                <xs:attribute name="isUniform" type="xs:boolean" use="required">
150                        <xs:annotation><xs:documentation>
151                                Set to true if the grid cells are of constant, though not necessarily equal, magnitude
152                                along each coordinate axis.
153                        </xs:documentation></xs:annotation>
154                </xs:attribute>
155                <xs:attribute name="isRegular" type="xs:boolean" use="required">
156                        <xs:annotation><xs:documentation>
157                                Set to true if the grid cells are defined by one-dimensional arrays (vectors) for each
158                                coordinate axis, i.e. x(1:i), y(1:j), and so on.
159                        </xs:documentation></xs:annotation>
160                </xs:attribute>
161                <xs:attribute name="isConformal" type="xs:boolean"/>
162                <xs:attribute name="isTerrainFollowing" type="xs:boolean"/>
163        </xs:complexType>
164
165        <!-- GridTileRefType -->
166    <xs:complexType name="GridTileRefType">
167                <xs:annotation><xs:documentation>
168                        A grid tile reference is a list of ID references from the top-level mosaic down to the
169                        grid tile itself. Tiles must be fully qualified like this so that they can be identified
170                        uniquely (across mosaics). A grid tile reference can be specified either as a sequence of
171                        mosaic ID elements and a tile ID element, or as a text string attribute (idPath) containing
172                        colon-separated ID values (e.g. "m1:m2:m3:t1").
173                </xs:documentation></xs:annotation>
174                <xs:sequence minOccurs="0">
175                        <xs:element name="mosaicID" type="IdType" maxOccurs="unbounded"/>
176                        <xs:element name="tileID" type="IdType"/>
177                </xs:sequence>
178        <xs:attribute name="idPath" type="xs:string"/>
179    </xs:complexType>
180       
181        <!-- GridCellType -->
182        <xs:element name="gridCell" type="GridCellType" abstract="true"/>
183        <xs:complexType name="GridCellType" abstract="true">
184                <xs:annotation><xs:documentation>
185                        Abstract base type (class) for different kinds of grid cell. Object types for specific
186                        kinds of grid cell should be derived from this type, e.g. UnstructuredCellType. Each cell
187                        is uniquely identified - within its parent tile - by the 'id' attribute.
188                </xs:documentation></xs:annotation>
189                <xs:sequence>
190                        <xs:element name="centroid" type="gml:PointPropertyType" minOccurs="0"/>
191                        <xs:element name="area" type="gml:MeasureType" minOccurs="0"/>
192                   <xs:element name="volume" type="gml:MeasureType" minOccurs="0"/>
193                </xs:sequence>
194                <xs:attributeGroup ref="IdAttrGroup"/>
195        </xs:complexType>
196
197        <!-- SimpleGridCellType -->
198        <xs:element name="simpleGridCell" type="SimpleGridCellType" substitutionGroup="gridCell"/>
199        <xs:complexType name="SimpleGridCellType">
200                <xs:annotation><xs:documentation>
201                        The SimpleGridCellType may be used to specify a basic grid cell, one whose vertices are
202                        defined either by three or more coordinate tuples or by xlink references to three or more
203                        remotely-defined points.
204                </xs:documentation></xs:annotation>
205                <xs:complexContent>
206                        <xs:extension base="GridCellType">
207                                <xs:sequence>
208                                        <xs:element ref="vertexArray"/>
209                                </xs:sequence>
210                        </xs:extension>
211                </xs:complexContent>
212        </xs:complexType>
213       
214        <!-- UnstructuredGridCellType -->
215        <xs:element name="unstructuredGridCell" type="UnstructuredGridCellType" substitutionGroup="gridCell"/>
216        <xs:complexType name="UnstructuredGridCellType">
217                <xs:annotation><xs:documentation>
218                        Unstructured cells are grid cells that need to be fully specified geometrically: complete
219                        information on vertices and edges must be supplied.
220                </xs:documentation></xs:annotation>
221                <xs:complexContent>
222                        <xs:extension base="GridCellType">
223                                <xs:sequence>
224                                        <xs:element ref="edgeArray"/>
225                                </xs:sequence>
226                        </xs:extension>
227                </xs:complexContent>
228        </xs:complexType>
229
230        <!-- ExchangeCellType -->
231        <xs:element name="exchangeGridCell" type="ExchangeGridCellType" substitutionGroup="gridCell"/>
232        <xs:complexType name="ExchangeGridCellType">
233                <xs:annotation><xs:documentation>
234                        (TODO: description required)
235                </xs:documentation></xs:annotation>
236                <xs:complexContent>
237                        <xs:extension base="GridCellType">
238                                <xs:sequence>
239                                        <xs:element name="parentCell" type="GridCellRefType" minOccurs="2" maxOccurs="2"/>
240                                </xs:sequence>
241                        </xs:extension>
242                </xs:complexContent>
243        </xs:complexType>
244
245        <!-- GridCellRefType -->
246        <xs:complexType name="GridCellRefType">
247                <xs:annotation><xs:documentation>
248                        A GridCellRefType object consists of a reference to a cell in a separately-defined grid tile,
249                        together with an optional fractional area that indicates the portion of the target cell
250                        'occupied' by the referring cell. If this area is not specified, a default value of 1.0
251                        is assumed. A cell reference can be specified either as a sequence of mosaic, tile and cell
252                        ID elements, or as a text string attribute (idPath) containing colon-separated ID values
253                        terminated with a number representing the fractional area (e.g. "m1:m2:m3:t1:c1:0.5").
254                </xs:documentation></xs:annotation>
255                <xs:sequence minOccurs="0">
256                        <xs:element name="mosaicID" type="IdType" maxOccurs="unbounded"/>
257                        <xs:element name="tileID" type="IdType"/>
258                        <xs:element name="cellID" type="IdType"/>
259                        <xs:element name="fractionalArea" type="xs:double" default="1.0"/>
260                </xs:sequence>
261                <xs:attribute name="idPath" type="xs:string"/>
262        </xs:complexType>
263       
264        <!-- CellArrayType -->
265        <xs:complexType name="GridCellArrayType">
266                <xs:annotation><xs:documentation>
267                        This object type may be used to specify an array of grid cell elements. Any element that
268                        belongs to the gridCell substitution group may be substituted here.
269                </xs:documentation></xs:annotation>
270                <xs:sequence>
271                        <xs:element ref="gridCell" maxOccurs="unbounded"/>
272                </xs:sequence>
273        </xs:complexType>
274
275   <!-- CellRefArrayType -->
276   <xs:complexType name="GridCellRefArrayType">
277      <xs:annotation><xs:documentation>
278         This object type may be used to specify an array of grid cell reference elements.
279      </xs:documentation></xs:annotation>
280      <xs:sequence>
281         <xs:element name="gridCellRef" type="GridCellRefType" maxOccurs="unbounded"/>
282      </xs:sequence>
283   </xs:complexType>
284   
285    <!-- VertexArrayType -->
286        <xs:element name="vertexArray" type="VertexArrayType"/>
287        <xs:complexType name="VertexArrayType">
288                <xs:annotation><xs:documentation>
289                        This object type may be used to specify an array of vertex elements, e.g. to define the
290                        boundary of a polygonal grid cell.
291                </xs:documentation></xs:annotation>
292                <xs:sequence>
293                        <xs:element name="vertex" type="gml:PointPropertyType" minOccurs="3" maxOccurs="unbounded"/>
294                </xs:sequence>
295        </xs:complexType>
296
297        <!-- EdgeType -->
298        <xs:complexType name="EdgeType">
299                <xs:annotation><xs:documentation>
300                        Constraint: the two vertices making up an edge must be part of the same grid cell.
301                        The two vertex objects are references to remotely-defined GML Point objects.
302                </xs:documentation></xs:annotation>
303                <xs:sequence>
304                        <xs:element name="vertex1" type="gml:PointPropertyType"/>
305                        <xs:element name="vertex2" type="gml:PointPropertyType"/>
306                        <xs:element name="length" type="gml:MeasureType" minOccurs="0"/>
307                        <xs:element name="departureAngle" type="gml:MeasureType" minOccurs="0"/>
308                        <xs:element name="arrivalAngle" type="gml:MeasureType" minOccurs="0"/>
309                </xs:sequence>
310                <xs:attribute name="arcType" type="ArcTypeEnum" use="required"/>
311        </xs:complexType>
312
313        <!-- EdgeArrayType -->
314        <xs:element name="edgeArray" type="EdgeArrayType"/>
315        <xs:complexType name="EdgeArrayType">
316                <xs:annotation><xs:documentation>
317                        This object type may be used to specify an array of edge elements, e.g. to define the
318                        boundary of a polygonal grid cell. As such it represents an alternative - and more verbose -
319                        mechanism to the VertexArrayType for specifying grid cell geometry.
320                </xs:documentation></xs:annotation>
321                <xs:sequence>
322                        <xs:element name="edge" type="EdgeType" minOccurs="3" maxOccurs="unbounded"/>
323                </xs:sequence>
324        </xs:complexType>
325
326        <!-- SimpleGridGeometryType -->
327        <xs:complexType name="SimpleGridGeometryType">
328                <xs:annotation><xs:documentation>
329                        This type may be used to specify the geometry of a simple square or rectangular grid
330                        in a compact fashion. The isMesh attribute is used to indicate if the specified geometry
331                        defines a gridMesh or, if unset or set to false, a set of grid nodes. In the latter case
332                        no information is conveyed about the shape or extent of the grid cells (sample spaces)
333                        surrounding the grid nodes.
334                </xs:documentation></xs:annotation>
335                <xs:sequence>
336                   <xs:element name="xcoords" type="CoordListType"/>
337                        <xs:element name="ycoords" type="CoordListType"/>
338                   <xs:element name="zcoords" type="CoordListType" minOccurs="0"/>
339                </xs:sequence>
340           <xs:attribute name="numDims" type="xs:positiveInteger" use="required"/>
341           <xs:attribute name="dimOrder" type="xs:string"/>
342           <xs:attribute name="isMesh" type="xs:boolean"/>
343        </xs:complexType>
344       
345        <!-- contactRegions -->
346        <xs:element name="contactRegions">
347                <xs:annotation><xs:documentation>
348                        This element may be used to specify a list of the contact regions that occur between
349                        pairs of gridTiles in a gridMosaic.
350                </xs:documentation></xs:annotation>
351                <xs:complexType>
352                        <xs:sequence maxOccurs="unbounded">
353                                <xs:choice>
354                                        <xs:element ref="boundaryContact"/>
355                                        <xs:element ref="overlapContact"/>
356                                </xs:choice>
357                        </xs:sequence>
358                </xs:complexType>
359        </xs:element>
360
361        <!-- ContactGeometryType -->
362        <xs:element name="contactGeometry" type="ContactGeometryType" abstract="true"/>
363        <xs:complexType name="ContactGeometryType" abstract="true">
364                <xs:annotation><xs:documentation>
365                        The ContactGeometry type is used to define the topology of the contact between two grid
366                        tiles (or the same tile for cyclic contact regions) in a grid mosaic. This abstract base
367                        type is not instantiable: objects should be based upon one of the concrete sub-types, e.g.
368                        BoundaryContact or OverlapContact.
369                </xs:documentation></xs:annotation>
370                <xs:sequence>
371                        <xs:element name="tileRef" type="GridTileRefType" minOccurs="2" maxOccurs="2"/>
372                </xs:sequence>
373        </xs:complexType>
374
375        <!-- OverlapContactType -->
376        <xs:element name="overlapContact" type="OverlapContactType" substitutionGroup="contactGeometry"/>
377        <xs:complexType name="OverlapContactType">
378                <xs:complexContent>
379                        <xs:extension base="ContactGeometryType">
380                                <xs:sequence>
381                                        <xs:element name="cellArray" type="GridCellArrayType"/>
382                                </xs:sequence>
383                        </xs:extension>
384                </xs:complexContent>
385        </xs:complexType>
386
387        <!-- BoundaryContactType -->
388        <xs:element name="boundaryContact" type="BoundaryContactType" substitutionGroup="contactGeometry"/>
389        <xs:complexType name="BoundaryContactType">
390                <xs:annotation><xs:documentation>
391                        The BoundaryContactType is used to describe a boundary contact between two grid tiles in
392                        a mosaic. If a common anchor point in both tiles can be specified in index space then
393                        the isAligned attribute should be set to true and the indexes of the point provided as a
394                        list of integers in the indexAnchorPoints element. For 2D grid tiles there would be four
395                        integers, e.g. "1 2 10 11" for grid points (1,2) and (10,11). Otherwise the anchor point
396                        is specified in world coordinates using the geoAnchorPoint element (this element may be
397                        provided in addition to indexAnchorPoints if so desired).
398                </xs:documentation></xs:annotation>
399                <xs:complexContent>
400                        <xs:extension base="ContactGeometryType">
401                                <xs:sequence>
402                                        <xs:element name="indexAnchorPoints" type="gml:integerList" minOccurs="0"/>
403                                        <xs:element name="geoAnchorPoint" type="gml:PointPropertyType" minOccurs="0"/>
404                                        <xs:element name="orientation" type="xs:string"/>
405                                </xs:sequence>
406                                <xs:attribute name="isAligned" type="xs:boolean"/>
407                                <xs:attribute name="refinementType" type="RefinementTypeEnum"/>
408                        </xs:extension>
409                </xs:complexContent>
410        </xs:complexType>
411
412        <!-- CoordListType -->
413        <xs:complexType name="CoordListType">
414                <xs:annotation><xs:documentation>
415                        The CoordListType may be used to specify a list of coordinates, typically for the purpose
416                        of defining coordinates along the X, Y or Z axes. The length of the coordinate list is
417                        given by the attribute of that name. This may be used by software to allocate memory in
418                        advance of storing the coordinate values. The hasConstantOffset attribute may be used to
419                        indicate that the coordinate list consists of values with constant offset (spacing). In
420                        this case only the first coordinate and offset value need to be specified; the length
421                        attribute must still define the final 'as-built' size of the coordinate list.
422                </xs:documentation></xs:annotation>
423                <xs:simpleContent>
424                        <xs:extension base="xs:string">
425                                <xs:attribute name="length" type="xs:positiveInteger" use="required"/>
426                                <xs:attribute name="hasConstantOffset" type="xs:boolean"/>
427                        </xs:extension>
428                </xs:simpleContent>
429        </xs:complexType>
430
431        <!-- ReferenceListType -->
432        <xs:complexType name="ReferenceListType">
433                <xs:sequence>
434                        <xs:element name="reference" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
435                </xs:sequence>
436        </xs:complexType>
437
438<!-- ======================= -->
439<!-- Simple Type Definitions -->
440<!-- ======================= -->
441
442        <!-- IdType -->
443        <xs:simpleType name="IdType">
444                <xs:annotation><xs:documentation>
445                        The IdType is used to identify grid mosaics, tiles and cells. We cannot used the xs:ID
446                        type because that requires uniqueness of identity within any given XML document based
447                        on this schema. And while grid tile and grid cell ID's will be unique within their parent
448                        mosaics and tiles, respectively, those same IDs are likely to be re-used across other
449                        mosaics and tiles.
450                </xs:documentation></xs:annotation>
451                <xs:restriction base="xs:NMTOKEN"/>
452        </xs:simpleType>
453
454<!-- ============== -->
455<!-- Element Groups -->
456<!-- ============== -->
457
458        <!-- IdElemGroup -->
459        <xs:group name="IdElemGroup">
460                <xs:sequence>
461                        <xs:element name="shortName" type="xs:string" minOccurs="0"/>
462                        <xs:element name="longName" type="xs:string" minOccurs="0"/>
463                        <xs:element name="description" type="xs:string" minOccurs="0"/>
464                </xs:sequence>
465        </xs:group>
466
467<!-- ================ -->
468<!-- Attribute Groups -->
469<!-- ================ -->
470
471        <!-- IdAttrGroup -->
472        <xs:attributeGroup name="IdAttrGroup">
473                <xs:attribute name="id" type="xs:NMTOKEN" use="required">
474                        <xs:annotation><xs:documentation>
475                                Unique identifier for a grid tile or grid mosaic. Used for cross-referencing from other
476                                parts of a grid specification, e.g. by boundary objects.
477                        </xs:documentation></xs:annotation>
478                </xs:attribute>
479        </xs:attributeGroup>
480
481<!-- ============ -->
482<!-- Enumerations -->
483<!-- ============ -->
484
485        <!-- ArcEnum -->
486        <xs:simpleType name="ArcTypeEnum">
487                <xs:restriction base="xs:string">
488                        <xs:enumeration value="complex"/>
489                        <xs:enumeration value="geodesic"/>
490                        <xs:enumeration value="great_circle"/>
491                        <xs:enumeration value="small_circle"/>
492                </xs:restriction>
493        </xs:simpleType>
494
495   <!-- GridNodePositionEnum -->
496   <xs:simpleType name="GridNodePositionEnum">
497      <xs:restriction base="xs:string">
498         <xs:enumeration value="undefined"/>
499         <xs:enumeration value="centre"/>
500         <xs:enumeration value="north"/>
501         <xs:enumeration value="northeast"/>
502         <xs:enumeration value="east"/>
503         <xs:enumeration value="southeast"/>
504         <xs:enumeration value="south"/>
505         <xs:enumeration value="southwest"/>
506         <xs:enumeration value="west"/>
507         <xs:enumeration value="northwest"/>
508      </xs:restriction>
509   </xs:simpleType>
510   
511   <!-- RefinementEnum -->
512        <!-- IH comment: Seems there's a missing type of refinement - when the grid line counts have a
513        common factor,  as with integer, but grid lines from the coarse grid are not always continuous on
514        the fine grid. -->
515        <xs:simpleType name="RefinementTypeEnum">
516                <xs:restriction base="xs:string">
517                        <xs:enumeration value="none">
518                                <xs:annotation><xs:documentation>
519                                        Boundaries of the two tiles match exactly.
520                                </xs:documentation></xs:annotation>
521                        </xs:enumeration>
522                        <xs:enumeration value="integer">
523                                <xs:annotation><xs:documentation>
524                                        Grid lines from the coarser grid are continuous on the finer grid.
525                                </xs:documentation></xs:annotation>
526                        </xs:enumeration>
527                        <xs:enumeration value="rational">
528                                <xs:annotation><xs:documentation>
529                                        The contact grid tiles have grid line counts that are co-prime.
530                                </xs:documentation></xs:annotation>
531                        </xs:enumeration>
532                </xs:restriction>
533        </xs:simpleType>
534
535        <!-- GridTypeEnum -->
536        <xs:simpleType name="GridTypeEnum">
537                <xs:restriction base="xs:string">
538                        <xs:enumeration value="cubed_sphere"/>
539                        <xs:enumeration value="displaced_pole"/>
540                        <xs:enumeration value="icosahedral_geodesic"/>
541                        <xs:enumeration value="reduced_gaussian"/>
542                        <xs:enumeration value="regular_lat_lon"/>
543                        <xs:enumeration value="spectral_gaussian"/>
544                        <xs:enumeration value="tripolar"/>
545                        <xs:enumeration value="yin_yang"/>
546                </xs:restriction>
547        </xs:simpleType>
548
549        <!-- DiscretizationEnum -->
550        <xs:simpleType name="DiscretizationEnum">
551                <xs:annotation><xs:documentation>
552                        Specifies the way a grid tile is discretized.
553                </xs:documentation></xs:annotation>
554                <xs:restriction base="xs:string">
555                        <xs:enumeration value="logically_rectangular"/>
556                        <xs:enumeration value="pixel-based_catchment"/>
557                        <xs:enumeration value="structured_triangular"/>
558                        <xs:enumeration value="unstructured_polygonal"/>
559                        <xs:enumeration value="unstructured_triangular"/>
560                </xs:restriction>
561        </xs:simpleType>
562
563        <!-- GeometryEnum -->
564        <!-- PB comment: There seems to be some degree of overlap in intent between this enumeration and
565                the HorizontalCSEnum enumeration below. Consider using GML CRS definitions? -->
566        <xs:simpleType name="GeometryTypeEnum">
567                <xs:annotation><xs:documentation>
568                        Specifies the geometry used to approximate the figure of the Earth.
569                </xs:documentation></xs:annotation>
570                <xs:restriction base="xs:string">
571                        <xs:enumeration value="ellipsoid"/>
572                        <xs:enumeration value="plane"/>
573                        <xs:enumeration value="sphere"/>
574                </xs:restriction>
575        </xs:simpleType>
576
577        <!-- HorizontalCSEnum -->
578        <!-- PB comment: There seems to be some degree of overlap in intent between this enumeration and
579                the GeometryEnum enumeration above. Consider using GML CRS definitions perhaps? -->
580        <xs:simpleType name="HorizontalCSEnum">
581                <xs:restriction base="xs:string">
582                        <xs:enumeration value="cartesian"/>
583                        <xs:enumeration value="ellipsoidal"/>
584                        <xs:enumeration value="polar"/>
585                        <xs:enumeration value="spherical"/>
586                </xs:restriction>
587        </xs:simpleType>
588       
589        <!-- VerticalCSEnum -->
590        <xs:simpleType name="VerticalCSEnum">
591                <xs:restriction base="xs:string">
592                        <xs:enumeration value="mass-based"/>
593                        <xs:enumeration value="space-based"/>
594                </xs:restriction>
595        </xs:simpleType>
596
597        <!-- FeatureTypeEnum -->
598        <xs:simpleType name="FeatureTypeEnum">
599                <xs:restriction base="xs:string">
600                        <xs:enumeration value="point"/>
601                        <xs:enumeration value="edge"/>
602                </xs:restriction>
603        </xs:simpleType>
604
605        <!-- ContactTypeEnum -->
606        <xs:simpleType name="ContactTypeEnum">
607                <xs:restriction base="xs:string">
608                        <xs:enumeration value="boundary"/>
609                        <xs:enumeration value="overlap"/>
610                </xs:restriction>
611        </xs:simpleType>
612
613</xs:schema>
Note: See TracBrowser for help on using the repository browser.