5.4.2 Sensor Planning Service

From Geostandards

Jump to: navigation, search


Contents

Overview

The Sensor Planning Service (SPS) offers a standardized interface for the control of sensors and simulations. An SPS provides operations for task management, including:

  • defining tasks
  • checking feasibility of tasks
  • checking the status of running tasks
  • updating and modifying running tasks
  • canceling tasks

Since the time for the completion of the task is not known a priori, the SPS can use the Web Notification Service (WNS) for communicating with the client in asynchronous manner. That means the client that submits tasks is notified via WNS if a task is completed. The storage of the gathered data is out of scope of the SPS. Therefore the SPS points to the service from which the data can be retrieved.

Operations

Mandatory Operations

GetCapabilities

The GetCapabilites operation allows for the identification of available sensor and supported operations. The structure and syntax follows the specification from OWS Common.

Example of a GetCapabilities request:

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:GetCapabilities service="SPS" 
  xsi:schemaLocation="http://www.opengis.net/sps/1.0 http://schemas.opengis.net/sps/1.0.0/spsGetCapabilities.xsd" 
  xmlns:ows="http://www.opengis.net/ows" xmlns:sps="http://www.opengis.net/sps/1.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <ows:Sections>
        <ows:Section>ServiceIdentification</ows:Section>
        <ows:Section>ServiceProvider</ows:Section>
        <ows:Section>OperationsMetadata</ows:Section>
        <ows:Section>Contents</ows:Section>
     </ows:Sections>
  </sps:GetCapabilities>

Example of a capabilities document:

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:Capabilities version="String" 
  xsi:schemaLocation="http://www.opengis.net/sps/1.0 http://schemas.opengis.net/sps/1.0.0/spsGetCapabilities.xsd" 
  xmlns:ows="http://www.opengis.net/ows" xmlns:sps="http://www.opengis.net/sps/1.0" 
  xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <ows:ServiceIdentification>
        <ows:Title>52North SPS</ows:Title>
        <ows:Abstract>thermometer 52N, Muenster, Germany</ows:Abstract>
        <ows:Keywords>
           <ows:Keyword>air tempreture</ows:Keyword>
           <ows:Keyword>thermometer</ows:Keyword>
        </ows:Keywords>
        <ows:ServiceType codeSpace="http://opengeospatial.net">OGC:SPS</ows:ServiceType>
        <ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
        <ows:Fees>none</ows:Fees>
        <ows:AccessConstraints>for internal use only</ows:AccessConstraints>
     </ows:ServiceIdentification>
     <ows:ServiceProvider>
        <ows:ProviderName>52North</ows:ProviderName>
        <ows:ProviderSite xlink:href="http://www.52north.org/"/>
        <ows:ServiceContact>
           <ows:IndividualName>Simon Jirka</ows:IndividualName>
           <ows:PositionName>SWE Community Leader</ows:PositionName>
           <ows:ContactInfo>
              <ows:Phone>
                 <ows:Voice>+49-251-39637131</ows:Voice>
              </ows:Phone>
              <ows:Address>
                 <ows:DeliveryPoint>Martin-Luther-King-Weg 24</ows:DeliveryPoint>
                 <ows:City>Muenster</ows:City>
                 <ows:AdministrativeArea>NRW</ows:AdministrativeArea>
                 <ows:PostalCode>48155</ows:PostalCode>
                 <ows:Country>Germany</ows:Country>
                 <ows:ElectronicMailAddress>jirka@52north.org</ows:ElectronicMailAddress>
              </ows:Address>
           </ows:ContactInfo>
           <ows:Role/>
        </ows:ServiceContact>
     </ows:ServiceProvider>
     <ows:OperationsMetadata>
        <ows:Operation name="GetCapabilities">
           <ows:DCP>
              <ows:HTTP>
                 <ows:Get xlink:href="http://v-sps.52north.org:8080/temp/sps?"/>
                 <ows:Post xlink:href="http://v-sps.52north.org:8080/temp/sps"/>
              </ows:HTTP>
           </ows:DCP>
           <ows:Parameter name="service">
              <ows:Value>SPS</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="version">
              <ows:Value>1.0.0</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="Sections">
              <ows:Value>ServiceIdentification</ows:Value>
              <ows:Value>ServiceProvider</ows:Value>
              <ows:Value>OperationsMetadata</ows:Value>
              <ows:Value>Contents</ows:Value>
              <ows:Value>All</ows:Value>
           </ows:Parameter>
        </ows:Operation>
        <ows:Operation name="DescribeTasking">
           <ows:DCP>
              <ows:HTTP>
                 <ows:Post xlink:href="http://v-sps.52north.org:8080/temp/sps"/>
              </ows:HTTP>
           </ows:DCP>
           <ows:Parameter name="service">
              <ows:Value>SPS</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="version">
              <ows:Value>1.0.0</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="sensorID">
              <ows:Value>urn:ogc:object:feature:Sensor:52N:thermometer123</ows:Value>
           </ows:Parameter>
        </ows:Operation>
        <ows:Operation name="GetFeasibility">
           <ows:DCP>
              <ows:HTTP>
                 <ows:Post xlink:href="http://v-sps.52north.org:8080/temp/sps"/>
              </ows:HTTP>
           </ows:DCP>
           <ows:Parameter name="service">
              <ows:Value>SPS</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="version">
              <ows:Value>1.0.0</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="sensorID">
              <ows:Value>urn:ogc:object:feature:Sensor:52N:thermometer123</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="notificationTarget">
              <ows:Value></ows:Value>
           </ows:Parameter>
           <ows:Parameter name="parameters">
              <ows:Value></ows:Value>
           </ows:Parameter>
           <ows:Parameter name="timeFrame">
              <ows:Value></ows:Value>
           </ows:Parameter>
        </ows:Operation>
        <ows:Operation name="Submit">
           <ows:DCP>
              <ows:HTTP>
                 <ows:Post xlink:href="http://v-sps.52north.org:8080/temp/sps"/>
              </ows:HTTP>
           </ows:DCP>
           <ows:Parameter name="service">
              <ows:Value>SPS</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="version">
              <ows:Value>1.0.0</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="sensorParam">
              <ows:Value></ows:Value>
           </ows:Parameter>
           <ows:Parameter name="notificationTarget">
              <ows:Value></ows:Value>
           </ows:Parameter>
           <ows:Parameter name="feasibilityID">
              <ows:Value>1979</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="timeFrame">
              <ows:Value></ows:Value>
           </ows:Parameter>
        </ows:Operation>
        <ows:Operation name="GetStatus">
           <ows:DCP>
              <ows:HTTP>
                 <ows:Post xlink:href="http://v-sps.52north.org:8080/temp/sps"/>
              </ows:HTTP>
           </ows:DCP>
           <ows:Parameter name="service">
              <ows:Value>SPS</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="version">
              <ows:Value>1.0.0</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="taskID">
              <ows:Value>1610</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="notificationTarget">
              <ows:Value></ows:Value>
           </ows:Parameter>
        </ows:Operation>
        <ows:Operation name="Update">
           <ows:DCP>
              <ows:HTTP>
                 <ows:Post xlink:href="http://v-sps.52north.org:8080/temp/sps"/>
              </ows:HTTP>
           </ows:DCP>
           <ows:Parameter name="service">
              <ows:Value>SPS</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="version">
              <ows:Value>1.0.0</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="taskID">
              <ows:Value>1610</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="notificationTarget">
              <ows:Value></ows:Value>
           </ows:Parameter>
           <ows:Parameter name="parameters">
              <ows:Value></ows:Value>
           </ows:Parameter>
        </ows:Operation>
        <ows:Operation name="Cancel">
           <ows:DCP>
              <ows:HTTP>
                 <ows:Post xlink:href="http://v-sps.52north.org:8080/temp/sps"/>
              </ows:HTTP>
           </ows:DCP>
           <ows:Parameter name="service">
              <ows:Value>SPS</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="version">
              <ows:Value>1.0.0</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="taskID">
              <ows:Value>1610</ows:Value>
           </ows:Parameter>
        </ows:Operation>
        <ows:Operation name="DescribeResultAccess">
           <ows:DCP>
              <ows:HTTP>
                 <ows:Post xlink:href="http://v-sps.52north.org:8080/temp/sps"/>
              </ows:HTTP>
           </ows:DCP>
           <ows:Parameter name="service">
              <ows:Value>SPS</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="version">
              <ows:Value>1.0.0</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="taskID">
              <ows:Value>1610</ows:Value>
           </ows:Parameter>
           <ows:Parameter name="sensorID">
              <ows:Value>urn:ogc:object:feature:Sensor:52N:thermometer123</ows:Value>
           </ows:Parameter>
        </ows:Operation>
     </ows:OperationsMetadata>
     <sps:Contents>
        <sps:SensorOfferingList>
           <sps:SensorOffering>
              <sps:AreaOfService>
                 <ows:BoundingBox crs="urn:ogc:def:crs:EPSG:4326">
                    <ows:LowerCorner>6.24560488374974 50.3587094784933</ows:LowerCorner>
                    <ows:UpperCorner>7.60722652854772 51.8292137232477</ows:UpperCorner>
                 </ows:BoundingBox>
              </sps:AreaOfService>
              <sps:Phenomenon>urn:ogc:def:property:OGC:Temperature</sps:Phenomenon>
              <sps:SensorDefinition>urn:ogc:object:feature:52N:ea8ce056-7861-4fca-b01c-6eaec8d7b281</sps:SensorDefinition>
              <sps:SensorID>urn:ogc:object:feature:Sensor:52N:thermometer123</sps:SensorID>
           </sps:SensorOffering>
        </sps:SensorOfferingList>
        <sps:PhenomenonOfferingList>
           <sps:PhenomenonOffering>
              <sps:Phenomenon>urn:ogc:def:property:OGC:Temperature</sps:Phenomenon>
              <sps:SensorID>urn:ogc:object:feature:Sensor:52N:thermometer123</sps:SensorID>
           </sps:PhenomenonOffering>
        </sps:PhenomenonOfferingList>
     </sps:Contents>
  </sps:Capabilities>

DescribeTasking

The DescribeTasking operation enables the user to retrieve the task-able parameters of a sensor.

Example of a DescribeTasking request:

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:DescribeTasking service="SPS" version="1.0. xsi:schemaLocation="http://www.opengis.net/sps/1.0 
  http://schemas.opengis.net/sps/1.0.0/spsDescribeTaskingRequest.xsd" 
  xmlns:sps="http://www.opengis.net/sps/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <sps:sensorID>urn:ogc:object:feature:Sensor:52N:thermometer123</sps:sensorID>
  </sps:DescribeTasking>

Example of a response to a DescribeTasking request:

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:DescribeTaskingRequestResponse xsi:schemaLocation="http://www.opengis.net/sps/1.0 
  http://schemas.opengis.net/sps/1.0.0/spsDescribeTaskingRequestResponse.xsd" 
  xmlns:gml="http://www.opengis.net/gml" xmlns:sps="http://www.opengis.net/sps/1.0" 
  xmlns:swe="http://www.opengis.net/swe/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <sps:taskingDescriptor>
        <sps:sensorID>urn:ogc:object:feature:Sensor:52N:thermometer123</sps:sensorID>
        <sps:InputDescriptor parameterID="task-start-time" updateable="false" use="required">
           <gml:description>Give the start-time of your task as one dateTime-instance encoded as ISO8601. 
                            Must be before or equal to the task-end-time.
           </gml:description>
           <sps:definition>
              <sps:commonData>
                 <swe:Time definition="urn:ogc:def:parameter:OGC:task-start-time">
                    <swe:uom code="iso8601"/>
                 </swe:Time>
              </sps:commonData>
           </sps:definition>
        </sps:InputDescriptor>
        <sps:InputDescriptor parameterID="task-end-time" updateable="false" use="required">
           <gml:description>Give the end-time of your task as one dateTime-instance encoded as ISO8601. 
                            Must be after or equal to the task-start-time.
           </gml:description>
           <sps:definition>
              <sps:commonData>
                 <swe:Time definition="urn:ogc:def:parameter:OGC:task-end-time">
                    <swe:uom code="iso8601"/>
                 </swe:Time>
              </sps:commonData>
           </sps:definition>
        </sps:InputDescriptor>
        <sps:InputDescriptor parameterID="samplingRate" updateable="true" use="required">
           <gml:description>defines the samplingRate of the thermometer in Hertz</gml:description>
           <sps:definition>
              <sps:commonData>
                 <swe:Quantity definition="urn:ogc:def:parameter:52N:thermometer:samplingRate">
                    <swe:uom code="Hz"/>
                    <swe:constraint>
                       <swe:AllowedValues>
                          <swe:interval>0.001 1.0</swe:interval>
                       </swe:AllowedValues>
                    </swe:constraint>
                 </swe:Quantity>
              </sps:commonData>
           </sps:definition>
        </sps:InputDescriptor>
     </sps:taskingDescriptor>
  </sps:DescribeTaskingRequestResponse>

Submit

The Submit operation allows to define a new task.

Example of a Submit request:

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:Submit service="SPS" version="1.0.0" 
  xsi:schemaLocation="http://www.opengis.net/sps/1.0 http://schemas.opengis.net/sps/1.0.0/spsSubmitRequest.xsd" 
  xmlns:gml="http://www.opengis.net/gml" xmlns:sps="http://www.opengis.net/sps/1.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <sps:notificationTarget>
        <sps:notificationID>1234</sps:notificationID>
        <sps:notificationURL>http://mars.uni-muenster.de:8080/WNS/wns</sps:notificationURL>
     </sps:notificationTarget>
     <sps:feasibilityID>1979</sps:feasibilityID>
  </sps:Submit>

Example of a response to a Submit request:

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:SubmitRequestResponse xsi:schemaLocation="http://www.opengis.net/sps/1.0 
  http://schemas.opengis.net/sps/1.0.0/spsSubmitRequestResponse.xsd" xmlns:gml="http://www.opengis.net/gml" 
  xmlns:sps="http://www.opengis.net/sps/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <sps:taskID>1610</sps:taskID>
     <sps:status>confirmed</sps:status>
     <sps:LatestResponseTime>
        <gml:TimeInstant>
           <gml:timePosition>2009-10-15T16:00:00</gml:timePosition>
        </gml:TimeInstant>
     </sps:LatestResponseTime>
     <sps:estimatedToC>
        <gml:TimeInstant>
           <gml:timePosition>2009-10-15T18:55:00</gml:timePosition>
        </gml:TimeInstant>
     </sps:estimatedToC>
  </sps:SubmitRequestResponse>

DescribeResultAccess

The DescribeResultAccess operations enables the user to request information where the data resulting of a task can be retrieved.

Example of a DescribeResultAccess request

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:DescribeResultAccess service="SPS" version="1.0.0" 
  xsi:schemaLocation="http://www.opengis.net/sps/1.0 
  http://schemas.opengis.net/sps/1.0.0/spsDescribeResultAccessRequest.xsd" 
  xmlns:sps="http://www.opengis.net/sps/1.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <sps:taskID>1610</sps:taskID>
  </sps:DescribeResultAccess>

Example of a DescribeResultAccess response

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:DescribeResultAccessRequestResponse 
  xsi:schemaLocation="http://www.opengis.net/sps/1.0 
  http://schemas.opengis.net/sps/1.0.0/spsDescribeResultAccessRequestResponse.xsd" 
  xmlns:sps="http://www.opengis.net/sps/1.0" xmlns:sos="http://www.opengis.net/s0s/1.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <sps:service>
        <sps:ServiceType>SOS</sps:ServiceType>
        <sps:ServiceURL>http://52north.org:8080/tempretureSos/sos</sps:ServiceURL>
     </sps:service>
  </sps:DescribeResultAccessRequestResponse>

Optional Operations

GetFeasibility

The GetFisibility operation enables the user to check if the task the user wants to submit can be executed before submitting it to the SPS.

Example of a GetFeasibility request:

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:GetFeasibility service="SPS" version="1.0.0" 
  xsi:schemaLocation="http://www.opengis.net/sps/1.0 http://schemas.opengis.net/sps/1.0.0/spsGetFeasibilityRequest.xsd" 
  xmlns:gml="http://www.opengis.net/gml" xmlns:sps="http://www.opengis.net/sps/1.0" 
  xmlns:swe="http://www.opengis.net/swe/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <sps:notificationTarget>
        <sps:notificationID>1234</sps:notificationID>
        <sps:notificationURL>http://mars.uni-muenster.de:8080/WNS/wns</sps:notificationURL>
     </sps:notificationTarget>
     <sps:sensorID>urn:ogc:object:feature:Sensor:52N:thermometer123</sps:sensorID>
     <sps:parameters>
        <sps:InputParameter parameterID="samplingRate">
           <sps:value>
              <swe:Quantity>
                 <swe:uom code="Hz">0.016</swe:uom>
              </swe:Quantity>
           </sps:value>
        </sps:InputParameter>
        <sps:InputParameter parameterID="task-start-time">
           <sps:value>
              <swe:Time>2009-10-15T16:00:00</swe:Time>
           </sps:value>
        </sps:InputParameter>
        <sps:InputParameter parameterID="task-end-time">
           <sps:value>
              <swe:Time>2009-10-15T18:55:00</swe:Time>
           </sps:value>
        </sps:InputParameter>
     </sps:parameters>
     <sps:timeFrame>
        <gml:TimeInstant>
           <gml:timePosition>2009-10-15T15:55:00</gml:timePosition>
        </gml:TimeInstant>
     </sps:timeFrame>
  </sps:GetFeasibility>


Example of a response to a GetFeasibility request:

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:GetFeasibilityRequestResponse xsi:schemaLocation="http://www.opengis.net/sps/1.0 
  http://schemas.opengis.net/sps/1.0.0/spsGetFeasibilityRequestResponse.xsd" 
  xmlns:gml="http://www.opengis.net/gml" xmlns:sps="http://www.opengis.net/sps/1.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <sps:feasibilityID>1979</sps:feasibilityID>
     <sps:feasibility>feasible</sps:feasibility>
     <sps:LatestResponseTime>
        <gml:TimeInstant>
           <gml:timePosition>2009-10-15T15:45:00</gml:timePosition>
        </gml:TimeInstant>
     </sps:LatestResponseTime>
  </sps:GetFeasibilityRequestResponse>

GetStatus

The GetStatus operation provides access to status information about a task.

Example of a GetStatus request

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:GetStatus service="SPS" version="1.0.0" 
  xsi:schemaLocation="http://www.opengis.net/sps/1.0 http://schemas.opengis.net/sps/1.0.0/spsGetStatusRequest.xsd" 
  xmlns:sps="http://www.opengis.net/sps/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <sps:taskID>1610</sps:taskID>
  </sps:GetStatus>


Example of a response to a GetStatus request:

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:GetStatusRequestResponse 
  xsi:schemaLocation="http://www.opengis.net/sps/1.0 http://schemas.opengis.net/sps/1.0.0/spsGetStatusRequestResponse.xsd" 
  xmlns:gml="http://www.opengis.net/gml" xmlns:sps="http://www.opengis.net/sps/1.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <sps:taskID>1610</sps:taskID>
     <sps:status>in operation</sps:status>
  </sps:GetStatusRequestResponse>

Update

By means of the Update operation the user can change the parameters of a submitted task.

Example of an update request:

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:Update service="SPS" version="1.0.0" 
  xsi:schemaLocation="http://www.opengis.net/sps/1.0 http://schemas.opengis.net/sps/1.0.0/spsUpdateRequest.xsd" 
  xmlns:sps="http://www.opengis.net/sps/1.0" xmlns:swe="http://www.opengis.net/swe/1.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <sps:taskID>1610</sps:taskID>
     <sps:parameters>
        <sps:InputParameter parameterID="samplingRate">
           <sps:value>
              <swe:Quantity>
                 <swe:uom>Hz</swe:uom>
                 <swe:value>0.016</swe:value>
              </swe:Quantity>
           </sps:value>
        </sps:InputParameter>
     </sps:parameters>
  </sps:Update>

Example of a response to an update request:

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:UpdateRequestResponse 
  xsi:schemaLocation="http://www.opengis.net/sps/1.0 http://schemas.opengis.net/sps/1.0.0/spsUpdateRequestResponse.xsd" 
  xmlns:gml="http://www.opengis.net/gml" xmlns:sps="http://www.opengis.net/sps/1.0" 
  xmlns:swe="http://www.opengis.net/swe/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <sps:taskID>1610</sps:taskID>
     <sps:status>confirmed</sps:status>
  </sps:UpdateRequestResponse>

Cancel

The Cancel operation allows the user to stop task that was submitted.

Example of a cancel request:

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:Cancel service="SPS" version="1.0.0" 
  xsi:schemaLocation="http://www.opengis.net/sps/1.0 http://schemas.opengis.net/sps/1.0.0/spsCancelRequest.xsd" 
  xmlns:sps="http://www.opengis.net/sps/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <sps:taskID>1610</sps:taskID>
  </sps:Cancel>

Example of a response to a cancel request:

  <?xml version="1.0" encoding="UTF-8"?>
  <sps:CancelRequestResponse 
  xsi:schemaLocation="http://www.opengis.net/sps/1.0 http://schemas.opengis.net/sps/1.0.0/spsCancelRequestResponse.xsd" 
  xmlns:gml="http://www.opengis.net/gml" xmlns:sps="http://www.opengis.net/sps/1.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <sps:taskID>1610</sps:taskID>
     <sps:status>confirmed</sps:status>
  </sps:CancelRequestResponse>

Web Notification Service

The Web Notification Service (WNS) provides an interface for the asynchronous communication with a user or web service. In general, web services support synchronous communication with a client. Let's assume we submitted a task to the SPS that will last some time for completion (e.g. gathering satellite images). In this case we need a way to be informed that our task was completed. Therefore the WNS can be used. The WNS supports the transmission of notifications via various transport protocols. Messages can be delivered via HTTP, instant messaging (e.g. XMPP), email, sms, fax and phone. Which protocols a WNS instance supports is given in its Capabilities.

Concept of Operation

As a first step the user will request service metadata by means of the GetCapabilities operation. The returned capabilities document enables the user to identify available sensors as well as the supported operations including potential parameter values of these operation. In a next step the user calls the DescribeTasking operation in order to request the information that is needed to prepare a submit request targeted at the sensors that the user has selected from the capabilities. The server returns information about all parameter that have to be set by the client in order to perform the submit operation. In advance to an invocation of the Submit operation the user checks via the GetFeasibility operation if the planned task can be executed. Dependent on the types of sensors façaded by the SPS, the SPS server action may be as simple as checking that the request parameters are valid, and are consistent with certain business rules, or it may be a complex operation that calculates the utilizability of the sensor to perform a specific task at the defined location, time, orientation, calibration etc.. If the planed task is feasible the user will submit the task by invoking the 'Submit' operation. The SPS instance will return a taskID, which can be used to check the status of the task (GetStatus), to modify the task (Update), or to Cancel the task. By invoking the DescribeResultAccess operation the user retrieves information where the observed data can be accessed from. The SPS may return the endpoint of a SOS, WMS, WFS or any other OGC Web Service that provides data. The invocation of the GetCapabilities operation upon the retrieved service endpoint allows for service level discovery on the data access service.

In the case that the user submitted a long lasting task, he might be interested in getting informed in an asynchronous way about the completion of his task. Therefore he will use the notificationTarget parameter of the Submit operation to specify the Web Notification Service that should be used to send information to the user. This required that the user is registered at the WNS and has defined his preferred information channels.

previous 5 Sensor Web Enablement next