"Seegrid will be due for a migration to confluence on the 1st of August. Any update on or after the 1st of August will NOT be migrated"
You are here: SEEGrid>Xmml Web>XmmlCoverage (15 Oct 2010, UnknownUser)EditAttach

Coverage encoding


Related pages


A coverage is a very important and useful concept in geographic information. Adapted from the mathematical concept of a functional-map, a geographic coverage refers to a property for which a value is available for any location in a defined spatio-temporal domain. A geographic coverage is typically used for a "field", where the value varies across the region of interest.

An abstract model for geographic coverages is described in ISO 19123.

Coverage vs Feature

The coverage focusses on the variation of a property within the spatio-temporal domain of interest. This is the main alternative to the FeatureModel, which focusses on the set of properties associated with an object of interest. A key aspect of the feature model is that the value of every property is deemed to be constant within the feature, while the key aspect of the coverage model is the variation of a property.

The "coverage" model primarily concerns a data structure, in which the semantic value of the range has almost infinite variety, particularly when considering the possible combinations of components within a record. To support the required scalability, the coverage encoding generally involves an inline description of the range at the instance level, effectively soft-typing the coverage in its semantics. This contrasts with the usual approach to defining feature-types, where the semantics is defined at the schema level, so the encoding is strongly-typed in the data instance.

Coverage range

Note that the values in the range of a coverage may be scalar, vector, tensor, or in theory an arbitrary tuple. However, a useful coverage should be amenable to manipulation by tools that treat values in the range as conceptually unitary. In particular, if the value is represented by components, then the spatial variation of the components should be interrelated.

Coverage domain

The complete domain is the set of locations for which values are available. The values in the range may vary continuously or discontinuously according to position in the domain. If the values in the range take on constant values for particular elements in the domain then the coverage is referred to as a discrete coverage. The elements within the domain may be zero-dimensional points, or may be extensive such as polygons, pixels, voxels, polyhedra, or intervals.

Representation of coverages

The information in a coverage may be represented in a variety of ways, in particular
  1. as a set of location-value pairs (where the value is of a homogeneous type) - in GML and XMML this corresponds to a homogeneously-typed feature collection.
  2. as a map associating members of the range set to locations in a domain set
  3. using an algorithm or function to generate a value for arbitrary positions within the domain - referred to as a continuous coverage.

The algorithm used to describe a continuous coverage will require parameters or constraints. If the algorithm is an interpolation (or extrapolation), the constraints will usually take the form of "known" values of the property at particular positions within the domain, i.e. a discrete coverage of the same property over a domain of comparable extent. On the other hand, the algorithm might be a "model" that effectively transforms constraints of one or more properties (e.g. relief; boundary offsets and internal elastic properties) into another property (e.g. rainfall; internal and boundary stresses), in which case the constraints may still be discrete coverages, but over different properties than the target coverage.

The GML/XMML "Coverage" encoding implements the second approach, describing a coverage as a "functional map". Considerable efficiencies are gained, compared with exhaustive enumeration of location-value pairs, by encoding the values in the domain and range each as lists, or using implicit methods such as a grid when appropriate. Then all that remains is to provide a rule for associating a value from the range with each location in the domain.

Future extensions

The GML/XMML coverage follows ISO 19123 in that the domain is restricted to geographic space. This limitation is quite severe in terms of the applicability of the coverage model and encoding to many scientific datasets.

An important extension would be to support the description of time-series by allowing the domain to be a time complex. The XMML implementation provides some rudimentary support for this case, but it has not been tested much yet.

A more complete generalisation, allowing any combination of interval scales to act as the basis for the domain axes, is needed to provide more thorough support for scientific data. The grid model proposed for DAP version 4 is an example of how that might be accomplished.

Schema documents

XMML Coverage is implemented in 2 primary schema documents (on top of more generic XMML and GML schema support):

  • XmmlSVN:trunk/gml/3.1.1/base/grids.xsd - grid geometry
  • XmmlSVN:trunk/XMML/coverage.xsd

Example Instances

  • XmmlSVN:trunk/GeoSciML/draft/instances/ - see the various logs within the borehole descriptions.

General XMML Coverage


  • Top level XMML coverage model:
    Top level XMML coverage model


Coverage extends Feature. Specialised properties are used as follows:

  • domain - a description of the spatio-temporal region for which values of this coverage are available. Typically this will be expressed as
    • a geometry collection,
    • an implicit geometry (e.g. a grid),
    • an explicit or implicit collection of time instances or periods
  • range - the values of the property which is the theme of the coverage
  • coverageFunction - rules for associating values from the range with locations in the domain.

XMML Coverage varies from GML Coverage primarily in the way that the values in the range are encoded. GML Coverages require that an additional XML application schema is created to describe the structure of the range components. In XMML we use soft-typed records and bands, which allow XMML Coverage to be used directly. The rangeParameters property provides a container for a Reference System Definition, which describes the tuple structure, scale, and (optionally) procedures.

range details

The values in the range may be encoded in several different ways:

  • as a list of bands, each providing a list of scalar values corresponding to a scalar component of the range - in traditional multi-spectral parlance this is "band-sequential"
  • as a list of records each providing a complex value for one or more elements in the domain - in traditional multi-spectral parlance this is "band-interleaved"
  • as an interleaved record, where the order of items within the record must be decribed in a coverageFunction
  • as a reference to a file, where the values are stored in a compact, proprietary or "well-known" format.

The XML elements used for both records and bands are "soft-typed": the semantics of the values are given by the rangeDescription property. Following the conventional GmlProperty pattern, this can be a link or in-line. In the latter case it will be in the form of a AxisDefinition or TupleDefinition, as described in RecordSchema.

Within a ListOfBands, each band is either a categoryList, countList, measureList or referenceList element. These provide a compact representation of the values in a single component of the range for all elements of the domain, encoded in a single XML element in a space-separated list.

Within a ListOfRecords, each record is a generic tuple. These provide a compact representation of the values for all components of the range for one element of the domain, encoded in a single XML element in a space-separated list.

An InterleavedRecord, provides a compact representation of the values for all components of the range for all elements of the domain, encoded in a single XML element in a space-separated list.

The File element carries a set of properties (sub-elements) that identify and describe an out-of-band representation of the range values.

Note that when the "file" form is used, the XMML Coverage document essentially acts to provide some metadata for the coverage, in a GML compatible form. The resource identified as the value of the fileName may be a "complete" coverage, containing a description of the domain as well as the range (e.g. GeoTIFF). In this case the description of the domain contained in the XMML Coverage is strictly redundant. But by providing a description of the domain in GML form certain operation, such as discovery, might be possible using GML-aware software without resolving and parsing the external resource.

Note that the range model has been streamlined compared to previous versions. Feedback from users was that too much choice was incompatible with standardisation. Thus only two methods for explicit encoding of the range are provided: a space-separated list of scalar values, and a list of elements representing records.

coverageFunction details


The coverageFunction is required for the File and InterleavedRecord variants of the range description.

A MappingRule contains (or links to) a textual description of the mapping.

A GridFunction contains a sequenceRule and a startPoint. The value of the sequenceRule is one of an enumerated set of values described in ISO 19123: Linear, Boustrophedonic, Cantor-diagonal, Spiral, Morton, Hilbert. The value of the startPoint are the coordinates of the first grid post, given as a set of integers indicating the coordinates of the post in the non-georectified grid.

Specialised coverages

Coverage typed according to the domain geometry

  • Some XMML coverage specializations:
    Some XMML coverage specializations

Conventionally Coverages are typed according to the structure of their domain, which typically determines the processing and visualisation software that will be used. GML/XMML Coverages implement the following specialised discrete coverages:

  • PointSetCoverage - values at a set of points - used for the "classic" case where a field or function is sampled at a set of known points, later used as control points to generate a continuous or gridded coverage
  • RectifiedGridCoverage - values distributed on a grid of points in geographic space
  • IntervalSetCoverage - values constant within each of a set of intervals or envelopes - useful for logs and other cases where each element of the coverage is an envelope defined by two extreme points in a given coordinate reference system
  • TimeAggregateCoverage - values at a set of explicit time instants or constant within each of a set of time periods - used for time-series
  • TimeGridCoverage - values at a set of time instants defined as a sequence or grid - used for regular time series

For convenience for use with sections (including boreholes) a set of specialized coverages are collected in an independent class (implemented as an explicit choice group) called Log.

Other typing methods

An argument can be made for typing coverages using the range semantics (e.g. "Temperature coverage", "parcel-ownership coverage"). This form of typing emphasises the decisions that might be supported by the information in the coverage, rather than the software that must be used in processing. In the current encoding, the "semantic" type of the coverage in this sense is available only by inspection of the range parameters - i.e. in the respective AbstractRSDefinition or AxisDefinition components.

Issues and change requests

Readers are invited to add issues to this table - select [Edit Table] below. It is not mandatory to enter a solution, but change requests are more likely to be implemented if a concrete solution is proposed.

%EDITTABLE{ header="| # | By | Timestamp | Component(s) | Description of issue | Proposed solution | Resolution |" format="| row, -1 | text, 25, Unknown | label, 0, 23 Sep 2017 13:41 | textarea, 3x25, Component(s) | textarea, 3x25, Description | textarea, 3x25, Proposal | select, 1, Unaddressed, Progressing, Resolved |" changerows="on" }%
# By Timestamp Component(s) Description of issue Proposed solution Resolution
1 My org 14 May 2004 collar location A big whinge a proposed solution Unaddressed

Topic attachments
I Attachment Action Size Date Who Comment
19123_DIS2003.pdfpdf 19123_DIS2003.pdf manage 521.6 K 24 Oct 2003 - 13:07 SimonCox DIS 19123 - Coverage model and schema
coverage.PNGPNG coverage.PNG manage 16.6 K 07 Nov 2005 - 12:46 SimonCox Top level XMML coverage model
coverageSpecial.PNGPNG coverageSpecial.PNG manage 14.6 K 07 Nov 2005 - 13:10 SimonCox Coverages specialized by domain structure, and logs
Topic revision: r41 - 15 Oct 2010, UnknownUser

Current license: All material on this collaboration platform is licensed under a Creative Commons Attribution 3.0 Australia Licence (CC BY 3.0).