WCPS-Tutorial / A first simple request
ProcessCoverage request uniformly consists of one expression
which is evaluated against one or more coverages and returns a coverage, coverage
set, or derived alphanumeric data.
rgb is a 2-D RGB image of size 400x344 pixels.
The request below retrieves the entire image, without any change in CRS, size, or
cell value ("radiometry").
for c in ( rgb ) return encode( c, "jpeg" )
The result of this request is displayed below:
WCPS is not constrained to simply accessing coverages. The first argument of the
encode() function can be an arbitrarily complex expression based on the
WCPS coverage language elements.
Example: "an intensity-inverted cutout in the blue channel":
for c in ( rgb ) return encode( (255c - c.red)[50:150,50:150], "jpeg" )
This is the outcome of the above request:
encode() function is always required when the overall result of a
return clause is a coverage. Obviously the format chosen must support
the coverage wrt. number of dimensions (JPEG cannot handle 3D) and cell type (JPEG
also cannot handle floating-point pixels). If the overall result of the request is
just a scalar, then no encoding is needed.
Example: "the number of pixels with zero-valued red components":
for c in ( rgb ) return count( c.red = 0 )
Next, the most important language constructs will be introduced step by step.
encode()function allows passing such extra parameters as an optional string. The syntax and semantics of this string is currently not fixed in the standard, but may be so in future.
See manual: coverageListExpr