Upload
others
View
7
Download
1
Embed Size (px)
Citation preview
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
Climate and Forecast (CF) Metadata Conventions
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.
MetOcean Coverages Example 1
MetOcean Coverages Example 2
MaskedCoverage
height
MetOcean MaskedCoverage
(T+6)
2D Time-height mask
(T+12)
Example: 1D Height mask
height
mask
MetOcean MaskedCoverage
(T+6)
3D Coverage 1D Mask
(broadcasted)
MetOcean MaskedCoverage
height
mask 4D Coverage 2D Mask
(broadcasted)
(T+6) (T+6)
(T+12) (T+12)
(T+6)
(T+12)
MetOcean MaskedCoverage
(T+6)
(T+12)
4D Coverage
(T+6)
(T+12)
(T+6)
(T+12)
2D Mask
(broadcasted)
Coverage MaskedCoverage
MetOcean MaskedCoverage
(T+12)
MetOcean Application Profile MaskedCoverage
4D Coverage (t, h, y, x), 2D TimeHeightMask (t, h)
Mask
MetOcean MaskedCoverage
Phenomena
WCS 2.0 MaskedCoverage Extension
nD Coverage, nD Mask
CoverageCollection
• 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)
Coverage Collections
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.
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::ReferenceableGridByArray
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
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
OpenLayers/Cesium JSON
Prototype Web Client Applications
HPC Visual Weather
WCS 2.0
Prototype Web Client Applications
Server (WCS 2.0) Browser (Javascript)
JSON
XML Post
Cesium
OpenLayers Flight Planner
OpenLayers Wind Speed
OpenLayers Route Planner
OpenLayers Statistics
Python Test Harness
Test Harness (Python)
Test Environment
HPC Visual Weather
WCS 2.0 Iris NetCDF3
Google Earth KML
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
-28.563,39.799,201401261800
-26.160,39.543,201401270000
-23.215,39.160,201401270222
-22.139,39.000,201401270600
-20.325,38.765,201401271200
-17.480,38.336,201401271501
-17.086,38.270,201401271800
-14.943,37.700,201401280000
-12.495,36.989,201401280247
-12.308,36.932,201401280600
-9.986,36.509,201401281200
-7.500,36.000,201401281202
Ship Tracks Request
-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
-28.563,39.799,201401261800
-26.160,39.543,201401270000
-23.215,39.160,201401270222
-22.139,39.000,201401270600
-20.325,38.765,201401271200
-17.480,38.336,201401271501
-17.086,38.270,201401271800
-14.943,37.700,201401280000
-12.495,36.989,201401280247
-12.308,36.932,201401280600
-9.986,36.509,201401281200
-7.500,36.000,201401281202
<?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. http://def.wmo.int/metce/2013/metocean file:/C:/Users/Rocky/WCS/MOWCS3/ http://www.opengis.net/wcs/crs/1.0 https://raw.github.com/EOxServer/schema http://www.opengis.net/WCS_service-extension_interpolation/1.0 file:/C:/Users http://www.opengis.net/wcs/range-subsetting/1.0 https://raw.github.com/EOxS <wcs:Extension>
-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
-28.563,39.799,201401261800
-26.160,39.543,201401270000
-23.215,39.160,201401270222
-22.139,39.000,201401270600
-20.325,38.765,201401271200
-17.480,38.336,201401271501
-17.086,38.270,201401271800
-14.943,37.700,201401280000
-12.495,36.989,201401280247
-12.308,36.932,201401280600
-9.986,36.509,201401281200
-7.500,36.000,201401281202
Visualisation (Iris)
Ga
p
Ga
p
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
Ensem
ble
No.
Dimensions:
Latitude
Longitude
Altitude
Model Run Time
Forecast time Ensemble Number
Ensembles in WCS2.0
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.N
o.
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