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

1	Overview
This document suggests a classification of WCS aspects (features). It is aiming at two targets: to ease comprehension of the standard for its users, i.e., implementors, and to give guidelines for further development of the WCS suite.

Central is the clear distinction between the coverage data structure (“conceptual model”) and the request functionality (“interface model”). An aspect listed in the coverage model, therefore, is not repeated in the functions section – any specification 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 (even though the transformation is not explicitly listed there). 

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 (Base) 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.

Conversely, the list can be extended at any time by the WG if and when deemed necessary.

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 needs to be completed for all aspects, it is only sketched now.
2	Coverage aspect listing
Table X: WCS aspect hierarchy and standard compliance classes
(only in grey areas (= for non-bold items) choices are allowed; 
footnotes will be cast into descriptive text once the overall approach is agreed upon)

	Compliance class	
	Base (core)	KVP Basic	KVP Ext.	SOAP Basic	SOAP Ext.	
•	Grid Coverage 						
•	Coverage metadata	X	X	X	X	X	
•	Coverage Domain		
•	Dimensions						
•	X dimension	X	X	X	X	X	
•	Y dimension 		X	X	X	X	X	
•	Z dimension 			X		X	
•	T dimension			X		X	
•	skewed axes? (Arliss) TBR						
•	General Domain						
•	CRSs						
•	Spatial CRSs						
•	One GridCRS	X	X	X	X	X	
•	One or more further CRSs						
•	Temporal CRS			X		X	
•	Transformation						
•	BoundingBox						
•	Single BoundingBox	X	X	X	X	X	
•	Union of BoundingBoxes						
•	WGS84BoundingBox	X	X	X	X	X	
•	Polygon						
•	Coverage Range						
•	Number of Fields						
•	One Field 	X	X	X	X	X	
•	Two or more Fields 			X		X	
•	Types of Fields						
•	Atomic (scalar) fields	X	X	X	X	X	
•	1-D vector fields			X		X	
•	2-D+ vector Fields						
•	Interpolation Methods						
•	“none”	X	X	X	X	X	
•	“nearest”		X	X		X	
•	“linear”		X	X		X	
•	“quadratic”						
•	“cubic”						
•	custom interpolation method(s)						
•	Null Values						
•	One null value						
•	Null value intervals						
•	Set of null values 						
•	Coverage Formats:						
•	multi-part response
requires: one of data formats						
•	data formats: 
GeoTIFF, HDF-EOS, NetCDF, PNG, JPEG, MPEG, JP2, GMLJP2, NITF, CSV, …	Need one here!					
•	Nested coverages						
•	WCS Service						
•	Common service capabilities						
•	Service, request, version parameter	X	X	X	X	X	
•	Version negotiation						
•	asynchronous processing (“store” parameter)						
•	Exception codes	X	X	X	X	X	
•	Externally stored metadata (“OtherSource”)						
•	Protocols						
•	Operation Request Encoding						
•	KVP transfer with HTTP GET		X	X			
•	XML transfer with HTTP POST						
•	XML with SOAP				X	X	
•	Individual connection points for different encodings						
•	RESTful protocol						
•	Request types						
•	GetCapabilities operation	X	X	X	X	X	
•	Operation request	X	X	X	X	X	
•	AcceptVersions
•	Sections
•	AcceptFormats
•	UpdateSequence						
•	Operation response	X	X	X	X	X	
•	Service identification and description	X	X	X	X	X	
•	OperationsMetadata section	X	X	X	X	X	
•	Operation structure for all operations	X	X	X	X	X	
•	Contents section	X	X	X	X	X	
•	OtherSource parameter
requires: WCSService.CommonServiceCapabilities.ExternallyStoredMetadata						
•	WGS84BoundingBox
requires: GridCoverage.WGS84BoundingBox	X	X	X	X	X	
•	SupportedCRS	X	X	X	X	X	
•	SupportedFormats
requires: one of (coverage formats)	X	X	X	X	X	
•	CoverageSummary
requires: GridCoverage.NestedCoverages	X	X	X	X	X	
•	Nested CoverageSummary
requires: GridCoverage.NestedCoverages						
•	DescribeCoverage operation	X	X	X	X	X	
•	Operation request	X	X	X	X	X	
•	Coverage identifier	X	X	X	X	X	
•	Operation response	X	X	X	X	X	
•	Contents section	X	X	X	X	X	
•	OtherSource parameter
requires: WCSService.CommonServiceCapabilities.ExternallyStoredMetadata						
•	WGS84BoundingBox
requires: GridCoverage.WGS84BoundingBox	X	X	X	X	X	
•	SupportedCRS	X	X	X	X	X	
•	SupportedFormats
requires: one of (coverage formats)	X	X	X	X	X	
•	CoverageSummary
requires: GridCoverage.NestedCoverages	X	X	X	X	X	
•	Nested CoverageSummary
requires: GridCoverage.NestedCoverages						
•	GetCoverage operation	X	X	X	X	X	
•	Operation request	X	X	X	X	X	
•	Coverage identifier	X	X	X	X	X	
•	DomainSubset structure	X	X	X	X	X	
•	BoundingBox	X	X	X	X	X	
•	TemporalSubset
requires: GridCoverages.Dimensions.T-Dimension, GridCoverages.CRS.TemporalCRS			X		X	
•	Polygon
requires: GridCoverage.Polygon						
•	RangeSubset structure 			X		X	
•	Range field selection
requires: GridCoverage.Range.TwoOrMoreFields			X		X	
•	range vector field selection
requires: GridCoverage.Range.1D-VectorField or GridCoverage.Range.2D+-VectorField			X		X	
•	Output structure	X	X	X	X	X	
•	GridCRS structure	X	X	X	X	X	
•	BaseCRS of GridCRS	X	X	X	X	X	
•	Same baseCRS as offered georectified coverage 	X	X	X	X	X	
•	ImageCRS of offered unrectified coverage 			X		X	
•	Different from offered georectified coverage			X		X	
•	Georectify offered coverage on the fly				X	X	
•	interpolation		X	X	X	X	
•	output coverage data format	X	X	X	X	X	
•	Same as offered coverage 
(=supported formats – how do I know???)	X	X	X	X	X	
•	Different from offered coverage		X	X	X	X	
•	“store” parameter			X		X	
•	Operation response	X	X	X	X	X	
•	Coverage data	X	X	X	X	X	
•	One data file	X	X	X	X	X	
•	Package with manifest-type metadata and one or more coverage file(s) 				X		X	
•	ProcessCoverage operation						
•	Operation request
requires: WcsService.Operations.XML-POST, GridCoverage.GeneralDomain						
•	Operation response
requires: GridCoverage.CoverageFormats, WCSService.CommonServiceCapabilities.AsynchronousProcessing, GridCoverage.CoverageFormats.multi-partResponse						
•	WCS-T operations (TBD, Arliss)						

3	List of extensions (to be completed)
3.1	Predefined compliance class extensions
•	KVP Basic
•	KVP Extended
•	SOAP Basic
•	SOAP Extended
3.2	 “Atomic” Extensions
•	General Domain
•	Implements: General Domain
•	Requires: Base
•	Transformation: (?)
•	Implements: 
•	Requires: Base, …
•	Polygon:
•	Implements: GridCoverage.Polygon, WcsService.RequestTypes.GetCoverage. OperationRequest.Polygon
•	Requires: Base
•	RESTful WCS:
•	Implements: 
•	Requires: Base, … 
•	Multi-part response
•	Implements: multi-part response
•	Requires: Base, atLeastOneOf(GridCoverage.CoverageFormats)
•	WCPS:
•	Implements: ProcessCoverage
•	Requires: Base, GeneralDomain, GridCoverage.CoverageFormats.multi-part response, atLeastOneOf(GridCoverage.CoverageFormats), WcsService.Operations.XML-POST
•	WCS-T:
•	Implements: …
•	Requires: Base, … 

…plus data format encodings, such as: GeoTIFF, NetCDF, HDF / HDF-EOS, JPEG2000