Hierarchical Procedure
The hierarchical procedure functionality offers the possibility to register and query not just individual single sensors but sensor networks.
Description
With the hierarchical procedure functionality sensor networks can be stored in the SOS, observations can be inserted for individual sensors of the sensor network and it is possible to request all observations for a sensor network. The following operations are effected by this functionality:
- RegisterSensor
- DescribeSensor
- GetObservation
Operations
In this section the effected operations are described.
RegisterSensor
With the RegisterSensor operations it is possible to create sensor networks and add new sensors to existing sensor networks by defining the parent and/or child sensors in the sensor description. Parent sensors should be registered before they a linked in a child sensor description. Child sensors should be defined in the components section of the sensor system description. The SOS parses the information from the sensor description and inserts the data and the mapping into the database.
Definition of parent sensors in a SensorML-System document
To define the parent sensors, add a capabilities element to the sensor description with the attribute
name="parentProcedures"
, a child element of type
swe:SimpleDataRecord
. Add
gml:metaDataProperty
elements for each parent sensor and set the parent sensor identifier as value of
xlink:title
.
Here is an example:
<sml:capabilities name="parentProcedures">
<swe:SimpleDataRecord definition="urn:ogc:def:property:capabilities">
<gml:metaDataProperty xlink:title="urn:ogc:object:feature:Station:52N:52n-station-1" />
<gml:metaDataProperty xlink:title="urn:ogc:object:feature:Network:52N:52n-network-1" />
</swe:SimpleDataRecord>
</sml:capabilities>
Definition of child sensors in a SensorML-System document
Child sensors should be defined in the
components
section of the sensor system description. This sections contains a
sml:ComponentsList
one or many
sml:component
where the contained element can be a
sml:Component
or
sml:System
.
Here is an example:
<sml:components>
<sml:ComponentList>
<sml:component name="gaugeSensor">
<sml:Component>
<sml:identification>
<sml:IdentifierList>
<sml:identifier>
<sml:Term definition="urn:ogc:def:identifier:OGC:uniqueID">
<sml:value>urn:ogc:object:feature:Sensor:water_level_sensor</sml:value>
</sml:Term>
</sml:identifier>
</sml:IdentifierList>
</sml:identification>
<sml:inputs>
<sml:InputList>
<sml:input name="gaugeHeight">
<swe:ObservableProperty definition="urn:ogc:def:phenomenon:OGC:1.0.30:waterlevel"/>
</sml:input>
</sml:InputList>
</sml:inputs>
<sml:outputs>
<sml:OutputList>
<sml:output name="gaugeHeight">
<swe:Quantity definition="urn:ogc:def:phenomenon:OGC:1.0.30:waterlevel">
<swe:uom code="cm"/>
</swe:Quantity>
</sml:output>
</sml:OutputList>
</sml:outputs>
</sml:Component>
</sml:component>
</sml:ComponentList>
</sml:components>
DescribeSensor
When sending a DescribeSensor request, the SOS adds the parent and child sensors to the sensor description document. The parent sensors are added as described before and the child sensors could be added as described before as full descriptions or as referenced link. This depends on a configuration parameter that can be set in the SOS configuration file. The link is a KVP DescribeSensor request URL.
Here is an example:
<sml:components>
<sml:ComponentList>
<sml:component name="component1" xlink:href="http:\\HOSTNAME:PORT\SOS_NAME\sos&request=DescribeSensor&service=SOS&version=1.0.0&procedure=SENSOR_IDENTIFIER&outputFormat=text/xml;subtype="sensorML/1.0.1"" />
</sml:ComponentList>
</sml:components>
GetObservation
The Hierarchical Procedure functionality allows users to send a GetObservation request with a parent sensor identifier. In this case the SOS returns the observations for the requested sensor (if available) and all of its child sensors.
Example requests
SOS 1.0.0
SOS 2.0