Web Processing Service

OGC's Web Processing Service (WPS) standard is now (as of late 2007) at version 1.0.0, available from OGC [1].

Some general notes (from the standard's introduction):

  • Processes include any algorithm, calculation or model that operates on spatially referenced data. A WPS may offer calculations as simple as subtracting one set of spatially referenced numbers from another (e.g., determining the difference in influenza cases between two different seasons), or as complicated as a global climate change model
  • Data required by the WPS can be delivered across a network, or available at the server. The specification provides mechanisms to identify the spatially referenced data required by the calculation, initiate the calculation, and manage the output from the calculation so that the client can access it.
  • Targeted at processing both vector and raster data.

Mechanism

Similar to other OGC services:

GetCapabilities
Provides names and general descriptions of processes
DescribeProcess
Provides detailed information about processes (inputs, outputs, formats)
Execute
...

Other notes:

  • Clients can ping for status on long-running processes
  • Can call other services / processes from within a process (good for chaining)

Service Chaining

(Quoted directly from the standard.)

A WPS process is normally an atomic function that performs a specific geospatial calculation. Chaining of WPS processes facilitates the creation of repeatable workflows. WPS processes can be incorporated into service chains in a number of ways:

  1. A BPEL engine can be used to orchestrate a service chain that includes one or more WPS processes.
  2. A WPS process can be designed to call a sequence of web services including other WPS processes, thus acting as the service chaining engine.
  3. Simple service chains can be encoded as part of the execute query. Such cascading service chains can be executed even via the GET interface.

Operations

GetCapabilities

Example:

http://somewhere/wps?service=WPS&Request=GetCapabilties&AcceptVersions=1.0.0

DescribeProcess

Example:

http://somewhere/wps?service=WPS&Request=DescribeProcess&AcceptVersions=1.0.0&Identifier=someprocess

Input parameters are described as:

ComplexData
e.g. XML or imagery. Should be either encoded within an Execute request or made available at a URL
LiteralData
"with a specified data type, allowable values, default value, and allowable unit of measure indicated."
BoundingBoxData
using one of the supported coordinate reference systems.

Output parameters are described similarly (e.g. ComplexOutput).

Other parts of process description:

storeSupported
Indicates if complex data output(s) from this process can be requested to be stored by the WPS server as web-accessible resources
statusSupported
Indicates if Execute operation response can be returned quickly with status information


Execute

Example:

http://somewhere/wps?service=WPS&Request=Execute&AcceptVersions=1.0.0&Identifier=someprocess&DataInputs=[Object=@xlink:href=http%3A%2F%2Ffoo.bar%2Ffoo;BufferDistance=100]

Possible outputs:

  • Results wrapped in response document
  • Response document containing URLS of results
  • If a single output is requested, server can return raw response data (no XML wrapper)

Service Chaining

HTTP requests using KVP encoding shall support the chaining of requests whereby a call to another web service is encoded within the value for a ComplexData href input. Encoding of the entire request to the ComplexData href shall ensure that the request is received and processed unambiguously. WPS instances shall decode ComplexValueReference values and submit the decoded value to the network as an HTTP KVP GET request. An example of service chaining via KVP follows. Consider the following WPS Execute request that provides a ComplexValueReference called complexFieldName to a process called Buffer:
http://foo.bar.1/wps?version=1.0.0&request=Execute&service=WPS&Identifier=Buffer&DataInputs=BufferDistance=100@datatype=integer@uom=meter;Object=http%3A%2F%2Ffoo%2Ebar%2E2%2Fwps%3Frequest%3DExecute%26service%3Dwps%26version%3D1%2E0%2E0%26Identifier%3DShpConvertToGML%26DataInputs%3DcomplexFieldName%3Dhttp%253A%252F%252Ffoo%252Ebar%252Fshapefile%40Format%3Dtext%2Fxml%40Encoding%3Dutf%2D8%40Schema%3Dgml@Format=text/xml@Encoding=utf-8@Schema=xsd

COMET WPS

pollux currently hosts a WPS server at http://pollux.cs.ucdavis.edu/comet/wps.

Comments