WCS 2.0 MetOcean Profile

WCS 2.0 MetOcean Profile
?
?
CF-NetCDF
MetOcean Coverage Data
MetOcean Application Profile
MetOcean Coverage Data
MetOcean Coverages
• Numerical model data
• Multi-dimensional (... , t, z, y, x)
• Each coverage represents a single phenomena
(e.g. Air temperature / sea surface salinity)
Example format encodings include:
GRIB, CF-NetCDF, BUFR and others
Here we will focus on data encoded in CF-NetCDF as
an example of MetOcean coverage data
MetOcean Coverages
The purpose of the CF conventions is to require
conforming datasets to contain sufficient metadata
that they are self-describing...
including physical units if appropriate, and that each
value can be located in space (relative to earth-based
coordinates) and time.
Climate and Forecast (CF) Metadata Conventions
MetOcean Coverages
Example 1
MetOcean Coverages
Example 2
MaskedCoverage
MetOcean MaskedCoverage
2D Time-height mask
Example: 1D Height mask
height
(T+12)
(T+6)
MetOcean MaskedCoverage
height
mask
3D Coverage
1D Mask
(broadcasted)
(T+6)
MetOcean MaskedCoverage
4D Coverage
2D Mask
(broadcasted)
(T+6)
(T+6)
(T+12)
(T+12)
height
mask
(T+6)
(T+12)
MetOcean MaskedCoverage
MaskedCoverage
4D Coverage
(T+6)
Coverage
2D Mask
(broadcasted)
(T+6)
(T+6)
(T+12)
(T+12)
(T+12)
MetOcean MaskedCoverage
(T+12)
MetOcean Application Profile MaskedCoverage
4D Coverage (t, h, y, x), 2D TimeHeightMask (t, h)
MetOcean MaskedCoverage
Phenomena
Mask
WCS 2.0 MaskedCoverage Extension
nD Coverage, nD Mask
CoverageCollection
Coverage Collections
• The Coverage collection pattern can be as deep as required
• The lowest layer contains the actual coverage identifiers
• A new operation “DescribeCoverageCollection” exposes this
structure
• Nesting is arbitrary
• Not concerned with discovery (anticipate the use of catalogue to
discover which CoverageId you require)
GetCoverageByPolygon
GetCoverageByPolygon
GetCoverageByCorridor
GetCoverageByCorridor
A GetCoverageByCorridor request extracts data from a
MaskedCoverage along a specified path and returns them
as a coverage. The result coverage can have different
dimensions, depending on the type of corridor extraction.
GetCoverageByCorridor
Name
Definition
Data type
Multiplicity
climateCubeId
Coverage identifier of the Climate
Cube to extract corridor from
NCName
One
(mandatory)
path
Path along which to extract the
corridor
GML::ReferenceableG
ridByArray
One
(mandatory)
extent
Specification of buffer around path
non-empty list of
AxisExtent
One
(mandatory)
axis
Axis name indicating direction of
buffer extent
NCName
One
(mandatory)
bufferExtent
extent around path in specified axis
direction
Data type depending on
type of axis
measurement
One
(mandatory)
interpolation
Interpolation method to be applied
along this axis, if needed
(default: unspecified, left to server)
anyURI
Zero or one
(optional)
GetCoverageByCorridor
Evaluation of subsetting
path ((-1,1), (2,2), (4,6))
and no extent specification
against voxels using
“voxel-in-center” semantics
and “nearest-neighbor”
interpolation
Testing and Visualisation
Application Profile
Draft proposal and prototype
Use
Cases
Sample
XML
Requests
Web Clients
Prototype Web Client
Applications
HPC
Visual
Weather
OpenLayers/Cesium
JSON
WCS 2.0
Prototype Web Client
Applications
Browser (Javascript)
Server (WCS 2.0)
XML Post
JSON
Cesium
OpenLayers Flight Planner
OpenLayers Wind Speed
OpenLayers Route Planner
OpenLayers Statistics
Python Test Harness
Test Environment
HPC
Visual
Weather
Test
Harness
(Python)
Google Earth
KML
Iris
WCS 2.0
NetCDF3
Iris
http://scitools.org.uk/
Dimension Slice
Slice Request
<?xml version="1.0" encoding="UTF-8"?>
<wcs:GetCoverage xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:wcs="http://www.opengis.net/wcs/2.0"
xmlns:wcsCRS="http://www.opengis.net/wcs_service-extension_crs/1.0"
xmlns:int="http://www.opengis.net/WCS_service-extension_interpolation/1.0"
xmlns:rsub="http://www.opengis.net/wcs/range-subsetting/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:metocean="http://def.wmo.int/metce/2013/metocean"
service="WCS" version="2.0.0">
<wcs:Extension>
<!--Range-->
<rsub:rangeSubset>
Results
<?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>UKPPNOW_10m_Max_Gust_Speed_KT</description>
<styleUrl>#plainNumberIconStyle</styleUrl>
<name>11.0 kt</name>
Visualisation
Trim Request
Trim Request
<?xml version="1.0" encoding="UTF-8"?>
<wcs:GetCoverage xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:wcs="http://www.opengis.net/wcs/2.0"
xmlns:wcsCRS="http://www.opengis.net/wcs_service-extension_crs/1.0"
xmlns:int="http://www.opengis.net/WCS_service-extension_interpolation/1.0"
xmlns:rsub="http://www.opengis.net/wcs/range-subsetting/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:metocean="http://def.wmo.int/metce/2013/metocean"
service="WCS" version="2.0.0">
<wcs:Extension>
<rsub:rangeSubset>
<rsub:rangeComponent>
UKMO_Global_Temperature</rsub:rangeComponent>
</rsub:rangeSubset>
<wcsCRS:GetCoverageCrs>
Results
<?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>UKMO_Global_Temperature</description>
<styleUrl>#plainNumberIconStyle</styleUrl>
<name>14.4 ??C</name>
<TimeStamp>
<when>2014-09-18T00:00:00Z</when>
</TimeStamp>
Visualisation
Polygon Use Case
Polygon Request
<?xml version="1.0" encoding="UTF-8"?>
<metocean:GetPolygonCoverage xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:wcs="http://www.opengis.net/wcs/2.0"
xmlns:metocean="http://def.wmo.int/metce/2013/metocean"
xmlns:wcsCRS="http://www.opengis.net/wcs_service-extension_crs/1.0"
xmlns:int="http://www.opengis.net/WCS_service-extension_interpolation/1.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:rsub="http://www.opengis.net/wcs/range-subsetting/1.0"
xmlns:gmlrgrid="http://www.opengis.net/gml/3.3/rgrid"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
service="WCS" version="2.0.0"
xsi:schemaLocation="http://www.opengis.net/wcs/2.0 http://schemas.opengis.ne
http://www.opengis.net/wcs/crs/1.0 https://raw.github.com/EOxServer/schemas/
http://www.opengis.net/WCS_service-extension_interpolation/1.0 file:/C:/Users/R
http://def.wmo.int/metce/2013/metocean file:/C:/Users/Rocky/WCS/MOWCS3/sc
http://www.opengis.net/wcs/range-subsetting/1.0 file:/C:/Users/Rocky/WCS/MO
<wcs:Extension>
<rsub:rangeSubset>
Results
{
"coveragePolygonData": [
{
"values": [
285.7590317726137,
286.1252427101137,
286.3693833351137,
286.6135239601137,
286.4914536476137,
T}? }?0E?!Z!Z!Z!Z!Z!Z"?%?'?'?'?'?'?'?'?'??????????p?p?p?p?p?p?????p?p?p?
p??????????????????????????????????????$?$?$?$?$?$???????????$?$?$?
$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?
$?$?$?$?$?????????????????????????p?p?p?p?p?p?????p?p?p?
p??????????????????????????????????????$?$?$?$?$?$?????????????$?$?
$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?
$?$?$?$?$?$?$?????????????????????p?p?p?p?p?p?????p?p?p?
p???????????????????????????????????$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?
$?$?$?$?$?$?$?$?$?$?$?$?$?$?$?$???$?$?$?$???????$?$?$?$???????$?$?
Visualisation (Iris)
Corridor Use Cases
Planes, Trains and Automobiles
Volume = dLat x dLon x dAlt x dTime
Ship Tracks Data
-75.000,36.500,201401220000
-74.983,36.497,201401220600
-72.558,36.001,201401221132
-71.273,35.716,201401221200
-70.112,35.930,201401221800
-67.594,36.352,201401222309
-66.339,36.541,201401230000
-65.050,36.797,201401230600
-62.477,37.263,201401230947
-60.905,37.517,201401231200
-59.979,37.905,201401231800
-57.592,38.852,201401232251
-55.142,39.749,201401240000
-54.635,39.926,201401240600
-52.642,40.542,201401241200
-50.088,41.266,201401241358
-48.360,41.715,201401241800
-47.458,41.652,201401250000
-44.778,41.422,201401250503
-42.120,41.130,201401250600
-41.704,41.079,201401251200
-39.463,41.082,201401251800
-36.805,41.028,201401252000
-35.026,40.958,201401260000
-34.169,40.827,201401260600
-31.590,40.392,201401261046
-29.046,39.899,201401261200
Ship Tracks Request
<?xml version="1.0" encoding="UTF-8"?>
-75.000,36.500,201401220000
<metocean:GetCorridorCoverage
xmlns:xlink="http://www.w3.org/1999/xlink"
-74.983,36.497,201401220600
-72.558,36.001,201401221132
xmlns:wcs="http://www.opengis.net/wcs/2.0"
-71.273,35.716,201401221200
xmlns:metocean="http://def.wmo.int/metce/2013/metocean"
-70.112,35.930,201401221800
-67.594,36.352,201401222309
xmlns:wcsCRS="http://www.opengis.net/wcs_service-extension_crs/1.0"
-66.339,36.541,201401230000
xmlns:int="http://www.opengis.net/WCS_service-extension_interpolation/1.0"
-65.050,36.797,201401230600
xmlns:gml="http://www.opengis.net/gml/3.2"
-62.477,37.263,201401230947
-60.905,37.517,201401231200
xmlns:rsub="http://www.opengis.net/wcs/range-subsetting/1.0"
-59.979,37.905,201401231800
xmlns:gmlrgrid="http://www.opengis.net/gml/3.3/rgrid"
-57.592,38.852,201401232251
-55.142,39.749,201401240000
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-54.635,39.926,201401240600
service="WCS" version="2.0.0"
-52.642,40.542,201401241200
xsi:schemaLocation="http://www.opengis.net/wcs/2.0
http://schemas.opengis.
-50.088,41.266,201401241358
-48.360,41.715,201401241800
http://def.wmo.int/metce/2013/metocean
file:/C:/Users/Rocky/WCS/MOWCS3/
-47.458,41.652,201401250000
http://www.opengis.net/wcs/crs/1.0
https://raw.github.com/EOxServer/schema
-44.778,41.422,201401250503
-42.120,41.130,201401250600
http://www.opengis.net/WCS_service-extension_interpolation/1.0
file:/C:/Users
-41.704,41.079,201401251200
http://www.opengis.net/wcs/range-subsetting/1.0
https://raw.github.com/EOxS
-39.463,41.082,201401251800
<wcs:Extension>
-36.805,41.028,201401252000
-35.026,40.958,201401260000
-34.169,40.827,201401260600
-31.590,40.392,201401261046
-29.046,39.899,201401261200
Visualisation (Iris)
Gap
Gap
-75.000,36.500,201401220000
-74.983,36.497,201401220600
-72.558,36.001,201401221132
-71.273,35.716,201401221200
-70.112,35.930,201401221800
-67.594,36.352,201401222309
-66.339,36.541,201401230000
-65.050,36.797,201401230600
-62.477,37.263,201401230947
-60.905,37.517,201401231200
-59.979,37.905,201401231800
-57.592,38.852,201401232251
-55.142,39.749,201401240000
-54.635,39.926,201401240600
-52.642,40.542,201401241200
-50.088,41.266,201401241358
-48.360,41.715,201401241800
-47.458,41.652,201401250000
-44.778,41.422,201401250503
-42.120,41.130,201401250600
-41.704,41.079,201401251200
-39.463,41.082,201401251800
-36.805,41.028,201401252000
-35.026,40.958,201401260000
-34.169,40.827,201401260600
-31.590,40.392,201401261046
-29.046,39.899,201401261200
Aerial Trajectory
Request
<?xml version="1.0" encoding="UTF-8"?>
<metocean:GetCorridorCoverage xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:wcs="http://www.opengis.net/wcs/2.0"
xmlns:metocean="http://def.wmo.int/metce/2013/metocean"
xmlns:wcsCRS="http://www.opengis.net/wcs_service-extension_crs/1.0"
xmlns:int="http://www.opengis.net/WCS_service-extension_interpolation/1.0"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:rsub="http://www.opengis.net/wcs/range-subsetting/1.0"
xmlns:gmlrgrid="http://www.opengis.net/gml/3.3/rgrid"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
service="WCS" version="2.0.0"
xsi:schemaLocation="http://www.opengis.net/wcs/2.0
http://schemas.opengis.net/wcs/2.0/wcsGetCoverage.xsd
http://def.wmo.int/metce/2013/metocean
file:/C:/Users/Rocky/WCS/MOWCS3/schemas/wcsMetOceanCommon.xsd
http://www.opengis.net/wcs/crs/1.0
https://raw.github.com/EOxServer/schemas/master/wcs/crs/1.0/wcsCrs.xsd
http://www.opengis.net/WCS_service-extension_interpolation/1.0
Visualisation (Iris)
•Static
•No Time on map?
•Corridor height?
Alternative Visualisation
Web Processing Services
• Moves business logic to server
• Statistical processing example
• Call to WCS
• Call custom, non OGC operation
• Can be used to return a decision rather than
weather data (eg – fly/don’t fly)
• WPS chaining – build up complexity from
smaller components
• Consider network traffic and data serialisation
Probabilistic data and ensembles
“How likely is it
to rain
tomorrow?”
Probabilistic data and ensembles
Ensembles in WCS2.0
Ensemble No.
Dimensions:
Latitude
Longitude
Altitude
Model Run Time
Forecast time
Ensemble Number
WCS2.0 MetOcean
extensions – future changes
• Variable corridor height and width
• Time/segment length
• Multiple polygons in single request
• Perpendicular corridors - use locus instead
• Esemble Support
Ens.No.
Next steps
Next Steps
1. Fast track MetOcean profile containing
MaskedCoverage, CoverageCollection,
GetCoverageByPolygon,
GetCoverageByCorridor
2. Met Office use profile for internal and external
services and for collaboration
3. Make generic capabilities (e.g.
CoverageCollection) available to a wider
audience through WCS 2.0 extensions