WCS 2.0 MetOcean Profile - Europa · WCS 2.0 MetOcean Profile ? ? CF-NetCDF MetOcean Coverage Data...

Preview:

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

Recommended