Differences between WCS1.0 and WCS2.0 + Met Ocean Extensions:

Background:

This document serves to describe the differences in WCS 1.0 and WCS 2.0 with the Met-Ocean Application Profile and Extension.

Acknowledgement:

This document denotes differences occurring in the current WCS MetOcean responses from the WCS as it is currently set up. It does not take into account updates to the MetOcean profile in the OGC papers up for submission by Peter Trevelyan. When the WCS responses are updated to reflect the updates in the OGC paper’s, the changes will updated here accordingly.

Introduction: 

Version 1.0:

WCS1 provides access to simple coverages of gridded data, with a rectangular bounding box used to define the area or interest, as specified in the comma separated BBOX URL parameter. Each WCS1.0 request only provides access to a single elevation, as specified in the Elevation URL parameter.

Version2.0

By adding the Met Ocean Extensions to the WCS2.0 standard we are able to better support a number of Meteorological-based features.  This allows, for example, the changing nature of weather over time and elevation to be easily represented and referenced. Met Ocean coverages support “reference time” indicating a notional start time if referring to a NWP (Numerical Weather Prediction) model run. The forecast time (in the case of a model run) is relative to this time. In addition, specific Meteorological data can be returned in a much more efficient way with the Met Ocean Extensions, through the use of Polygons and Corridors.

The Met Ocean extensions also introduce the concept of Coverage Collections, which allow coverages to be grouped in a hierarchical way.  CoverageCollections generally group coverages by a common theme, allowing them to be associated with “real world” services. For example, an aviation service (itself a collection), might contain two collections – an icing service and a turbulence service. Each of these collections could themselves contain two collections – Regional Icing and Global Icing for Icing and Regional Turbulence and Global Turbulence for turbulence.  

Each coverage collection has an associated coverageCollectionId, returned in a GetCapabilities request, which can be used in a DescribeCoverageCollection request to return a list of contained coverage identifiers. These coverage ID’s in turn can be used in a GetCoverage call.

The following requests are available from WCS2.0 with Met Ocean Extensions. Some require input parameters to be specified within the URL and some required them to be specified within a posted XML document. The Matrixes are designed to show differences in the high level functional XML tags between the two versions. 

Important difference in coverage (ID) names. For Ver2.0, Reference Times (Model Output Times) and Vertical Levels are considered part of the coverage (ID). Meteorological Elements/Parameters are then range subsetted per that Coverage(ID). Furthermore, the Data “Result Quality” Mask denotes if valid data exists, per that meteorological Element/Parameter’s forecast times, at the vertical level that now encompasses the coverage name. Ver1.0 has the Meteorological Element/Parameter name as PART of the coverage(ID) name, as there are no designated Vertical Levels.

                                                           GetCapabilities

                                                   GetCapabilities Request Examples:

Version

Request

Link to full Example

WCS 1.0

https://dataservices-beta.metoffice.gov.uk/services/GlobEGRR?REQUEST=GetCapabilities&SERVICE=WCS&VERSION=1.0.0&key....

https://docs.google.com/document/d/1kgDM213K1c2Ga4hRSx4hegCFv4L-A38SNs-0H05XCi8/edit

WCS 2.0 + Met Ocean

<wcs:GetCapabilities ... service="WCS">

        <ows:AcceptVersions>

                    <ows:Version>2.0.1</ows:Version>

      </ows:AcceptVersions>

      <ows:Sections>        

                 <ows:Section>OperationsMetadata</ows:Section>

               <ows:Section>CoverageSummary</ows:Section>

               <ows:Section>OfferedCollections</ows:Section>   

https://docs.google.com/document/d/1vqmB2OgXubGSseRhdGfjDaJcXueGLHoL4zEpIbgOWGo/edit

GetCapabilities Request Matrix

Description and Major points of difference

Strengths of proposed MetOcean over Ver1.0

(Where are we today vs where we want to be)

Weakness of proposed MetOcean over Ver1.0

(Where are we today vs where we want to be

Benefits

(What are we looking

                                                                                                                                                                                                                                                                  to get by this move?)

Ver2.0 (MetOcean) allows for retrieval of specific sections via a POST request. Below, a user can request only the retrieval of “OperationsMetadata” or “CoverageSummary” or “OfferedCollections” if they choose.

<wcs:GetCapabilities

   service="WCS">

  <ows:AcceptVersions>

    <ows:Version>2.0.1

    </ows:Version>

  </ows:AcceptVersions>

  <ows:Sections>             

    <ows:Section>

        OperationsMetadata     

    </ows:Section>           

    <ows:Section>

        CoverageSummary

    </ows:Section>

    <ows:Section>

        OfferedCollections

    </ows:Section>

  </ows:Sections>

</wcs:GetCapabilities> 

If you are already familiar (advanced user) with the underlying data, then you can use the extra arguments to return only those sections that benefit you.

Should a GetCapabilities request be able to be limited with respect to data returned? Does that defeat the general purpose of an introduction to a service? Answer: with repeated usage, info returned is reduced.

Efficiency?

Novice User: No appreciable benefit at this stage.

Advanced User: Can increase efficiency by reducing amt of data returned.

UPDATE: Returning certain sections in a GetCapabilities

response is already allowed in WCS 1.0.:

/05-076_Web_Coverage_Service_WCS_Version_1.0.0

SECTION =     /WCS_Capabilities/Service

                     or /WCS_Capabilities/Capability

                     or /WCS_Capabilities/ContentMetadata

Optional --  Section(s) of Capabilities document to be  

                   returned

                           

                                           GetCapabilities Response Examples:

Version

Response (snippet of XML response document showing high level functional XML tags)

Link to full Example

WCS 1.0

<WCS_Capabilities>

<Service>

<Capability>

<ContentMetadata>

</WCS_Capabilities>

https://docs.google.com/document/d/1kgDM213K1c2Ga4hRSx4hegCFv4L-A38SNs-0H05XCi8/edit

WCS 2.0 + Met Ocean

<wcs:Capabilities>

  <ServiceIdentification>

   <OperationsMetadata>

   <wcs:Contents>

</wcs:Capabilities>

https://docs.google.com/document/d/1vqmB2OgXubGSseRhdGfjDaJcXueGLHoL4zEpIbgOWGo/edit

GetCapabilities Response Matrix

Ver1.0

Ver2.0 (+ MetOcean)

Description and Major points of difference

Strengths of proposed MetOcean over Ver1.0

(Where are we today vs where we want to be)

Weakness of proposed MetOcean over Ver1.0

(Where are we today vs where we want to be

Benefits

(What are we looking

                                                                                                                                                                                                                                                                  to get by this move?)

<WCS_Capabilities>

<wcs:Capabilities>

Name

<Service>

<ServiceIdentification>

name

<Service>   

   <name>

   <label>

   <fees>

   <accessConstraints>

<ServiceIdentification>  

   <Title>

   <ServiceType>

   <ServiceTypeVersion>

   <Profile>

Slight diff in child element names

-<ServiceType>

  (OGC WCS)

  returned.

 

-<Profile>’s

  returned (see

  above).

-Less info

 returned.

-<fees> removed (optional    

   now)

-<accessConstraints> child

   elements removed.

 -<ServiceTypeVersion>

   “version”  info is

   duplicated in response.

-More info returned

Greater descriptor info returned.

none

<Profile>

http://www.opengis.net/spec/WCS/2.0/conf/core

</Profile>

...

Lists its’ identifying URLs in Profiles.

Identifies WCS Extensions

Helps track history of progression. Shows what has been extended.

 <Capability>

 <OperationsMetadata>

Better descriptive nomenclature

 <Capability>

   <Request>

       <GetCapabilities>

   <Exception>

<OperationsMetadata>

    <Operation =

      ”GetCapabilities”>

-Names of

  functions are  

  Attributes vs

  Elements.

-<Exception>

  removed in

  Ver2.0.

-<Exception>

  info is now in

  <AllowedValues>

  under

  <Operation>

-Ver2.0 has  

 function names

 as attributes:

 Allows for easy

 additions of

 subsequent

 functions, which

 includes the 3

 MetOcean

 function

 additions.

-Moving

 <Exception> info

 under each

 operation allows

 for diff value(s)

 per operation.

Ver1.0 has function names as Elements.

Extensibility enhanced (DescribeCoverageCollection, GetCorridorCollection, GetPolygonCollection added easily)

<ContentMetadata>

<CoverageOffering>

        <name>

              GlobEGRR_0c-isotherm-icao-height

       </name>

….(CoverageOffering repeated as

       needed)

<wcs:Contents>

<wcs:CoverageSummary>

      <wcs:CoverageId>

GlobEGRR_2015-10-21T00.00.00Z_AGL    

            </ wcs:CoverageId>

 ….(wcs:CoverageSummary

       repeated as needed)

<wcs:Extension>

-Ver1.0 returns a list

  of Coverage

  Offering’s

 

-Ver2.0 returns a list  

  of wcs:Coverage

  Summary’s and an

  Extension element

Important difference in coverage names. Ver2.0: The Coverage Collection,Reference Time and Vert Level are part of the coverage name (Id).

Elements/parameters are then range subsetted per that coverageId. And the Data Quality mask denotes if valid data exists per element/parameter at that time and vertical level.

Ver1.0 has the element/parameter name as PART of the coverage name, as there are no vertical levels.

It then takes a DescribeCoverage response to denote the times that are valid for that coverage (element).

NOTE FIND INFO THAT THIS IS THE FIRST AREA THAT DEVIATEST FROM VER1.0. “SHOCK” TO USER….PULL FROM DOWN BELOW AND PUT HERE

-Coverage Collection

 oriented.

-Time Info contained in

 GetCapabilities list of

 Coverage names (Id’s)

 returns info a Describe

 Coverage necessitates in

 Ver1.0

<CoverageOffering>

<name>GlobEGRR_-20c-isotherm-

             icao-height

</name>

<label>-20C isotherm ICAO height

            (Kft)

</label>

<lonLatEnvelope>

<gml:pos>-173.44999999999996 -90</gml:pos>

<gml:pos>179.37499999999997 90</gml:pos>

</lonLatEnvelope>

<keywords>

<keyword>UKMO</keyword>

<keyword>UK Global Data</keyword>

</keywords>

</CoverageOffering>

  …..

<wcs:CoverageSummary>

<wcs:CoverageId>GlobEGRR

_2015-12-28T00.00.00Z_AGL</wcs:CoverageId>

<wcs:CoverageSubtype>Verti

          calDependency

</wcs:CoverageSubtype>

</wcs:CoverageSummary>

  …..

  …..

<wcs:Extension>

-Ver1.0:

 <keyword> info

 repeats.

-Ver1.0 has  

 <gml:pos>

 lat/lon info.

-Ver2.0 has

 <Coverage

    Subtype>

-Ver1.0 <keyword>

 is repeating info.

-Ver1.0 has lat/lon

 info listed per  

 coverage. Ver 2.0 has  

 lat/lon

 boundingBox info

 listed one time under

 the <wcs:Extension>

 element (see row

 below) that applies to

 the entire CoverageCollectionSummary

-Ver2.0 has additional

 CoverageSubtype

 vertical dependency

 info.

-Ver2.0 lacks lat/lon info per

 coverage, but gives the info

 collectively for the entire

 CoverageCollectionSummary.

-The x/y dimensional aspect on

 the t/z coverage(ID) contained

 in each CoverageSummary

 does not apply until each

 element on the t/z

 Dimensional plane is

 subsetted.

-Geared toward vertical

 dependency info and

 Reference Time level..

-Less duplicated info.

-CollectionSummary

 oriented.

none

<wcs:Extension>

<metocean:CoverageCollectionSummary>

<metocean:coverageCollectionId>GlobEGRR</metocean:coverageCollectionId>

<gml:name>GlobEGRR</gml:name>

<gml:boundedBy>

<gml:Envelope srsName="CRS:84" axisLabels="Long Lat" uomLabels="deg deg" srsDimension="2">

<gml:lowerCorner>-180 -90</gml:lowerCorner>

<gml:upperCorner>180 90</gml:upperCorner>

</gml:Envelope>

</gml:boundedBy>

<metocean:referenceTimeList>

<metocean:ReferenceTime>

<gml:timePosition>2016-01-04T00:00:00Z</gml:timePosition>

<gml:timePosition>2016-01-04T06:00:00Z</gml:timePosition>

</metocean:ReferenceTime>

</metocean:referenceTimeList>

</metocean:CoverageCollectionSummary>

</wcs:Extension>

Extension and CoverageCollection

Summary info only

exists for Ver2.0

-The name of the

 CoverageCollection

 is given.

-boundingBox info

 bounding all the

 contained coverages

 exists.

-The referenceTimes

 of the Coverage

 Collection are listed.

 Individual Coverages

 are generally the

 differing Z levels per

 each referenceTime.

none

-Allows grouping of similar

 coverages into Coverage

 Collections (similar to WFS’s

 FeatureCollections).

-The MetOcean profile

 provides a method of

 grouping together coverages

 the intended benefit being

 the reduction in the size of

 GetCapabilities response.

 The grouping structure may  

 be freely interpreted and

 reflect the convenience that

 is suitable for the particular

 usage.

                                

DescribeCoverage

                                             DescribeCoverage Request Examples:

Version

Request

Link to full Example

WCS 1.0

https://dataservices-beta.metoffice.gov.uk/services/GlobEGRR/?SERVICE=WCS&VERSION=1.0.0&REQUEST=DescribeCoverage&Coverage=GlobEGRR_-20c-isotherm-icao-height&key....

https://docs.google.com/document/d/1Z2qXjPeL28x4ai6-xipD6K7DUfsWPXagl-_vlSgHtOM/edit

WCS 2.0 + Met Ocean

https://dataservices-beta.metoffice.gov.uk/services/GlobEGRR/?SERVICE=WCS&VERSION=2.0.0&REQUEST=DescribeCoverage&COVERAGEID=GlobEGRR_2015-10-27T12.00.00Z_Tropopause&key....

https://docs.google.com/document/d/14OJKrkXUh5RVDjvmFbhpv7OIVfJsZepvZa3Gu5s4YU8/edit

                         DescribeCoverage Request Matrix

        Ver1.0

Ver2.0

(+ MetOcean)

Description and Major points of difference

Strengths of proposed MetOcean over Ver1.0 (Where are we today vs where we want to be)

Weakness of proposed MetOcean over Ver1.0

(Where are we today vs where we want to be

Benefits

(What are we looking

                                                                                                                                                                                                                                                                  to get by this move?)

“Coverage” input nomenclature

“CoverageID” input nomenclature

Ver1.0 uses KVP name “Coverage”

Ver2.0 uses KVP name “CoverageID”

Using CoverageID in request allows user to request “part” of a CoverageCollection.

Can CoverageID use confuse user who is not necessarily thinking in terms of “Collections”?

Utilizes Ver2.0  “Coverage

Collection” methodology

Coverage value name:

GlobEGRR_-20c-isotherm-icao-height

CoverageID name:

GlobEGRR_2015-10-27T12.00.00Z_Tropopause

-Ver1.0 has element name in

 the value.

-Ver2.0 has Reference Time

 and Vertical Level in the

 CoverageID value.

-Ver2.0: Use of Reference Time and

 Vertical Level denotes the major

 difference as the CoverageID’s are  

 part of a Collection of similar

 Reference Times and Vertical Levels

 for Numerical Wx Prediction Model

 outputs.

The use of CollectionID necessitates the methodology on how to accrue like minded coverages when setting up web services. This planning must be laid out beforehand.

Again, accentuates the

Coverage “Collection”

methodology.

                                                                                                          

 DescribeCoverage Response Examples:

Version

Response (snippet of XML showing high level functional XML tags)

Link to full Example

WCS 1.0

<CoverageDescription>

  <CoverageOffering>

  </CoverageOffering>

  …. (CoverageOfferings continue as needed)

</CoverageDescription>

https://docs.google.com/document/d/1Z2qXjPeL28x4ai6-xipD6K7DUfsWPXagl-_vlSgHtOM/edit

WCS 2.0 + Met Ocean

<wcs:CoverageDescriptions>

 <wcs:CoverageDescription  

     gml:id="GlobEGRR_2016-01-06T00.00.00Z_Tropopause">

 </wcs:CoverageDescription>

 …. (CoverageDescription repeated as needed)

</wcs:CoverageDescriptions>

https://docs.google.com/document/d/14OJKrkXUh5RVDjvmFbhpv7OIVfJsZepvZa3Gu5s4YU8/edit

WCS 1.0

<CoverageOffering>

<name>GlobEGRR_-20c-isotherm-icao-height</name>

<label>-20C isotherm ICAO height (Kft)</label>

<lonLatEnvelope>...</lonLatEnvelope>

<keywords>...</keywords>

<domainSet>...</domainSet>

<rangeSet>...</rangeSet>

<supportedCRSs>...</supportedCRSs>

<supportedFormats>...</supportedFormats>

<supportedInterpolations>...</supportedInterpolations>

</CoverageOffering>

WCS 2.0 + Met Ocean

<wcs:CoverageDescription  

    gml:id="GlobEGRR_2016-01-06T00.00.00Z_Tropopause">

<wcs:CoverageId>GlobEGRR_2016-01-06T00.00.00Z_Tropopa    

  use

</wcs:CoverageId>

<gml:boundedBy>

<gmlcov:metadata>

<gml:domainSet>

<gmlcov:rangeType/>

<wcs:ServiceParameters>

</wcs:CoverageDescription>

DescribeCoverage Response Matrix

Ver1.0

Ver2.0 (+ MetOcean)

Description and Major points of difference

Strengths of proposed MetOcean over Ver1.0

(Where are we today vs where we want to be)

Weakness of proposed MetOcean over Ver1.0

(Where are we today vs where we want to be

Benefits

(What are we looking

                                                                                                                                                                                                                                                                  to get by this move?)

<CoverageDescription>

<wcs:CoverageDescriptions>

Plural (s) on Descriptions

Allows for more than one coverage description to be returned (if comma delimited in the request)

<CoverageOffering>

<wcs:CoverageDescription> 

-Ver1.0 refers to a singular

 coverage more defined by

 a singular element.

-Ver2.0 refers to a

 Coverage defined by a

 certain Ref Time and a

 certain Vert Level.

Allows more info to be

returned for multiple elements

contained in that Coverage

Can be confusing at first introduction to user.

Efficiency

<name>

<wcs:CoverageId>

-Ver1.0: Name is <element>

-Ver2.0: ID name as

 attribute.

Denotes part of Collection, as well as use of ID’s

Must know ID name

Use of ID’s improves efficiency in future requests.

 <lonLatEnvelope>

      <gml:pos>

      <gml:pos>

<gml:boundedBy>

-Ver1.0: Bounds are for

 specific coverage of that

 element.

-Ver2.0: Bounds are larger

 to encompass the

 coverages entire Vertical

 Level that (may) contain

 multiple elements.

Info listed once and covers potentially multiple elements.

Requires more data returned in a DescribeCoverage response in general, as multiple element info is also returned (in metadata section)

More info returned per DescribeCoverage that can describe multiple elements that the Coverage description (Ref Time + Vert Level) contains. This will actually reduce the number of requests needed it total.

none

<gmlcov:metadata>

Ver1.0 returns no <metadata> section.

Ver2.0: <gmlcov:metadata> serves to describe the z and t dimensions that are part of WCS2.0, the 2 dim (x, y) of Ver 1.0 that exist at each z and t dim, and the missing data on each z/t dimensional plane for each range subsetted element.

<metadata> section is used to describe:

1) Info on entire coverage  

  in the <MetOceanCoverageMetad

  ata> and subsequent  

   <metocean:sourceObservation

      Property> element.

2) Info on each component

  (element) that exists in

  the Coverage under

<metocean:dataMaskReferencePrope

   rty> and subsequent <metocean:DataMaskReferenceMem

  berList>.  

3) It also lists missing data

  info at certain time steps

  in

  <metocean:dataMaskProperty>

Large volume of XML returned can confuse user.

Also need to think of coverages as containing elements….a new paradigm shift.

Much more metadata returned per both coverage, and the element components that make up a coverage.

none

<gmlcov:Extension>

 <metocean:extensionProperty>

  <metocean:MetOceanCoverage

     Metadata>

      <metocean:sourceObservation

         Property>

-<gmlcov:metadata> uses

  Extension properties

-MetOceanCoverageMetadata

 contains 3 main child

 elements:

1) sourceObservationProperty

2) dataMaskReferenceProperty

3) dataMaskPorperty

Uses metocean extensibility to

incorporate info on both the coverage and specific elements contained in the coverage, as well as missing data info per element.

Denotes a placeholder for info on the entire coverage (that encompasses all elements making up coverage).

none

<metocean:SourceObservation  

   gml:id="so_GlobEGRR_

   2016-01-06T00.00.00Z_

   Tropopause">

     <om:phenomenonTime>

     <om:resultTime>

<om:procedure>

<om:parameter>

<om:observedProperty>

<om:featureOfInterest>

<om:result/>

</metocean:SourceObservation>

Ver2.0 SourceObservation

describes the entire coverage(ID). It is based off of the O&M model (child elements contained).

none

<om:phenomenonTime>

  <gml:TimePeriod    

    gml:id="tp_ForecastTimeRange_

    GlobEGRR_2016-01-06T00.00.00Z

    _Tropopause">

    <gml:beginPosition>

      2016-01-06T09:00:00Z

    </gml:beginPosition>

    <gml:endPosition>

      2016-01-12T00:00:00Z

    </gml:endPosition>

  </gml:TimePeriod>

</om:phenomenonTime>

Denotes the entire period of time surrounding the valid times...eg., the entire time the forecast data applies too. Beginning time position and ending time position is relative to the Reference Time.

Uses common O&M spec/methodology

Follows common (O&M) standard.

none

<om:resultTime    

          nilReason="unknown"/>

Null value, but required under O&M spec.

none

<om:procedure

       nilReason="inapplicable"/>

Null value, but required under O&M spec.

none

<om:parameter>

  <om:NamedValue>

    <om:name       

      xlink:href="http://www.codes.

      wmo.int/GRIB2/table1.2/

      referenceTime"/>

    <om:value>

      <gml:TimeInstant 

        gml:id="referencetime_

        GlobEGRR_2016-01-06

        T00.00.00Z_Tropopause">

        <gml:timePosition>

           2016-01-06T00:00:00Z

        </gml:timePosition>

      </gml:TimeInstant>

    </om:value>

  </om:NamedValue>

</om:parameter>

Simply info denoting the name of the Coverage(ID)

and the Reference Time.

Duplicated info, but nice to have. Element mandated by O&M spec.

none

<om:observedProperty    

    xlink:href="http://codes.

    wmo.int/common/observation

-type/METCE/2013/NWP_Model"/>

Describes the NWP Model coverage is derived from.

Ver2.0 O&M spec has a NWP model info placeholder, which is not found in Ver1.0.

O&M allows place to describe NWP source model of coverage.

none

<om:featureOfInterest>

  <sams:SF_SpatialSamplingFeature  

    gml:id="ss_GlobEGRR_

    2016-01-06T00.00.00Z_

    Tropopause">

    <sam:type    

      xlink:href="http://www.opengis.

      net/def/samplingFeatureType/

      OGC-OM/2.0/SF_SamplingSurface"/>

      <sam:sampledFeature>

        <metocean:ModelDescription  

          gml:id="uuid.md_GlobEGRR_

          2016-01-06T00.00.00Z_

          Tropopause">

          <gml:identifier  

            codeSpace="urn:uuid:">

            md_GlobEGRR_2016-01-06

           T00.00.00Z_Tropopause

          </gml:identifier>

          <metocean:originatingcentre>

           unknown

          </metocean:originatingcentre>

          <metocean:modeltype>

            atmospheric

          </metocean:modeltype>

          <metocean:modelidentifier>

            GlobEGRR

          </metocean:modelidentifier>

          <metocean:geometryComponent>

           <metocean:ModelDomain>

            <metocean:horizontalProjection>

              <gml:Polygon                        

                gml:id="boundary-

                geometry_GlobEGRR_

                2016-01-06T00.00.00Z_

                Tropopause" uomLabels=

                "deg deg" axisLabels="Lat Lon"

                srsDimension="2"        

                srsName="http://www.opengis.

                net/def/crs/EPSG/0/

                4326">

                <gml:exterior>

                 <gml:LinearRing>

                   <gml:posList>-90

                     -180 90 -180 90

                     180 -90 180 -90

                     -180

                   </gml:posList>

                 </gml:LinearRing>

               </gml:exterior>

             </gml:Polygon>

           </metocean:horizontalProjection>

         </metocean:ModelDomain>

       </metocean:geometryComponent>

     </metocean:ModelDescription>

   </sam:sampledFeature>

   <sams:shape xlink:href="ss_GlobEGRR_

      2016-01-06T00.00.00Z_Tropopause"/>

  </sams:SF_SpatialSamplingFeature>

</om:featureOfInterest>

Ver2.0: The O&M <featureOfInterest> allows for a detailed NWP model (metocean:ModelDescription> or description of origin).

This includes modelType, originator of model, and geometry components of the model. This is used to describe the x/y horizontal plane in a <gml:Polygon> element tag.

Allows for detailed description of model data coverage is derived from.

Detailed O&M  model or coverage originator description under the Feature Of Interest.

none

<om:result/>

Null value, but required under O&M spec.

none

<gmlcov:Extension>

 <metocean:extensionProperty>

  <metocean:MetOceanCoverage

     Metadata

    <metocean:dataMaskReferenceProperty>

Uses the Range Subsetting aspect of WCS2.0 to list component elements making up the coverage.

none

<metocean:dataMaskReference

   Property>

 <metocean:DataMaskReference

   MemberList>

  <metocean:dataMaskReference fieldName

     ="geopotential-height" xlink:href="

     #maskId_

     GlobEGRR_2016-01-06T00.00.00Z      

     _Tropopause_1">

     maskId_GlobEGRR_2016-01-06

     T00.00.00Z_Tropopause_1

  </metocean:dataMaskReference>

<dataMaskReferenceProperty>

and subsequent child elements are used to denote the component elements (geopotential-height) the coverage contains per Ref Time and Vert Level contained in the Coverage(ID) name.

none

<gmlcov:Extension>

 <metocean:extensionProperty>

  <metocean:MetOceanCoverage

     Metadata

    <metocean:dataMaskProperty>

<metocean:dataMaskProperty>

Uses the Range subsetting aspect of WCS2.0 to list component elements making up the coverage.

none

<metocean:dataMaskProperty>

<metocean:DataMaskMemberL    

   ist>

       <metocean:dataMask  

         maskName  

   ="geopotential-height_and_1_other"

       gml:id="maskId_GlobEGRR_

       2016-01-06T00.00.00Z_

       Tropopause_1">

      <gmlcov:ReferenceableGrid

        Coverage gml:id="rgc_maskId_

        GlobEGRR_2016-01-06

        T00.00.00Z_Tropopause_1">

     </gmlcov:ReferenceableGrid

       Coverage>

<metocean:DataMaskMemberList>

    <metocean:dataMask>

Consists of a list of component (elements) that encompass the coverage. This groups like minded elements so a dataMask denoting at what times missing data occurs can be valid for multiple elements.

Reduces info (similar in nature to time-layout key in DWML)

none

<gmlcov:ReferenceableGridCoverage   

   gml:id="rgc_maskId_GlobEGRR_

   2016-01-06T00.00.00Z_

   Tropopause_1">

<gml:boundedBy>

<gml:domainSet>

<gml:rangeSet>

<gmlcov:rangeType>

</gmlcov:ReferenceableGridCoverage>

none

<gml:boundedBy>

Provides grid upper and lower corner info

<gml:boundedBy> is  

 duplicated info

none

   <gml:domainSet>

     <gmlrgrid:ReferenceableGridByArray>

        <gml:limits>

        <gml:axisLabels>t</gml:axisLabels>

       <gml:posList>

         <gmlrgrid:sequenceRule>

4 child elements under domainSet. NOTE, this is a domainSet under the <metadata> tag, not under the Coverage area.

Used to set up the Domain/Range aspect to denote at which valid time steps data exists.

Quantifies missing data values. Ver1.0 does not allow for this.

NOTE: Missing data info is returned on a Z and T dimensional plane. Missing data at a specific x/y (lat/lon) point on that z/t dimensional plane is not given due to volume.

none

   <gml:limits>

     <gml:GridEnvelope>

   <gml:low>9</gml:low>

   <gml:high>144</gml:high>

     </gml:GridEnvelope>

Provides low and high hourly time limits to the valid times data occurs.

none

<gml:axisLabels>

   t

</gml:axisLabels>

<gml:axisLabels>

   z t

</gml:axisLabels>

Denotes the axis: the parameter marked for when data is missing or not.

Note, in instances of the AGL (above ground level),

the element max-gust refers to wind 10m AGL.

But the element temperature is at 2m AGL.

So, a slight diff in Z can be found amongst elements in the same coverage designated at a certain Z level (AGL).

none

One Dimension (t only): <gml:posList>

9 15 21 27 33 39 45 54 60 66 72 84 96 108 120 132 144

</gml:posList>

Two Dimensions:

z and t (1st pos below is (2 9), which = 2m elevation and 9 hours from Ref Time):

<gml:posList>

2 9 2 15 2 21 2 27 2 33 2 39 2 42 2 45 2 54 2 60 2 66 2 72 2 84 2 96 2 108 2 120 2 132 2 144

</gml:posList>

 

Denotes the time step positions (from the reference time). Used to mark the times data is missing or not.

Missing Data denotation

none

The case above with 1 dimension (t):

<gmlrgrid:sequenceRule

       axisOrder="+1">Linear

</gmlrgrid:sequenceRule>

The case above with 2 dimensions (z and t):

<gmlrgrid:sequenceRule

       axisOrder="+1 +2">Linear

</gmlrgrid:sequenceRule>

Denote referenceable grid

axis orientation and number of dimensions in the gml:posList (above).

none

<gml:rangeSet>

<gml:DataBlock>

      <gml:rangeParameters/>

      <gml:tupleList>1 1 1 1

            1 1 1 1 1 1 1 1 1 1 1

            1

      </gml:tupleList>

</gml:DataBlock>

</gml:rangeSet>

<gml:tupleList> provides missing data info on the element components making up the coverage(ID). Denotes at each time step if data is valid (1) or not (0)..

It does this by utilizing the O&M domainSet/rangeSet 1 to 1 pairing.

Quantifies missing data values. Ver1.0 does not allow for this.

none

<gmlcov:rangeType>

  <swe:DataRecord>

    <swe:field   

        name="datacompleteness

                   omission">

      <swe:Boolean>

         <swe:quality>

            <swe:Quantity>

               <swe:uom/>

               <swe:constraint/>

               <swe:value>1.0

               </swe:value>

            </swe:Quantity>

         </swe:quality>

         <swe:nilValues>

            <swe:NilValues>

                <swe:nilValue                 

                 reason=

                 "http://www.opengis

                 .net/def/crs/EPSG/0/

                 4326"/>

            </swe:NilValues>

         </swe:nilValues>

         <swe:value>0

         </swe:value>

      </swe:Boolean>

   </swe:field>

 </swe:DataRecord>

</gmlcov:rangeType

O&M domainSet/rangeSet requires a corresponding rangeType (of type SWE).

Allows for setting the values to denote missing data. Sets good (<swe:quality>) data denotation with a “1” and missing (<swe:nilValue>) data to a “0”.

Allows definition of missing data values (9999)

<domainSet>

   <spatialDomain>

   <temporalDomain>

<gml:domainSet>

    <gml:RectifiedGrid>

Ver2.0 Primary <gml:domainSet> that IS NOT under the <gmlcov:metadata> section details a Rectified grid on the x/y dimension of each z/t based coverage. Proxies the 2-dim <domainSet> in Ver1.0.

Since only dealing with the x/y dim of the 4dim coverage (t and z built into coverage), we have Rectified grid here. When dealing with all 4 dimensions, with Z varying, we denote the grid as a Referenceable grid.

     <spatialDomain>

none

Ver1.0: specific lat/lon info for the coverage (element

gml:Envelope under the <spatialDomain> element is repeated in Ver1.0 denoting specific lat/lon info for the coverage “acting” as an element.

Removes duplicated info (removes need to list specific lat/lon info per coverage if based off element as in Ver1.0)

<rangeSet>

  <RangeSet>

    <name>model-parameter</name>

    <label>Model parameter</label>

    <axisDescription>

    <axisDescription>

    <axisDescription>

    <axisDescription>

  </RangeSet>

</rangeSet>

 

<gmlcov:rangeType/>

Ver1.0: RangeSet is used to denote the model time info per that coverage element.

Each <axisDescription> denotes:

1) Model Data Run times

    (DIM_RUN)

2) Model data validity

   (TIME)

3) Model Data

   Forecast

   (DIM_FORECAST)

4) Model Data Level

    (ELEVATION)

Ver2.0: Just a placeholder as required in O&M as component part of domainSet

<axisDescription>

<AxisDescription>

<name>DIM_RUN</name>

<label>Model data run</label>

<values>

<interval atomic="true">

<min>2016-01-05T00:00:00Z</min>

<max>2016-01-06T18:00:00Z</max>

<res>PT6H</res>

</interval>

</values>

</AxisDescription>

</axisDescription>

none

Lists Model Run Times

This info is returned and duplicated per each coverage (element) in Ver1.0.

In Ver2.0, this duplicated version is not needed/returned as often as each coverage defined as a Reference Time and Vertical Level has element components. Thus, a DescribeCoverage response has info on each element in the metadata.

Reduced duplication of data returned. Reduced number of user queries.

<axisDescription>

<AxisDescription>

<name>TIME</name>

<label>Model data validity</label>

<values>

<singleValue>2016-01-07T06:00:00Z</singleValue>

<singleValue>2016-01-07T12:00:00Z</singleValue>

<singleValue>2016-01-07T18:00:00Z</singleValue>

<singleValue>2016-01-08T00:00:00Z</singleValue>

<singleValue>2016-01-08T06:00:00Z</singleValue>

<singleValue>2016-01-08T12:00:00Z</singleValue>

<singleValue>2016-01-08T18:00:00Z</singleValue>

<singleValue>2016-01-09T00:00:00Z</singleValue>

<singleValue>2016-01-09T06:00:00Z</singleValue>

<singleValue>2016-01-09T12:00:00Z</singleValue>

<singleValue>2016-01-10T00:00:00Z</singleValue>

<singleValue>2016-01-10T12:00:00Z</singleValue>

<singleValue>2016-01-11T00:00:00Z</singleValue>

<singleValue>2016-01-11T12:00:00Z</singleValue>

<singleValue>2016-01-12T00:00:00Z</singleValue>

<singleValue>2016-01-12T12:00:00Z</singleValue>

</values>

</AxisDescription>

</axisDescription>

none

Lists Valid Times for data.

This info is returned and duplicated per each coverage (element) in Ver1.0.

In Ver2.0, this duplicated version is not needed/returned as often as each coverage defined as a Reference Time and Vertical Level has element components. Thus, a DescribeCoverage response has info on each element in the metadata.

Reduced duplication of data returned. Reduced number of user queries.

<axisDescription>

<AxisDescription>

<name>DIM_FORECAST</name>

<label>Model data forecast</label>

<values>

<singleValue>PT54H</singleValue>

<singleValue>PT60H</singleValue>

<singleValue>PT66H</singleValue>

<singleValue>PT72H</singleValue>

<singleValue>PT84H</singleValue>

<singleValue>PT96H</singleValue>

<singleValue>PT108H</singleValue>

<singleValue>P5D</singleValue>

<singleValue>P5DT12H</singleValue>

<singleValue>P6D</singleValue>

</values>

</AxisDescription>

</axisDescription>

none

Lists how many hours out from the model run times (Reference Times) each valid data starts.

This info is returned and duplicated per each coverage (element) in Ver1.0.

In Ver2.0, this duplicated version is not needed/returned as often as each coverage defined as a Reference Time and Vertical Level has element components. Thus, a DescribeCoverage response has info on each element in the metadata.

Reduced duplication of data returned. Reduced number of user queries.

<axisDescription>

<AxisDescription>

<name>ELEVATION</name>

<label>Model data level</label>

<values>

<singleValue>atmosphere</singleValue>

</values>

</AxisDescription>

</axisDescription>

none

Lists elevation of coverage

This info is returned and duplicated per each coverage (element) in Ver1.0.

In Ver2.0, this duplicated version is not needed/returned as often as each coverage defined as a Reference Time and Vertical Level has element components. Thus, a DescribeCoverage response has info on each element in the metadata.

Ver2.0: Elevation as part of the coverageID name makes returning elevation info moot.

Reduced duplication of data returned. Reduced number of user queries.

<supportedCRSs>

<requestCRSs>CRS:84</requestCRSs>

<requestCRSs>EPSG:4326</requestCRSs>

<responseCRSs>CRS:84</responseCRSs>

<responseCRSs>EPSG:4326</responseCRSs>

<responseCRSs>ESRI:54004</responseCRSs>

<responseCRSs>ESRI:102021</responseCRSs>

<responseCRSs>ESRI:102018</responseCRSs>

<responseCRSs>EPSG:54004</responseCRSs>

<responseCRSs>EPSG:102021</responseCRSs>

<responseCRSs>EPSG:102018</responseCRSs>

</supportedCRSs>

<wcs:ServiceParameters>

    <wcs:CoverageSubtype>

    RectifiedDataset

     </wcs:CoverageSubtype>

    <wcs:nativeFormat>

         image/tiff

    </wcs:nativeFormat>

</wcs:ServiceParameters>

Ver1.0 returns all possible CRS’s the coverage can be requested on.

Ver2.0: All possible CRS coverage derived from not offered.

Reduced info returned.

<supportedInterpolations>

<interpolationMethod>nearest-neighbour</interpolationMethod>

<interpolationMethod>bilinear</interpolationMethod>

<interpolationMethod>high-order</interpolationMethod>

</supportedInterpolations>

Less info returned

Ver2.0: No Interpolation info. Instead, a user can choose interpolation when making a GetCoverage request by manipulating the sample size values in the interpolation section, which allow the number of data points in each dimension to be specified:

interpolationMethod=

"http://www.opengis.net/def/interpolation/OGC/1/Cubic/samplesize=4"/>

Reduced info returned

                                

GetCoverage

                                                GetCoverage Request Examples:

Version

Request

Link to full Example

WCS 1.0

https://dataservices-beta.metoffice.gov.uk/services/GlobEGRR?SERVICE=WCS&VERSION=1.0.0&REQUEST=GetCoverage&COVERAGE=GlobEGRR_dewpoint-temperature&BBOX=-12,45,12,65&WIDTH=1&HEIGHT=1&CRS=EPSG:4326&FORMAT=KML&ELEVATION=2m&DIM_RUN=2016-01-09T00:00:00Z&TIME=2016-01-09T09:00:00Z&key....

https://docs.google.com/document/d/1najVCRAKvpc8EQ2TFpPU4-o-d4OOsio6HbEHMmmfpWQ/edit

WCS 2.0 + Met Ocean

https://dataservices-beta.metoffice.gov.uk/services/GlobEGRR?SERVICE=WCS&VERSION=2.0.0&REQUEST=GetCoverage&COVERAGEID=GlobEGRR_2016-01-09T00.00.00Z_AGL&subset=long,CRS:84(10,11)&subset=lat,CRS:84(50,51)&rangesubset=dewpoint-temperature&format=KML&key....

https://docs.google.com/document/d/1d-rK6hZyKny7T6BgD7diX3dYncFVswqyNFNCvLbs4ZU/edit

                         GetCoverage Request Matrix

        Ver1.0

Ver2.0

(+ MetOcean)

Description and Major points of difference

Strengths of proposed MetOcean over Ver1.0 (Where are we today vs where we want to be)

Weakness of proposed MetOcean over Ver1.0

(Where are we today vs where we want to be

Benefits

(What are we looking

                                                                                                                                                                                                                                                                  to get by this move?)

“Coverage” input

“CoverageID” input

Ver1.0 uses KVP name “Coverage”

Ver2.0 uses KVP name “CoverageID”

Using CoverageID in request allows user to request “part” of a CoverageCollection.

Can CoverageID use confuse user who is not necessarily thinking in terms of “Collections”?

Utilizes Ver2.0 “Coverage Collection” methodology of grouping similar coverages into collections.

&Coverage value name:

GlobEGRR_-20c-isotherm-icao-height

&CoverageID name:

GlobEGRR_2015-10-27T12.00.00Z_Tropopause

-Ver1.0 has element name

 in the value.

-Ver2.0 has Reference  

 Time and Vertical Level in

 the CoverageID value.

-Ver2.0: Use of Reference Time and

 Vertical Level denotes the major

 difference as the CoverageID’s are  

 part of a Collection of similar

 Reference Times and Vertical Levels for Numerical Wx Prediction Model outputs.

The use of CollectionID facilitates the methodology on accruing like minded coverages when setting up web services. This planning must be laid out beforehand.

Again, accentuates the

Coverage “Collection”

methodology of grouping similar coverages into collections.

&BBOX=-12,45,12,65

&WIDTH=1

&HEIGHT=1

&CRS=EPSG:4326

GET:

&subset=long,CRS:84(10,11)&subset=lat,CRS:84(50,51)

POST:

   <wcsCRS:GetCoverageCrs>              

  <wcsCRS:subsettingCrs>                

    http://www.opengis.net/

    def/crs-combine?                

    1=http://www.opengis.net/

    def/crs/EPSG/0/4326                  

    2=http://www.codes.wmo.

    int/GRIB2/table4.5/Isobaric

    Surface

             

    3=http://www.opengis.net/

    def/temporal/ISO8601          

  </wcsCRS:subsettingCrs>    </wcsCRS:GetCoverageCrs> 

-BBOX: The bounds of the coverage wanted in Lat/Lon coordinates.

-WIDTH and HEIGHT: The resolution in gridpoints. A BBOX of 10 x 10 degrees, with a WIDTH and HEIGHT of 100, will give you a grid resolution of 0.1 degrees lat and long.

-CRS: Coordinate Reference System used for the coverage.

-&subset=long,CRS:84(10,11)           &subset=lat,CRS:84(50,51:

Ver2.0 allows a restriction using the CRS to deduct the amount of data returned in a GetCoverage response.

-With the use of &subset=long,CRS:84(10,11)           &subset=lat,CRS:84(50,51,

to restrict data, there are a reduced number of KVP’s in Ver2.0.

Combines KVP’s to reduce amount of options in the GetCoverage request.

none

GET:

&rangesubset=pressure,temperature

POST:

<rsub:rangeSubset>                            

  <rsub:rangeComponent>          

     UKMO_Global_

     Temperature

  </rsub:rangeComponent>    </rsub:rangeSubset>

Ver2.0: Used to restrict a certain element component on the x/y dimensional plane that the coverage encompasses on the z/t dimensional plane.

Allows for user to choose multiple number of elements in a single GetCoverage call.

In Ver1.0, multiple calls are needed to retrieve more than one element.

Reduces the amount of calls to the WCS a user needs to make.

none in GetCoverage;

see response from GetCapabilities: <supported

     Interpolations>

<int:Interpolation>

  <int:InterpolationAxes>

    <int:InterpolationAxis      

      axis="http://www.

      opengis.net/def/axis/    

      OGC/1/longitude"

      interpolationMethod=            

     "http://www.opengis.

     net/def/interpolation/

     OGC/1/Cubic/

     samplesize=4"/>

  </int:InterpolationAxes>

</int:Interpolation>           

Ver1.0: Interpolation info is returned in GetCapabilities

(not sure how used as a value in GetCoverage ?)

Ver2.0: A user can choose interpolation when making a GetCoverage request by manipulating the sample size values in the interpolation section, which allow the number of data points in each dimension to be specified:

&format=KML

&format=KML

Format of data returned.

none

&ELEVATION=

atmosphere

none

Ver1.0 uses this KVP.

In Ver2.0, the elevation is part of the coverage(ID) name.

Coverage(ID) names removes need for a separate &ELEVATION KVP.

Reduces amount of KVP options needed in GetCoverage call.

&DIM_RUN=

2015-10-26T00:00:00Z

none

Ver1.0: The model run to use.

Ver2.0, this model run time is referred to as the Reference Time. It is part of the coverage(ID) name.

Reduces amount of KVP options needed in GetCoverage call.

&TIME=

2015-10-26T00:00:00Z

none

Ver1.0: Denotes the valid time of the data.

Ver2.0: Cannot choose an element by valid time. A coverage(ID)

&DIM_FORECAST

=PT12H

none

This is the # of hours (12) forecast from the 2014-02-05T15:00:00 model run (reference time). The time durations are according to ISO 8601.

none

POST:

<metocean:DimensionTrim>

   <wcs:Dimension>

      Lat

   </wcs:Dimension>

   <metocean:TrimLow  

     uomLabels="Deg">

     50.0

   </metocean:TrimLow>

   <metocean:TrimHigh    

     uomLabels="Deg">

    60.0

   </metocean:TrimHigh>  </metocean:DimensionTrim>

The Dimension Trim elements allow the data to be restricted within an upper and lower bounds within a single dimension. Dimension Trim can be used to restrict latitudes (x), longitudes (y), altitude levels (z), and time spans (t).

none

<metocean:DimensionSlice>      

  <wcs:Dimension>

    ValidityTime

  </wcs:Dimension>        

  <metocean:SlicePoint

    uomLabels="ISO8601">

       2014-10-17T00:00:00Z

  </metocean:SlicePoint>  </metocean:DimensionSlice>

Dimension Slice can be used reduce dimensions e.g. from 3D to 2D.

Reduction of data returned

Reduces data retrieved.

GetCoverage Response Examples

(Coverage Responses are File Downloads,

No differences exist in output between versions, denoting that MetOcean addresses primarily the metadata returned from GetCapabilities and DescribeCoverage, as well as the addition of 3 new functions: DescribeCoverageCollection, GetPolygonCoverage, and GetCorridorCoverage)

 

GetCoverage Response Matrix

Link to full Example Followed by a

Response snippet (of XML showing high level functional XML tags)

https://docs.google.com/a/noaa.gov/document/d/1najVCRAKvpc8EQ2TFpPU4-o-d4OOsio6HbEHMmmfpWQ/edit?usp=drive_web

https://docs.google.com/document/d/1d-rK6hZyKny7T6BgD7diX3dYncFVswqyNFNCvLbs4ZU/edit

Ver 1.0 (KML File download)

Ver 2.0 (+ MetOcean)  (KML File download)

<?xml version="1.0" encoding="UTF-8"?>

<kml xmlns="http://earth.google.com/kml/2.2">

  <Document>

    <Style id="plainNumberIconStyle">

      <IconStyle>

        <Icon/>

      </IconStyle>

    </Style>

    <Placemark>

      <description>dewpoint-temperature</description>

      <styleUrl>#plainNumberIconStyle</styleUrl>

      <name>-3.7 °C</name>

      <TimeStamp>

        <when>2016-01-09T09:00:00Z</when>

      </TimeStamp>

      <Point>

        <coordinates>-12,65</coordinates>

      </Point>

      <ExtendedData>

        <Data name="model-name" displayName="NWP model">

          <value>UKMO Global/Full Domain 0.56 x 0.38</value>

        </Data>

        <Data name="model-run" displayName="Model run time">

          <value>2016-01-09T00:00:00Z</value>

        </Data>

        <Data name="model-forecast" displayName="Forecast offset">

          <value>PT9H</value>

        </Data>

        <Data name="validity" displayName="Data validity">

          <value>2016-01-09T09:00:00Z</value>

        </Data>

        <Data name="level" displayName="Height Level">

          <value>2m</value>

        </Data>

      </ExtendedData>

    </Placemark>

    <Placemark>

      <description>dewpoint-temperature</description>

      <styleUrl>#plainNumberIconStyle</styleUrl>

      <name>-3.1 °C</name>

      <TimeStamp>

        <when>2016-01-09T15:00:00Z</when>

      </TimeStamp>

      <Point>

        <coordinates>-12,65</coordinates>

      </Point>

      <ExtendedData>

        <Data name="model-name" displayName="NWP model">

          <value>UKMO Global/Full Domain 0.56 x 0.38</value>

        </Data>

        <Data name="model-run" displayName="Model run time">

          <value>2016-01-09T00:00:00Z</value>

        </Data>

        <Data name="model-forecast" displayName="Forecast offset">

          <value>PT15H</value>

        </Data>

        <Data name="validity" displayName="Data validity">

          <value>2016-01-09T15:00:00Z</value>

        </Data>

        <Data name="level" displayName="Height Level">

          <value>2m</value>

        </Data>

      </ExtendedData>

    </Placemark>

  </Document>

</kml>

<?xml version="1.0" encoding="UTF-8"?>

<kml xmlns="http://earth.google.com/kml/2.2">

  <Document>

    <Style id="plainNumberIconStyle">

      <IconStyle>

        <Icon/>

      </IconStyle>

    </Style>

    <Placemark>

      <description>dewpoint-temperature</description>

      <styleUrl>#plainNumberIconStyle</styleUrl>

      <name>0.9 °C</name>

      <TimeStamp>

        <when>2016-01-09T09:00:00Z</when>

      </TimeStamp>

      <Point>

        <coordinates>10.125,50.25</coordinates>

      </Point>

      <ExtendedData>

        <Data name="model-name" displayName="NWP model">

          <value>UKMO Global/Full Domain 0.56 x 0.38</value>

        </Data>

        <Data name="model-run" displayName="Model run time">

          <value>2016-01-09T00:00:00Z</value>

        </Data>

        <Data name="model-forecast" displayName="Forecast offset">

          <value>PT9H</value>

        </Data>

        <Data name="validity" displayName="Data validity">

          <value>2016-01-09T09:00:00Z</value>

        </Data>

        <Data name="level" displayName="Height Level">

          <value>2m</value>

        </Data>

      </ExtendedData>

    </Placemark>

    <Placemark>

      <description>dewpoint-temperature</description>

      <styleUrl>#plainNumberIconStyle</styleUrl>

      <name>1.0 °C</name>

      <TimeStamp>

        <when>2016-01-09T09:00:00Z</when>

      </TimeStamp>

      <Point>

        <coordinates>10.6875,50.25</coordinates>

      </Point>

      <ExtendedData>

        <Data name="model-name" displayName="NWP model">

          <value>UKMO Global/Full Domain 0.56 x 0.38</value>

        </Data>

        <Data name="model-run" displayName="Model run time">

          <value>2016-01-09T00:00:00Z</value>

        </Data>

        <Data name="model-forecast" displayName="Forecast offset">

          <value>PT15H</value>

        </Data>

        <Data name="validity" displayName="Data validity">

          <value>2016-01-09T09:00:00Z</value>

        </Data>

        <Data name="level" displayName="Height Level">

          <value>2m</value>

        </Data>

      </ExtendedData>

    </Placemark>

  </Document>

</kml>

DescribeCoverageCollection (new MetOcean function)

     DescribeCoverageCollection Request Example:

Version

Request

Link to full Example

WCS 2.0 + Met Ocean

https://dataservices-beta.metoffice.gov.uk/services/GlobEGRR/?SERVICE=WCS&VERSION=2.0.0&REQUEST=DescribeCoverageCollection&CoverageCollectionId=UKPPBEST&ReferenceTime=2015-10-27T00:00:00Z&key....

https://docs.google.com/document/d/1bPdvU_CWhCQ-qrboNeZs7C_ftQH5BapoEQVGDzoLqTQ/edit

                                                                       DescribeCoverageCollection Request Matrix

  WCS Ver 2.0 +    

  Met Ocean    

  Extensions

       Description

Strengths of proposed MetOcean over Ver1.0

(Where are we today vs where we want to be)

Weakness of proposed MetOcean over Ver1.0

(Where are we today vs where we want to be)

Benefits

(What are we looking

                                                                                                                                                                                                                                                                  to get by this move?)

CoverageCollectionID

KVP value =”UKPPBEST”.

This name is a grouping of similar coverages. In this case, UKPPBEST is the NWP “Best Availabile” UK model.

Allows for a strategic collection of coverages.

A user can then choose which coverage(ID) that is part of the collection, to gather further information on via a DescribeCoverage request (this is where element/parameter is found, on the coverage(ID) level, not the DescribeCoverageCollection level.

-This is a new way of thinking about

  geo-spatial coverages.

-There is an order that really needs to

  be followed for new users.

- A DescribeCoverageCollection

  request really needs to be

  undertaken BEFORE the

  DescribeCoverage request.

Allows for a strategic collection of similar coverages. 

ReferenceTime

KVP value = “2015-10-27T00:00:00Z

Using an optional “ReferenceTime” KVP in a DescribeCoverageCollection request will return CoverageID’s based only on that Reference Time. Thus, only differing Z levels within that specific Reference Time will be returned.

Reduces amount of data returned in a DescribeCoverageCollection request.

                                     DescribeCoverageCollection Response Examples:

Version

Response (snippet of XML showing high level functional XML tags)

Link to full Example

WCS 2.0 + Met Ocean

<metocean:CoverageCollectionDescriptions>

  <metocean:CoverageCollectionDescription>

  <metocean:CoverageCollectionDescription>

  <metocean:CoverageCollectionDescription>

  ……… (list of CoverageCollectionDescription continued as

           needed)

</metocean:CoverageCollectionDescriptions>

https://docs.google.com/document/d/1bPdvU_CWhCQ-qrboNeZs7C_ftQH5BapoEQVGDzoLqTQ/edit

WCS 2.0 + Met Ocean

<metocean:CoverageCollectionDescription   

    gml:id="CoverageCollectionDescription_

    UKPPBEST_2014-05-16T00.00.00Z">

  <metocean:coverageCollectionId>

    UKPPBEST

  </metocean:coverageCollectionId>

  <gml:name>Data Specifically for ITWIP Project</gml:name>

  <gml:boundedBy>

  <metocean:referenceTime>

  <metocean:sourceObservationProperty>

  <metocean:coverageIdList>

  </metocean:CoverageCollectionDescription>

DescribeCoveragCollection Response Matrix

Ver2.0 (+ MetOcean)

Description

Strengths of proposed MetOcean over Ver1.0

(Where are we today vs where we want to be)

Weakness of proposed MetOcean over Ver1.0

(Where are we today vs where we want to be

Benefits

(What are we looking

                                                                                                                                                                                                                                                                  to get by this move?)

<metocean:CoverageCollectionDescriptions>

-Groups a list of CoverageCollectionDescription

 elements, based off each specific Reference Time.

-Currently, their values are all equal to one of the 4

 models.

<gml:boundedBy>

-Provides grid upper and lower corner info

 of the coverageCollectionID, in this case, the model.

<gml:boundedBy> is  

 duplicated info if the value of each CoverageCollectionDescription is the same.

<metocean:referenceTime>

NOTE: Section removed in upcoming

covcoll:CoverageCollection namespace and OGC paper 15-044

-Model run time that differentiates each  

 CoverageCollectionID constituting the  

 coverageCollectionDescription list.

Denotes part of Collection, as well as use of ID’s

Must know ID name

Use of ID’s improves efficiency in future requests.

<metocean:sourceObservationProperty>

NOTE: Section removed in upcoming

covcoll:CoverageCollection namespace and OGC paper 15-044 (duplicated info returned in the DescribeCoverage)

-sourceObservationProperty and  

 subsequent SourceObservation 

 describes the entire coverageCollectionID.

NOTE: It is very similar to the SourceObservation returned in the DescribeCoverage response (under the <metocean:MetOceanCoverageMetadata section>), except it has Z level info and differentiation. It is strictly on the hierarchical level of Reference Time at this point (so gml:id’s contain only Ref Time info, w/out Z level info.

It is based off of the O&M model (child elements contained).

<metocean:SourceObservation  

   gml:id="so_GlobEGRR_

   2016-01-06T00.00.00Z">

     <om:phenomenonTime>

     <om:resultTime>

<om:procedure>

<om:parameter>

<om:observedProperty>

<om:featureOfInterest>

<om:result/>Follows common (O&M) standard.

</metocean:SourceObservation>

gml:id: Note, instance of Z level is gone in comparison to DescribeCoverage result.

<om:phenomenonTime>

NOTE: Section removed in upcoming

covcoll:CoverageCollection namespace and OGC paper 15-044 (duplicated info returned in the DescribeCoverage)

Denotes the entire period of time surrounding the valid times...eg., the entire time the forecast data applies too. Beginning time position and ending time position is relative to the Reference Time.

<om:phenomenonTime>

  <gml:TimePeriod    

    gml:id="tp_ForecastTime

            Range_GlobEGRR_

            2016-01-06T00.00.00Z">

    <gml:beginPosition>

      2016-01-06T09:00:00Z

    </gml:beginPosition>

    <gml:endPosition>

      2016-01-12T00:00:00Z

    </gml:endPosition>

  </gml:TimePeriod>

</om:phenomenonTime>

gml:id: Note, instance of Z level is gone in comparison to DescribeCoverage result.

Follows common (O&M) standard.

<om:resultTime>

NOTE: Section removed in upcoming

covcoll:CoverageCollection namespace and OGC paper 15-044 (duplicated info returned in the DescribeCoverage)

<om:resultTime   

          nilReason="unknown"/>

Null value, but required under O&M spec

<om:procedure>

NOTE: Section removed in upcoming

covcoll:CoverageCollection namespace and OGC paper 15-044 (duplicated info returned in the DescribeCoverage)

<om:procedure

       nilReason="inapplicable"/>

Null value, but required under O&M spec

<om:parameter>

NOTE: Section removed in upcoming

covcoll:CoverageCollection namespace and OGC paper 15-044 (duplicated info returned in the DescribeCoverage)

Provides Info denoting the name of the Coverage(ID) and the Reference Time.

<om:parameter>

  <om:NamedValue>

    <om:name      

      xlink:href="http://www.codes.

      wmo.int/GRIB2/table1.2/

      referenceTime"/>

    <om:value>

      <gml:TimeInstant

        gml:id="referencetime_

        GlobEGRR_2016-01-06

        T00.00.00Z">

        <gml:timePosition>

           2016-01-06T00:00:00Z

        </gml:timePosition>

      </gml:TimeInstant>

    </om:value>

  </om:NamedValue>

</om:parameter>

gml:id: Note, instance of Z level is gone in comparison to DescribeCoverage result.

<om:observedProperty>

NOTE: Section removed in upcoming

covcoll:CoverageCollection namespace and OGC paper 15-044 (duplicated info returned in the DescribeCoverage)

Provides Link to NWP Model info.

<om:observedProperty    

    xlink:href="http://codes.

    wmo.int/common/observation

-type/METCE/2013/NWP_Model"/>

Does not exist in this O&M capacity in Ver1.0 (link to model info).

<om:featureOfInterest>

NOTE: Section removed in upcoming

covcoll:CoverageCollection namespace and OGC paper 15-044 (duplicated info returned in the DescribeCoverage)

<om:featureOfInterest>

  <sams:SF_SpatialSamplingFeature  

    gml:id="ss_GlobEGRR_

    2016-01-06T00.00.00Z">

    <sam:type     

      xlink:href="http://www.opengis.

      net/def/samplingFeatureType/

      OGC-OM/2.0/SF_SamplingSurface"/>

      <sam:sampledFeature>

        <metocean:ModelDescription   

          gml:id="uuid.md_GlobEGRR_

          2016-01-06T00.00.00Z">

          <gml:identifier 

            codeSpace="urn:uuid:">

            md_GlobEGRR_2016-01-06

           T00.00.00Z

          </gml:identifier>

          <metocean:originatingcentre>

           unknown

          </metocean:originatingcentre>

          <metocean:modeltype>

            atmospheric

          </metocean:modeltype>

          <metocean:modelidentifier>

            GlobEGRR

          </metocean:modelidentifier>

          <metocean:geometryComponent>

           <metocean:ModelDomain>

            <metocean:horizontalProjection>

              <gml:Polygon                        

                gml:id="boundary-

                geometry_GlobEGRR_

                2016-01-06T00.00.00Z" uomLabels=

                "deg deg" axisLabels="Lat Lon"

                srsDimension="2"        

                srsName="http://www.opengis.

                net/def/crs/EPSG/0/

                4326">

                <gml:exterior>

                 <gml:LinearRing>

                   <gml:posList>-90

                     -180 90 -180 90

                     180 -90 180 -90

                     -180

                   </gml:posList>

                 </gml:LinearRing>

               </gml:exterior>

             </gml:Polygon>

           </metocean:horizontalProjection>

         </metocean:ModelDomain>

       </metocean:geometryComponent>

     </metocean:ModelDescription>

   </sam:sampledFeature>

   <sams:shape xlink:href="ss_GlobEGRR_

      2016-01-06T00.00.00Z"/>

  </sams:SF_SpatialSamplingFeature>

</om:featureOfInterest>

The O&M <featureOfInterest> allows for a detailed NWP model description (metocean:ModelDescription>).

This includes modelType, originator of model, and geometry components of the model. This is used to describe the x/y horizontal plane in a <gml:Polygon> element tag.

Allows for detailed description of model data coverage is derived from.

<om:result/>

NOTE: Section removed in upcoming

covcoll:CoverageCollection namespace and OGC paper 15-044 (duplicated info returned in the DescribeCoverage)

<om:result/>

<metocean:coverageIdList>

NOTE: Section has been updated to <covcoll:offeredCoverage> in upcoming

covcoll:CoverageCollection namespace and OGC paper 15-044.

<metocean:coverageIdList>

<wcs:CoverageSummary>

<wcs:CoverageSummary>

<wcs:CoverageSummary>

<wcs:CoverageSummary>

...cont as necessary.

metocean:coverageIdList

consists of the list of coverages (IDs) that belong to that specific CoverageCollectionID (UKPPBEST).

<wcs:CoverageSummary>

<wcs:CoverageId>

  UKPPBEST_2014-05-16T00.00.00Z_AGL

</wcs:CoverageId>

<wcs:CoverageSubtype>

  VerticalDependency

</wcs:CoverageSubtype>

<ows:Metadata    

  xlink:href="http://codes.wmo.

  int/grib2/codeflag/4.5/103">

<metocean:coverageDescription  

  coverageDescription="Specified Height

  Level Above Ground"/>

</ows:Metadata>

</wcs:CoverageSummary>

- Note, Vertical levels come

  into play in the

  Coverage(ID) names.

                        

             GetCorridorCoverage

     GetCorridorCoverage Request Example:

Version

Request (Large Vol of input info requires a POST)

Link to full Example

WCS 2.0 +

 Met Ocean

curl -x '' -X POST -H "Content-Type:text/xml" -d @./getCorridorCoverage-POST-request.xml 'https://dataservices-beta.metoffice.gov.uk/services/GlobEGRR?key=8c4b0f94-2820-42d2-8542-156180443b2c'

https://docs.google.com/document/d/1XDuEOzR8K91RDsbN2Cf8BaFg1y7cIJO-Zi21mrlSWes/edit

                                              Major XML tags in Request:

Overview

<metocean:GetCorridorCoverage>

   <wcs:Extension>

       <rsub:rangeSubset>

       <wcsCRS:GetCoverageCrs>

       <int:Interpolation>

       <metocean:OutputFeatureDefinition>

   </wcs:Extension>

   <wcs:CoverageId>

      <metocean:DimensionTrim>

      <metocean:DimensionTrim>

      <metocean:DimensionSlice>

      <wcs:format>

      <wcs:mediaType>

   </wcs:CoverageId>

<metocean:GetCorridorCoverage>

For this GetCorridorCoverage Request example, the route along a 4 dimensional trajectory from the UKPPBEST_2015-05-15T00.00.00Z_ISBL coverage is requested.

The Extension section is used to subset (limit/reduce) the Coordintate Reference System, Elements, and Interpolate how many data points should be included in a GetCorridorCoverage response.

The CoverageID section is used to define, describe, and subset (limit/reduce) the data returned in a GetCorridorCoverage response.

                       Contents of getCorridorCoverage-POST-request.xml:

      Details on XML tags in GetCorridorCoverage Request

           

<?xml version="1.0" encoding="UTF-8"?>

<metocean:GetCorridorCoverage>

    <wcs:Extension>

        <rsub:rangeSubset>

            <rsub:rangeComponent>temperature</rsub:rangeComponent>

        </rsub:rangeSubset>

        <wcsCRS:GetCoverageCrs>

            <wcsCRS:subsettingCrs>

                http://www.opengis.net/def/crs-combine?

                1=http://www.opengis.net/def/crs/EPSG/0/4326&amp;

                2=http://www.opengis.net/def/crs/EPSG/0/5701&amp;

                3=http://www.opengis.net/def/temporal/ISO8601

            </wcsCRS:subsettingCrs>

        </wcsCRS:GetCoverageCrs>

        <int:Interpolation>

            <int:InterpolationAxes>

                <int:InterpolationAxis interpolationMethod=

                    "http://www.opengis.net/def/interpolation/OGC/1/linear/samplesize=5"                    

                    axis="http://www.opengis.net/def/axis/OGC/1/Corridor_Time"/>

                <int:InterpolationAxis interpolationMethod=

                    "http://www.opengis.net/def/interpolation/OGC/1/linear/samplesize=5"

                    axis="http://www.opengis.net/def/axis/OGC/1/Corridor_Width"/>

                <int:InterpolationAxis interpolationMethod=

                    "http://www.opengis.net/def/interpolation/OGC/1/barycentric/

                     samplesize=5"

                     axis="http://www.opengis.net/def/axis/OGC/1/Corridor_Height" />

            </int:InterpolationAxes>

        </int:Interpolation>

        <metocean:OutputFeatureDefinition>

            <!-- Define the corridor width, height and resolution, notice that the

                   grid origin is   -->

            <!-- The road is divided up timewise into hourly intervals and the length of

                   each segment will depend on the average speed for each segment. →

            <metocean:Origin

                srsDimension="4" uomLabels="Km SamplePoint">

                0.0 0.0 0.0 0.0

            </metocean:Origin>

            <gmlrgrid:ReferenceableGridByArray gml:id="ex" dimension="4"

                   srsName="http://www.opengis.net/def/crs-combine?

                   1=http://www.opengis.net/def/crs/EPSG/0/4326

                   2=http://www.opengis.net/def/crs/EPSG/0/5701

                   3=http://www.opengis.net/def/temporal/ISO8601"

                   axisLabels="lat long height time" uomLabels="deg deg hPa

                   epoch_seconds">

                <gml:limits>

                    <gml:GridEnvelope>

                        <gml:low>0 0 0 0</gml:low>

                        <gml:high>5 5 5 5</gml:high>

                    </gml:GridEnvelope>

                </gml:limits>

                <gml:axisLabels>lat long height time</gml:axisLabels>

                <gml:posList>

                   00.0 -1.0 600 1445472000

                   00.0 -0.5 800 1445475600

                   00.0 -1.0 1100 1445479200

                   00.0  0.5 1300 1445482800

                   00.0 -1.0 1500 1445486400

                </gml:posList>

                <gmlrgrid:sequenceRule axisOrder="+1 +2 +3 +4">    

                    Linear</gmlrgrid:sequenceRule>

                </gmlrgrid:ReferenceableGridByArray>

        </metocean:OutputFeatureDefinition>

    </wcs:Extension>

    <wcs:CoverageId>

      GlobEGRR_2015-05-15T00.00.00Z_ISBL

      <!-- The origin is centre of the road i.e. the lateral extent  - 2.5 to 2.5 is relative to

           this -->

    <!-- The road is divided up into 500 segments which is easier to define rather than

           the length  -->

    <!-- The trajectory is sampled every hour as from 2012-05-15T00:00:00Z to

           2012-05-15T12:00:00Z  →

    </wcs:CoverageId>

    <metocean:DimensionTrim>

        <wcs:Dimension>Corridor_Width</wcs:Dimension>

        <metocean:TrimLow uomLabels="Km">-20.5</metocean:TrimLow>

        <metocean:TrimHigh uomLabels="Km">20.5</metocean:TrimHigh>

    </metocean:DimensionTrim>

    <metocean:DimensionTrim>

        <wcs:Dimension>Corridor_Height</wcs:Dimension>

        <metocean:TrimLow uomLabels="Km">-0.02</metocean:TrimLow>

        <metocean:TrimHigh uomLabels="Km">0.02</metocean:TrimHigh>

    </metocean:DimensionTrim>

    <metocean:DimensionSlice>

        <wcs:Dimension>ValidityTime</wcs:Dimension>

        <metocean:SlicePoint uomLabels="ISO8601">2015-05-15T09.00.00Z

        </metocean:SlicePoint>

    </metocean:DimensionSlice>

    <wcs:format>JSON</wcs:format>

    <wcs:mediaType></wcs:mediaType>

</metocean:GetCorridorCoverage>

 

   → The “temperature” elements is being subsetted to

        reduce other elements that exist in that coverage

        from returning.

   → ??

   → Interpolation denotes how many data points should

       be included horizontally (x), and vertically (z), and

       time (t) thru the use of the “samplesize” value (5).

    → Defines output: corridor width, height, resolution,  

         grid origin.

   

    → Denotes grid origin for dimensions (4).

    Since grid is irregularly shaped (in z level),

         Referenceable Grid defines axis units.

     Defines limits of grid envelope for each of 4

        dimensions.

    → Defines axis labels.

    → Denotes 5 (lat/long/altitude/time) positions to

        retrieve data for as compared (referenced) from

        axis origins.

Denotes that there are 4 dimensions (positions) in the    

     above <gml:posList> element indexing, and it is linear          

     in nature.

 Denotes the Coverage(ID) queried

→ Dimension Trim denotes limits (low and high), along

     that dimension, data is to be returned from.

     Here, it is along the x axis (width).

→ Dimension Trim denotes limits (low and high), along

     that dimension, data is to be returned from.

     Here, it is along the z axis (height).

→ Dimension Slice reduces the number of dimensions (4

     Dim to 3 Dim). Here, there is a restriction of the

     response to a single point in time.

→ Format of returned data as requested, NetCDF3,

    JSON, KML, for example

 → Media Type requested

      GetPolygonCoverage

                GetPolygonCoverage Request Example:

Version

Request (Large Vol of input info requires a POST)

Link to full Example

WCS 2.0 +

 Met Ocean

curl -x '' -X POST -H "Content-Type:text/xml" -d @./getPolygonCoverage-POST-request.xml 'https://dataservices-beta.metoffice.gov.uk/services/GlobEGRR?key=8c4b0f94-2820-42d2-8542-156180443b2c'

https://docs.google.com/document/d/1rB6bfBXfSbv23WY0BRy6ClXVcYztbdyYs17xBcG50fQ/edit

                                              Major XML tags in Request:

Overview

<metocean:GetPolygonCoverage>

   <wcs:Extension>

       <rsub:rangeSubset>

       <wcsCRS:GetCoverageCrs

       <metocean:OutputFeatureDefinition>

   </wcs:Extension>

   <wcs:CoverageId>

      <metocean:DimensionSlice>

      <metocean:DimensionSlice>

      <wcs:format>

      <wcs:mediaType>

   </wcs:CoverageId>

<metocean:GetPolygonCoverage>

For this GetPolygonCoverage Request example, the area within a polygon from the GlobEGRR_2014-05-15T00.00.00Z_AGL coverage is requested.

The Extension section is used to subset (limit/reduce) the Coordintate Reference System, Elements, and Interpolate how many data points should be included in a GetPolygonCoverage response.

The CoverageID section is used to define, describe, and subset (limit/reduce) the data returned in a GetPolygonCoverage response.

   Contents of getPolygonCoverage-POST-request.xml:

      Details on XML tags in GetPolygonCoverage Request

           

<?xml version="1.0" encoding="UTF-8"?>

<metocean:GetPolygonCoverage>

    <wcs:Extension>

        <rsub:rangeSubset>

            <rsub:rangeComponent>temperature</rsub:rangeComponent>

        </rsub:rangeSubset>

        <wcsCRS:GetCoverageCrs>

            <wcsCRS:subsettingCrs>

                http://www.opengis.net/def/crs-combine?

                1=http://www.opengis.net/def/crs/EPSG/0/4326

            </wcsCRS:subsettingCrs>

        </wcsCRS:GetCoverageCrs>

        <metocean:OutputFeatureDefinition>

            <metocean:Origin

                srsDimension="2" uomLabels="deg deg">

                50.0 -2.5

            </metocean:Origin>

            <gmlrgrid:ReferenceableGridByArray gml:id="ey" dimension="2"

                   srsName="http://www.opengis.net/def/crs/EPSG/0/4326"

                   axisLabels="lat long" uomLabels="deg deg">

                <gml:limits>

                    <gml:GridEnvelope>

                        <gml:low>0 0</gml:low>

                        <gml:high>7 7</gml:high>

                    </gml:GridEnvelope>

                </gml:limits>

                <gml:axisLabels>lat long</gml:axisLabels>

                <gml:posList>

             21.0731 -017.1335

        13.4509 -016.3124

        04.1253 -007.2258

        04.3355 -001.5600

        06.2924 003.2023

        04.0222 009.5037

        -02.2736 009.1859

        -12 14

        -16.1756 011.5711

        -34.0058 018.4830

        -34.0942 026.2201

        -30.1749 031.1720

        -15.3722 040.1514

        -02.5912 040.0441

        4 48.5

        12.1240 051.0908

        10.4959 043.0359

        30.2655 031.1720

        32.4141 020.5504

        30.2655 020.0220

        33.4327 010.0110

        37.1801 007.4403

        35.4447 -005.2657

        27.2218 -013.4239

        21.0731 -017.1335

                </gml:posList>

                <gmlrgrid:sequenceRule axisOrder="+1 +2">    

                    Linear</gmlrgrid:sequenceRule>

                </gmlrgrid:ReferenceableGridByArray>

        </metocean:OutputFeatureDefinition>

    </wcs:Extension>

    <wcs:CoverageId>

      GlobEGRR_2015-05-15T00.00.00Z_AGL

    </wcs:CoverageId>

    <metocean:DimensionSlice>

        <wcs:Dimension>ValidityTime</wcs:Dimension>

        <metocean:SlicePoint uomLabels="ISO8601">2015-05-15T09.00.00Z

        </metocean:SlicePoint>

    </metocean:DimensionSlice>

    <metocean:DimensionSlice>

        <wcs:Dimension>ValidityTime</wcs:Dimension>

        <metocean:SlicePoint uomLabels="ISO8601">2015-05-15T12.00.00Z

        </metocean:SlicePoint>

    </metocean:DimensionSlice>

    <wcs:format>JSON</wcs:format>

    <wcs:mediaType></wcs:mediaType>

</metocean:GetPolygonCoverage>

 

 

  → The “temperature” element is being subsetted to

        reduce other elements that exist in that coverage

        from returning.

   → ??

   → Denotes grid origin for dimensions (2).

    Since grid is irregularly shaped,

         Referenceable Grid defines axis units.

     Defines limits of grid envelope for each of 2

        dimensions.

   

 → Defines axis labels.

    → Denotes 25 (lat/long) positions to retrieve data for as

        compared (referenced) from axis origins.

    → Denotes that there are 2 dimensions (positions) in the    

       above <gml:posList> element indexing, and it is linear          

       in nature.

    → Denotes the Coverage(ID) queried.

   → Dimension Slice reduces the number of dimensions.

        Here, there is a restriction of the response to a single

        point in time (2015-05-15T09.00.00Z).

   → Dimension Slice reduces the number of dimensions.

        Here, there is a restriction of the response to a second

        single point in time (2015-05-15T12.00.00Z).

   → Format of returned data as requested, NetCDF3,

       JSON, KML, for example.

    → Media Type requested