Classification of WCS Aspects
Arliss Whiteside, Peter Baumann
Version of: 2007-dec-07
Status: internal discussion paper

Below is a list of envisaged WCS aspects (which can be extended at any time by the WG if deemed necessary). 

Central is the distinction between the coverage data structure (“conceptual model”) and the request functionality (encoding, operation parameters, etc.). An aspect listed in the coverage model, therefore, is not repeated in the functions section – any specificaiton choosing to support the model aspect is supposed to also support the function aspect. Example: if a WCS implementation supports a transformation with a coverage, then a coverage’s transformation (if present) will be delivered by a GetCoverage request. 

This list (or hierarchy) serves as a guideline for specifications: core and extension will pick and bundle items. Selection for the core will be done in a way that a minimal, but useful WCS is defined. Selection of extensions will combine aspects under various possible viewpoints – for example, to support a particular application domain, or to offer a bundled feature set.
The core is mandatory for any WCS implementation. Extensions offer a choice for vendors to choose, again, what they want to implement. its implementation the core (mandatory) and any subset of possible extensions. For example, the core may offer only x, y domain axes while the GeneralDomain extension may offer x, y, z, t, and abstract dimensions. The core WCS may offer the GetCoverage request, while the WCPS extension adds the ProcessCoverage request; the WCS-T extension adds transaction capabilities, etc.
Not all aspects listed need to become manifest in some extension. In practice someone will feel urged to write an extension, will pick a useful aspect bundle; this will automatically lead to selecting the most required aspects. However, the list guides to avoid inconsistencies and unwanted overlaps among extensions.

Obviously there are dependencies among aspects. For example, the aspect “multi-part response” will additionally need at least one data format encoding (such as TIFF or HDF). This element needs further consideration to find a handy representation in the list.

Generally, this is one concept under discussion by the WCS.RWG. Under no cirucmstance it should be interpreted at this stage as a planned component of a future WCS.

Note that those aspects which are mandatory in any case and do not constitute a choice (such as request and version parameters, as well as exception types) are not part of the list; often such aspects are laid down in (Grid) Coverages Common. Likewise, aspects are omitted which definitely are out of consideration currently (such as KVP over HTTP/POST).

•	Grid Coverage aspects, with all: 
•	Coverage metadata, with all:
•	Identifier
•	Title
•	Abstract
•	Keywords
•	Metadata
•	SupportedCRS
•	SupportedFormat
•	CoverageSummary, recursive TBR
•	Transformation
•	Coverage Domain, with all:
•	Dimensions, one or more of:
•	x dimension	
•	y dimension 	
•	z dimension 
•	t dimension with ImageCRS or 
•	one or more abstract dimensions (not in WCS 1.1)
•	skewed axes? (Arliss) TBR
•	CRS, one or more of:
•	GridCRS (georectified coverage)
•	ImageCRS (unrectified coverage)
•	One or more further CRSs
•	Temporal CRS (ISO 8601)
•	Multiplicity of BoundingBoxes (with same CRS), one of:
•	Only one BoundingBox
•	Union of BoundingBoxes
•	Coverage Range, with all:
•	Number of Fields, one or more of:
•	One Field 
•	Two or more Fields 
•	Types of Fields, one or more of:
•	Atomic (scalar) fields
•	1-D vector fields
•	2-D+ vector Fields
•	Interpolation Methods (with optional null resistance), one or more of:
•	“none”, “nearest”, “linear”, “cubic”, “quadratic”
•	Each additional specific interpolation method (many possible)
•	Null Values, one of:
•	No null values 
•	One null value
•	Set of null values 
•	Set of null values with intervals
•	Coverage Format, one or more, usually just one:
•	multi-part response (requires one or more extra formats)
•	GeoTIFF, HDF-EOS, NetCDF, PNG, JPEG, MPEG, JP2, GMLJP2, NITF, CSV (comma-separated value list), …

•	WCS Service aspects, with all:
•	Protocols 
•	Operation request encoding, one or more of:
•	KVP transfer with HTTP GET (for all operations)
•	XML transfer with HTTP POST
•	XML with SOAP transfer with HTTP POST 
•	Constraint element, with “name” value of “PostEncoding” 
and containing values of “XML” and/or “SOAP” when 
appropriate 
•	REST
•	Request types
•	GetCapabilities operation, with all:
•	Operation request, with all:
•	AcceptVersions parameter [0..1] 	
•	Sections parameter [0..1], one of:
•	AcceptFormats parameter [0..1], one of:
•	UpdateSequence parameter [0..1]
•	Operation response (Capabilities), with all:
•	version parameter [1] 	
•	UpdateSequence parameter [0..1], one of:
•	ServiceIdentification section, with all:
•	ServiceType [1] 	
•	ServiceTypeVersion [1..*] 	
•	Profile, for all extension class groups implemented [0..*] 	
•	Title [0..*] 	
•	Abstract [0..*] 	
•	Keywords [0..*] 	
•	Fees [0..1] 	
•	AccessConstraints [0..*] 	
•	ServiceProvider section, with all:
•	ProviderName [1] 	
•	ProviderSite [0..1] 	
•	ServiceContact [0..1] 	
•	OperationsMetadata section, with all:
•	Operation structure for all operations implemented, with all:
•	name [1] 
•	DCP data structure, containing HTTP data structure, 
containing one or more of GET and/or POST, each 
referencing a connect point URL [1..*] 
•	Constraint element, with “name” value of “PostEncoding” 
and containing values of “XML” and/or “SOAP” when 
appropriate (TBR) [1..*]
•	Parameters element in Operation structure for 
GetCoverage operation “name” value of “store” 
containing all supported values 
•	GetCoverage operation Parameters, with all:
•	“name” value of “Format” and containing all supported values 
•	“name” value of “store” and containing all supported values
•	Contents section, with all:
•	OtherSource [0..*] 
•	WGS84BoundingBox [0..*] 
•	SupportedCRS [0..*] 
•	SupportedFormat [0..*] 
•	CoverageSummary [0..*]
•	DescribeCoverage operation, with all:
•	Operation request, with all:
•	version parameter [1] 	
•	Identifier parameter [1..*] 	
•	Operation response (CoverageDescription [1..*]), with all:
•	Identifier [1] 	
•	Title [0..1] 	
•	Abstract [0..1] 	
•	Keywords [0..*] 	
•	Metadata [0..*] 	
•	SupportedCRS [0..*], one or more of: 	
•	baseCRS of GridCRS of offered coverage 	
•	ImageCRS of offered coverage 	
•	Different CRSs than baseCRS of offered coverage (many possible) 	
•	SupportedFormats
•	Domain (of offered coverage) [1], with all: 	
•	(See Coverage Domain)
•	SpatialDomain, with all: 	
•	BoundingBox [0..*], with all:
•	Multiplicity of BoundingBoxes (with same CRS), one of:
•	Only one BoundingBox
•	Union of BoundingBoxes
•	Referenced CRS [0..*], one or more of: 	
•	Image CRS of offered unrectified coverage 	
•	Same CRS as baseCRS of offered coverage 	
•	Different CRS than baseCRS of offered coverage	
•	GridCRS (for georectified coverage) [0..1] 	
•	ImageCRS [0..1], one or more of: 	
•	For unrectified coverage 	
•	For georectified coverage (not in WCS 1.1)	
•	TemporalDomain	
•	Range	
•	GetCoverage operation, with all:
•	Operation request, with all:
•	version parameter [1] 
•	Identifier parameter [1] 
•	DomainSubset structure [0..1], with all: 
•	BoundingBox [1], referencing either: 
•	ImageCRS of offered unrectified coverage 
•	Same CRS as baseCRS of offered georectified coverage 
•	Different CRS than baseCRS of offered georectified coverage
•	TemporalSubset
•	RangeSubset structure
•	Output structure [1], with all: 
•	GridCRS structure [0..1] 
•	baseCRS of GridCRS [1], implementing one or more of:
•	Same as offered georectified coverage 
•	(Support rotation and skew grid resampling)
•	ImageCRS of offered unrectified offered coverage 
•	(Support rotation and skew grid resampling)
•	Different from offered georectified coverage (many 
possible) 
•	(Each additional CRS referenced by a 
BoundingBox or Polygon in SpatialDomain of 
CoverageDescription, in addition to CRSs that are 
or could be listed as a  SupportedCRS)
•	Georectify offered unrectified coverage (many possible)
•	(Support non-linear transformations between CRSs)
•	(Each specific coordinate Transformation (from 
one CRS to another) supported by GetCoverage 
operation)
•	Georectify offered unrectified coverage (many possible), with all: 
•	(Each specific coverage rectification transformation 
method supported by GetCoverage operation)
•	(Each specific grid elevation data format supported 
for image orthorectification)
•	Output Format parameter [1], one or more of:
•	Same as offered coverage 
•	Different from offered coverage (multiple) 
•	“store” parameter
•	Operation response, with all:
•	Coverage data
•	Number of files, one or more of:
•	One File (not in WCS 1.1) 	
•	Coverages data structure (subtype of Manifest) 	
•	 “store” parameter
•	Format of output coverage data, one or more of:
•	(See Coverage Format)
•	Same as for offered coverage 	
•	Different than for offered coverage
•	ProcessCoverage operation (WCPS), with all:
•	Operation request, with all: 
•	version parameter	
•	Coverage processing request
•	Operation response, with all:
•	Coverage data
•	Coverages data structure (subtype of Manifest)
•	“store” parameter
•	Format of output coverage data, one or more of formats above
•	WCS-T …