WCS Short Guide :: © 2014 Peter Baumann
Peter Baumann
Jacobs University | rasdaman GmbH
OGC WCS: A Short Guide
[gamingfeeds.com]
WCS Short Guide :: © 2014 Peter Baumann
Overview
Introduction
Coverage data: the OGC Coverage Model
Coverage services: the WCS Suite
Conformance Testing
Summary
2
WCS Short Guide :: © 2014 Peter Baumann
Features & Coverages
The basis of all: geographic feature
- = abstraction of a real world phenomenon [OGC, ISO]
Special kind of feature: coverage
- = space-time varying multi-dimensional phenomenon
Usually, Big Geo Data are coverages
WCS Short Guide :: © 2014 Peter Baumann
Coverage Data & Services
coverage = digital representation of some space-time verying phenomenon
- n-D, discretized or continuous, testable down to pixel level
- uniform handling of space & time
Web Coverage Service (WCS) =
- modular, testable, scalable
- Core mission: Get original data (or subset thereof), suitable for further processing
Starting WCS 2, coverage data & service model separated
- Coverages servable by WFS, WMS, WCS, WCPS, WPS, SOS, ...
- WCS, WCPS specialized on coverages
WCS Short Guide :: © 2014 Peter Baumann
feature coverage
data
WMS
images data
meta
data
WCPS
WCS-T
WCS
FE
WFS-T
WFS
CQL
CS-T
CS-W
(Part of) The OGC Standards Quilt
• WMS "portrays spatial data pictures"
• WCS: "provides data + descriptions; data with original semantics,
may be interpreted, extrapolated, etc.“
[09-110r3]
5
WCS Short Guide :: © 2014 Peter Baumann
Overview
Introduction
Coverage data: the OGC Coverage Model
Coverage services: the WCS Suite
Conformance Testing & Implementations
Summary
7
WCS Short Guide :: © 2014 Peter Baumann
Coverage Definition
class GML 3.2.1 Application Schema for Coverages
«FeatureType»
Coverage
«FeatureType»
GML::Feature
«Union»
GML::DomainSet
«Union»
GML::RangeSet
«type»
SWE Common::DataRecord
rangeSetdomainSet rangeType
contains hook
for metadata
ISO 19123
is abstract
→ many different
implementations
possible
→ not per se
interoperable
OGC coverage std
is concrete and
interoperable
[OGC 09-146r2]
from SWE Common
WCS Short Guide :: © 2014 Peter Baumann
MultiSolid
Coverage
OGC Coverage Types
Coverage = digital representation of
space/time varying phenomenon
- n-D!
«FeatureType»AbstractCoverage
MultiPoint
Coverage
MultiCurve
Coverage
MultiSurface
Coverage
Grid
Coverage
Referenceable
GridCoverage
as per GML 3.2.1
Rectified
GridCoverage
WCS Short Guide :: © 2014 Peter Baumann
Coverage Subtypes
GridCoverage:
- Obsoleted, should not be used
for referenced data
RectifiedGridCoverage:
- Grid which is equidistant, straight
- Georeferenced
- Ex: ortho imagery, climate data cubes
ReferenceableGridCoverage
- Grid may not be equidistant, not straight
- May not be georeferenced
- Ex: L0 satellite data, curved grids,
triangular meshes, hexagonal grids
WCS Short Guide :: © 2014 Peter Baumann
Gridded Coverage Types
Not georeferenced, „just pixels“
- GMLCOV::GridCoverage
Georeferenced, regular
- GMLCOV::RectifiedGridCoverage
Georeferenced, 1+ irregular axes
- All axes irregular: GML 3.3
ReferenceableGridByVectors *
- GMLCOV::ReferenceableGridCoverage
Georeferenced, 1+ axes warped
- All axes warped: GML 3.3 ReferenceableGridByArray *
- GMLCOV::ReferenceableGridCoverage
[Campalani 2013]
*) CR to GML planned
Mix, eg, with
sat image
timeseries
WCS Short Guide :: © 2014 Peter Baumann
Sample Grid Coverage (GML)
samples for each coverage type
provided with specification bundle
WCS Short Guide :: © 2014 Peter Baumann
Sample MultiSolidCoverage
WCS Short Guide :: © 2014 Peter Baumann
Coverage Encoding
Pure GML: complete coverage, in GML
Special Format: other suitable file format (ex: MIME type “image/tiff”)
Multipart-Mixed: multipart MIME, type “multipart/mixed”
GML Coverage
Domain set
Range type
Range set
App Metadata
GML Coverage
Domain set
Range type
xlink
App Metadata
NetCDF file
NetCDF
Domain set
Range type
Range set
App Metadata
GeoTIFF
Domain set
Range type
Range set
App Metadata
WCS Short Guide :: © 2014 Peter Baumann
Sample Mixed Encoding: TIFF
Content-Type: Multipart/Related; boundary=wcs;
start="GML-Part"
type="text/xml"
--wcs
Content-type: text/xml
Content-ID: GML-Part
<?xml version="1.0" …>
<gmlcov:RectifiedGridCoverage …>
<gml:domainSet>…</gml:domainSet>
<gml:rangeSet>
<gml:File>
<gml:rangeParameters xlink:href="grey.tif"
xlink:role="http://www.opengis.net/spec/WCS_coverage-encoding_geotiff/1.0/"
xlink:arcrole="fileReference"/>
<gml:fileReference>grey.tif</gml:fileReference>
<gml:fileStructure/>
<gml:mimeType>image/tiff</gml:mimeType>
</gml:File>
</gml:rangeSet>
<gmlcov:rangeType>…</gmlcov:rangeType>
</gmlcov:RectifiedGridCoverage>
--wcs
Content-Type: image/tiff
Content-Description: coverage data
Content-Transfer-Encoding: binary
Content-ID: grey.tif
Content-Disposition: INLINE
...binary TIFF data...
--wcs--
How to request
a particular encoding
from a server?
See later!
WCS Short Guide :: © 2014 Peter Baumann
Adding Metadata To Coverages
Coverage has slot „metadata“ allowing to link in <any> kind of metadata
- WCS will deliver this, even without knowing contents
Ex: EO-WCS
GetCoverage
result
Inverse possible, too:
metadata record
contains (or links)
coverage
WCS Short Guide :: © 2014 Peter Baumann
Overview
Introduction
Coverage data: the OGC Coverage Model
Coverage services: the WCS Suite
Conformance Testing & Implementations
Summary
17
WCS Short Guide :: © 2014 Peter Baumann
WCS Core
WCS Short Guide :: © 2014 Peter Baumann
WCS Service Model: Structure
Hook for future service-
related coverage metadata
WCS offering
can be seen as
a single virtual
document
Notwithstanding
other actual
encodings
[OGC 09-110r4]
GML coverage
WCS Short Guide :: © 2014 Peter Baumann
WCS Service Model: Operations
GetCapabilities
- what service extensions?
- What formats? CRSs?
- What coverages?
DescribeCoverage
- coverage metadata
GetCoverage
- coverage, or subset thereof
20
WCS Short Guide :: © 2014 Peter Baumann
Web Coverage Service (WCS)
WCS Core: Simple & efficient access to n-D coverages & subsets
- Format conversion on the fly
- subset = trim | slice
WCS Extensions: for optional functionality facets
WCS Application Profiles: domain-oriented bundling
- EO, MetOcean, ...
WCS Short Guide :: © 2014 Peter Baumann
WC GetCoverage: Retrieve Coverage (Subset)
Download a coverage (or a subset thereof), values guaranteed unchanged
Ex: „download coverage c001“
Ex: „coverage c001, lat/long cutout, time slice t=2009-11-06T23:20:52Z”
Ex: “coverage c001, in GeoTIFF”
http://www.acme.com/wcs ? SERVICE=WCS & VERSION=2.0
& REQUEST=GetCoverage & COVERAGEID=c001
& SUBSET=Long(100,200) & SUBSET=Lat(50,60)
& SUBSET=phenomenon-time("2009-11-06T23:20:52Z")
http://www.acme.com/wcs ? SERVICE=WCS & VERSION=2.0
& REQUEST=GetCoverage & COVERAGEID=c001
http://www.acme.com/wcs ? SERVICE=WCS & VERSION=2.0
& REQUEST=GetCoverage & COVERAGEID=c001 & FORMAT=“image/tiff“
WCS Short Guide :: © 2014 Peter Baumann
WCS Suite Big Picture
WCS Short Guide :: © 2014 Peter Baumann
WCS Extensions
WCS Short Guide :: © 2014 Peter Baumann
WCS Extension – Range Subsetting [OGC 12-039]
Extract range components
- „bands“, „variables“
- Extension to GetCoverage request
Ex:
- or:
- or:
- or:
- or:
http://www.acme.com/wcs ? SERVICE=WCS & VERSION=2.0
& REQUEST=GetCoverage & COVERAGEID=c001
& RangeSubset=red
…& RangeSubset=nir,red,green &…
…& RangeSubset=green,red,blue &…
…& RangeSubset=nir:green &…
…& RangeSubset=band01,band03:band05,band19:band21 &…
WCS Short Guide :: © 2014 Peter Baumann
WCS Extension - Scaling [OGC 12-039]
Reduce resolution of gridded coverages
- Extension to GetCoverage request
Ex:
- or:
- or:
- or:
2.0 = scale DOWN by factor of 2
Interpolation control depending on Interpolation extension
http://www.acme.com/wcs ? SERVICE=WCS & VERSION=2.0
& REQUEST=GetCoverage & COVERAGEID=c001
& ScaleByFactor=2.0 &…
…& ScaleAxesByFactor=lat(2.0),long(2.0),time(1.0) &…
…& ScaleToSize=lat(4000),long(5000) &…
…& ScaleToExtent=lat(10,20),long(20,30) &…
WCS Short Guide :: © 2014 Peter Baumann
WCS Extension – Interpolation [OGC 12-049]
Communicate & control interpolation to be applied
- Scaling, CRS
Cap doc reports interpolation methods supported
- Without IE: opaque,
server doesn„t tell
Client can mandate
particular method
Ex:
- or:
http://www.acme.com/wcs ? SERVICE=WCS & VERSION=2.0 & REQUEST=GetCoverage & COVERAGEID=c001 & ...
& INTERPOLATION=http://www.opengis.net/def/interpolation/OGC/1/linear
<int:InterpolationMetadata>
<int:InterpolationSupported>
http://www.opengis.net/def/interpolation/OGC/0/nearest-neighbor
</int:InterpolationSupported>
<int:InterpolationSupported>
http://www.opengis.net/def/interpolation/OGC/0/linear
</int:InterpolationSupported>
</int:InterpolationMetadata>
…& INTERPOLATIONPERAXIS=phenomenon-time,http://www.opengis.net/def/interpolation/OGC/1/nearest-neighbor
WCS Short Guide :: © 2014 Peter Baumann
WCS Extension – CRS [OGC 11-053]
retrieval (& bbox) in CRSs different from Native CRS
- Extension to GetCoverage request
- Capabilities document lists supported CRSs (must be at least 1)
Ex:
This needs
- New CRSs (vertical, time, index, proxies, ...) Time + Index CRS NTS
- Combination of CRSs CRS NTS
http://www.acme.com/wcs ? SERVICE=WCS & VERSION=2.0
& REQUEST=GetCoverage & COVERAGEID=c001
& SUBSETTINGCRS=http://www.opengis.net/def/crs/EPSG/0/4326
& OUTPUTCRS=http://www.opengis.net/def/crs/EPSG/0/4326
WCS Short Guide :: © 2014 Peter Baumann
Time & Index CRSs [OGC 13-102r2]
Need new CRSs / axes:
- Time (incl calendars) Temporal.DWG
- Vertical new WG
- Index („ImageCRS“, never formalized) Index CRS
NB: EPSG not interested in time CRSs
Issue: ISO timestamps as coordinates
- WCS allows, GML (still) refuses
Ex: http://www.acme.com/wcs
? SERVICE=WCS & VERSION=2.0 & REQUEST=GetCoverage
& COVERAGEID=C0002
& SUBSET=long(100,200)
& SUBSET=lat(50,60)
& SUBSET=phenomenon-time("2009-11-06T23:20:52Z")
WCS Short Guide :: © 2014 Peter Baumann
CRS Name Types [OGC 11-135] WGS84, RESTful:
• http://www.opengis.net/def/crs/EPSG/0/4326
WGS84, KVP:
• http://www.opengis.net/def/crs?authority=EPSG&version=0&code=4326
Parametrized („AUTO“) CRSs:• http://www.opengis.net/def/crs?authority=OGC&version=1.3
& code=AUTO42003 & UoM=m & CenterLongitude=-100 & CenterLatitude=45
Ad-hoc combination of CRSs:• http://www.opengis.net/def/crs-compound?
1=http://www.opengis.net/def/crs/EPSG/0/4326& 2=http://www.opengis.net/def/crs/ISO/2004/8601
Proprietary CRS definition:• http://www.acme.com/def/this-is-EPSG-4326
Inline CRS definition:• srsName=“#crsdef”
OGC resolver implementation
provided by Jacobs U:
www.earthlook.org/demos/secore
WCS Short Guide :: © 2014 Peter Baumann
WCS Extension – Transaction [OGC 13-057]
= WCS-T: Modify coverage offerings on a server via Web
- New requests:
InsertCoverage + DeleteCoverage + UpdateCoverage (partial replacement)
- Core design goal: GetCoverage InsertCoverage
Revamping old WCS-T 1.1.4 (Arliss Whiteside) 2.0
- Adjusted to GMLCOV & WCS 2.0
Ex: http://www.acme.com/wcs
? SERVICE=WCS & VERSION = 2.0
& REQUEST=InsertCoverage
& COVERAGEREF=http://bcme.com/archive/hurricane.nc
& USEID=new
WCS Short Guide :: © 2014 Peter Baumann
WCS Extension – Processing [OGC 13-057]
WCS wrapper for OGC Web Coverage Processing Service (WCPS)
- high-level spatio-temporal geo raster query language
for $c in ( M1, M2, M3 )where
some( $c.nir > 127 )return
encode($c.red - $c.nir,“image/tiff“
)
(tiffA,
tiffC)
32
"From MODIS scenes M1, M2, M3: difference between red & nir, as TIFF"• …but only those where nir exceeds 127 somewhere
WCS Short Guide :: © 2014 Peter Baumann
Application Profiles
WCS Short Guide :: © 2014 Peter Baumann
EO-WCS
WCS Application Profile for Earth Observation [OGC 10-140]- 2D imagery + time metadata
- hierachical coverage groupings
- Metadata & provenance
- Mosaic overlaying
EO Metadata Record 1
EO Metadata Record 2
[EOX]
long
lat
t
[JacobsU, EOX]
[JacobsU, EOX]
WCS Short Guide :: © 2014 Peter Baumann
MetOcean-WCS [OGC 14-052]
WCS Application Profile for Meteorology, Climate, Aviation
Data model:
- 4-D x/y/z/t data cubes
Service model:
- Space-time extraction
- curtains, corridors
Status: draft
- JacobsU + UK MetOffice
[UK MetOffice, DWD]
WCS Short Guide :: © 2014 Peter Baumann
WPS AP – Coverages [OGC 09-045r1]
Specialization of WPS for coverage services
- WCS folks: „want to have async processing on coverages“
- WPS folks: „want interoperable coverage processes“
WCS request type
WPS process definition
- WCS extensions piggyback
- No new schema needed
<wps:Execute …
xsi:schemaLocation="http://www.opengis.net/wps/2.0.0 ../wpsExecute.xsd"
service="WPS" version="2.0.0" response="document” mode="async">
<ows:Identifier>http://my.wps.server/processes/wcs</ows:Identifier>
<wps:Input id="GetCoverageRequest">
<wcs:CoverageId>MyLittleCoverage</wcs:CoverageId>
<wcs:trimDimension>
<wcs:dimension>Long</wcs:dimension>
<wcs:trimLow>20</wcs:trimLow>
<wcs:trimHigh>29</wcs:trimHigh>
</wcs:trimDimension>
</wps:Input>
<wps:Output id="GetCoverageResponse“ …>
</wps:Output>
</wps:Execute>
WCS Short Guide :: © 2014 Peter Baumann
Overview
Introduction
Coverage data: the OGC Coverage Model
Coverage services: the WCS Suite
Conformance Testing & Implementations
Summary
38
WCS Short Guide :: © 2014 Peter Baumann
Conformance Testing: Status
39
WCS Short Guide :: © 2014 Peter Baumann
WCS Implementations
High acceptance by implementers for WCS 2
- "The WCS 2.0 XML schema set is much easier to use than the 1.x XML; it
validates and is better organized" -- OPeNDAP
Users increasingly planning to move to WCS 2 (eg, NGA)
Known implementations:
- rasdaman, MapServer, GeoServer, OPeNDAP, GMU, Trellis, ...
- rasdaman WCS Core Reference implementation
WCS Short Guide :: © 2014 Peter Baumann
WCS & WCPS: Practice Proven
from simple data access to agile analytics on spatio-temporal sensor,
image, simulation, & statistics data
130+ TB databases, 2D, 3D x/y/z & x/y/t, 4D x/y/z/t timeseries
single query distributed to 1,000+ cloud nodes
WCS Short Guide :: © 2014 Peter Baumann
„raster data manager“: SQL + n-D raster objects
Scalable parallel “tile streaming” architecture
In operational use
- OGC Web Coverage Service
Core Reference Implementation
rasdaman: Agile Array Analytics
select img.green[x0:x1,y0:y1] > 130
from LandsatArchive as img
where avg_cells( img.nir ) < 17
WCS Short Guide :: © 2014 Peter Baumann
Adaptive Tiling
Sample tiling strategies [Furtado]:
- regular directional area of interest
rasdaman storage layout language
insert into MyCollection
values ...
tiling area of interest [0:20,0:40], [45:80,80:85]
tile size 1000000
index d_index storage array compression zlib
WCS Short Guide :: © 2014 Peter Baumann
Inset: WaterML 2.0 Time Handling
WaterML 2.0: timseries = time slices
OGC Coverages: time just another axis «FeatureType»Coverage
«Union»DomainSet
«Union»RangeSet
«type»DataRecord
rangeSetdomainSet rangeType
WCS Short Guide :: © 2014 Peter Baumann
Sample Application: Database Visualization
for $s in (SatImage), $d in (DEM)
return
encode(
struct {
red: (char) s.image.b7[x0:x1,x0:x1],
green: (char) s.image.b5[x0:x1,x0:x1],
blue: (char) s.image.b0[x0:x1,x0:x1],
alpha: (char) scale( d.elev, 20 )
},
"image/png"
)
[JacobsU, Fraunhofer; data courtesy BGS, ESA]
WCS Short Guide :: © 2014 Peter Baumann
Viewing: WCPS Emulating WMS
Example 2: real-time WMS zoom/pan/styling
- 1 background, 1 bathymetry, 3*RGB
- www.earthlook.org
SELECT png(
(marray x in [0:399,0:399] values {255c,255c,255c})
overlay
((scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) < -1300)*{0c,0c,0c}
+(-1300.000000< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1290)*{219c,0c,172c}
+(-1289.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1282)*{209c,0c,178c}
+(-1281.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1275)*{199c,0c,186c}
+(-1274.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1272.5)*{186c,0c,189c}
+(-1272.499999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1271)*{174c,0c,194c}
+(-1270.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1270.5)*{162c,0c,199c}
+(-1270.499999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1270)*{150c,0c,204c}
+(-1269.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1269.5)*{139c,0c,209c}
+(-1269.499999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1269)*{125c,0c,214c}
+(-1268.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1268.5)*{110c,0c,219c}
+(-1268.499999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1268)*{98c,0c,227c}
+(-1267.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1267.5)*{77c,0c,232c}
+(-1267.499999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1267)*{59c,0c,237c}
+(-1266.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1266.5)*{28c,0c,242c}
+(-1266.499999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1266)*{16c,12c,245c}
+(-1265.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1265.5)*{36c,32c,247c}
+(-1265.499999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1265)*{47c,47c,247c}
+(-1264.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1264.5)*{60c,63c,250c}
+(-1264.499999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1264)*{67c,74c,250c}
+(-1263.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1263.5)*{76c,90c,252c}
+(-1263.499999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1263)*{83c,103c,252c}
+(-1262.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1262)*{88c,116c,252c}
+(-1261.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1261)*{93c,128c,252c}
+(-1260.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1260)*{99c,144c,255c}
+(-1259.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1257)*{102c,158c,255c}
+(-1256.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1250)*{107c,174c,255c}
+(-1249.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1240)*{110c,190c,255c}
+(-1239.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -1230)*{112c,205c,255c}
+(-1229.999999< scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) and scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ) <= -126.5)*{115c,220c,255c}
+ (-126.5 < scale( extend( img0[269:349,0:65], [269:395,-60:65] ), [0:399,0:399] ))*{255c,255c,255c})
overlay (scale( extend( img2[124:468,0:578], [124:717,-14:578] ), [0:399,0:399] ))
overlay (scale( extend( img3[11375:11578,0:120], [11375:11968,-473:120] ), [0:399,0:399] )) )
FROM Hakon_Bathy AS img0, Hakoon_Dive1_8 AS img1, Hakoon_Dive2_8 AS img2, Hakoon_Dive2b_8 AS img3
WCS Short Guide :: © 2014 Peter Baumann
for $a in (A), $b in (B), $c in (C), $d in (D)
return
max(($a.nir - $a.red) / ($a.nir + $a.red))
- max(($b.nir - $b.red) / ($b.nir + $b.red))
- max(($c.nir - $c.red) / ($c.nir + $c.red))
- max(($d.nir - $d.red) / ($d.nir + $d.red))
Parallel / Distributed Query Processing
1 query 1,000+ cloud nodes
Dataset B
Dataset A
Dataset D
Dataset C
WCS Short Guide :: © 2014 Peter Baumann
Use Case: Plymouth Marine Laboratory
“Avg chlorophyll concentration for given area & time period, from x/y/t cube”
- 10, 60,120, 240 days
Conclusions:
- „we must minimise data transfer
as well as [client] processing”
- “standards such as WCPS provide
the greatest benefit”
[Oliver Clements, EGU 2014]
rasdaman
WCS Short Guide :: © 2014 Peter Baumann
Secured Archive Integration
First-ever direct, ad-hoc mix from protected NASA & ESA services
in OGC WCS/WCPS Web client (EarthServer + CobWeb)
WCS Short Guide :: © 2014 Peter Baumann
Real Life, Real Volume, Real Service
6 Lighthouse Applications covering Earth & Planetary Sciences
Established data centers adding EarthServer technology to service
portfolio
Summer 2014: all 20+ TB, 2x 100+ TB = 280 TB operational
WCS Short Guide :: © 2014 Peter Baumann
ChartLink
- Envitia Ltd, UK
rasdaman
- Jacobs U,
rasdaman GmbH
petascope
rasdaman
WCS+WCPS WPS+WCPS
Viewing: WPCS for Web Mapping
[ESA VAROS project, 2010]
WCS Short Guide :: © 2014 Peter Baumann
Viewing: WPCS for Web Mapping
WCS Short Guide :: © 2014 Peter Baumann
Viewing: WPCS for Web Mapping
WCS Short Guide :: © 2014 Peter Baumann
Overview
Introduction
Coverage data: the OGC Coverage Model
Coverage services: the WCS Suite
Conformance Testing & Implementations
Summary
54
WCS Short Guide :: © 2014 Peter Baumann
WCS goes ISO
Resolved at OGC TC meeting in Calgary, Sep 2014:
Submission of OGC coverage works to TC211 as DIS
- GMLCOV
- WCS Core
- WCS POST/XML
Rationale: Interoperability & sustainability of coverage data & services
- GMLCOV also preparing/initiating revision of 19123
- WCS 2.0 as the missing TC211 Web Coverage Service
WCS Short Guide :: © 2014 Peter Baumann
ISO 9075 Part 15: SQL/MDA
- resolved by ISO SQL WG in June 2014
- Based on rasdaman concepts & experience
n-D arrays as attributes
declarative array operationsselect id, encode(scene.band1-scene.band2)/(scene.nband1+scene.band2)), „image/tiff“ )
from LandsatScenes
where acquired between „1990-06-01“ and „1990-06-30“ and
avg( scene.band3-scene.band4)/(scene.band3+scene.band4)) > 0
Science SQL in ISO
create table LandsatScenes(
id: integer not null, acquired: date,
scene: row( band1: integer, ..., band7: integer ) array [ 0:4999,0:4999] )
WCS Short Guide :: © 2014 Peter Baumann
SWE, SOS: upstream
sensor data capturing
W*S: downstream
download, processing, visualization
SOS
WMS
WCS
WCPS
WPS...coverage
server
WCS Short Guide :: © 2014 Peter Baumann
Conclusion Coverage data = spatio-temporal regular & irregular grids, point clouds, meshes
- GMLCOV, based on ISO 19123
- Servable by many services
Web Coverage Service: from simple access to versatile analytics- Uniform interface to grids, point clouds, [meshes tbd]
- Scalable implementations: 130+ TB, 1000+ cloud nodes
See also: http://standards.rasdaman.org
[rasdaman screenshots]
WCS Short Guide :: © 2014 Peter Baumann
Document Overview Coverage data :
- 09-146r2 GML Application Schema - Coverages
- 12-100 GeoTIFF Coverage Encoding Extension
- 12-108 JPEG2000 Coverage Encoding Extension
Coverage service:- 09-110r4 WCS 2.0 Core
- 09-147r1 WCS Extension - KVP Protocol
- 09-148 WCS Extension - XML/POST Protocol
- 09-149 WCS Extension - XML/SOAP Protocol
- 13-057 WCS Transaction Extension 2.0
- 08-059 WCS Extension - ProcessCoverages 2.0
- 12-040 WCS Extension - Range Subsetting
- 12-039 WCS Extension - Scaling
- 11-053 WCS Extension - CRS
- 12-049 WCS Extension - Interpolation
Other:- 08-068r2 Web Coverage Processing Service (WCPS) Language
- 10-140 WCS Application Profile - Earth Observation
- 14-052 WCS Application Profile - MetOcean
- 11-135 CRS Name Type Specification59
www.opengeospatial.org/standards/wcs
WCS Short Guide :: © 2014 Peter Baumann
Some Relevant OGC WGs
WCS.SWG - WCS/WCPS maintenance
Coverages.DWG - exchange with all interested domains
- http://external.opengeospatial.org/twiki_public/CoveragesDWG/
Temporal.DWG - establishing semantics for time & calendars
- http://external.opengeospatial.org/twiki_public/TemporalDWG/
BigData.DWG - well...you guess it
- http://external.opengeospatial.org/twiki_public/BigDataDwg/
WCS Short Guide :: © 2014 Peter Baumann
Useful links
Wikipedia
- http://en.wikipedia.org/wiki/Coverage_data
- http://en.wikipedia.org/wiki/Web_Coverage_Service
- http://en.wikipedia.org/wiki/Web_Coverage_Processing_Service
OGC:
- http://external.opengeospatial.org/twiki_public/CoveragesDWG/
Tutorial:
- http://rasdaman.org/wiki/Workshops/BigDataRasdamanApproach