Skip to content

Documentation: 52N specific features

Jan Speckamp edited this page Aug 28, 2020 · 8 revisions

This page lists all custom features that are available in the 52N SensorThingsAPI Implementation.

Mandatory:

User-defined @iot.id

  • When POSTing an entity, the user can supply a custom @iot.id by specifying it in the JSON payload. If no custom id is supplied, the server autogenerates an uuid.

Restrictions on duplicate Observations

  • The combination of phenomenonTime+resultTime is restricted to be unique across all Observations observing the same Feature in a Datastream. This prevents insertion of duplicate Observations with different results for the same timestamp. (see also Issue#120)

SOS+Helgoland API Interoperability

  • A 52North SOS (since v5.0.0) can be run parallel to the STA using the same datasource and many entities are available in both platforms in parallel. Contact us for further information about this feature.
  • When POSTing an Observation with a parameter name defined in server.feature.observation.samplingGeometry (http://www.opengis.net/def/param-name/OGC-OM/2.0/samplingGeometry by default), the samplingGeometry is added to the Observation and is available as samplingGeometry in the SOS Interface.

Automatically update Datastream->phenomenonTime based on related observations

The phenomenonTime is designed to represent the temporal boundaries of all Observations of the Datastream. Clients (e.g. Helgoland) rely on this information to be accurate, which is not given when Observations are added dynamically and e.g. the Datastream is not patched to reflect those changes. The 52N STA therefore behaves the following way:

  • Value of Datastream->phenomenonTime is ignored when Datastream is posted/updated
  • Datastream->phenomenonTime is automatically updated when related observations are added/removed/updated

Version information

  • Version information about the STA version is available during runtime under the custom endpoint /version.

Optional:

[optional] escapeId Mode

  • by setting server.feature.escapeId the STA can be configured to automatically escape single-quoted identifiers. Note: This only affects inbound HTTP Requests, MQTT and the serialized responses are still based on the version without single quotes.

[optional] read-only Mode

  • by setting server.feature.mqttReadOnly and server.feature.httpReadOnly the STA can be started in read-only Mode. All HTTP POST and PUT Requests will be dropped with HTTP Status 405, all MQTT Publish Messages will be dropped silently.

[optional] Customizable PUBLISHable MQTT topics

  • by setting server.feature.mqttPublishTopics the user can control which MQTT Topics are accepting publish messages (Observations-only in the standard)

[optional] automatic extension of FOI geometry (linked via id in Thing->properties) if Thing->Location changes.

  • when server.feature.updateFOI is enabled and a Location is posted that is linked to a Thing which has a parameter called updateFOI that has the id of an FeatureOfInterest as value, the referenced FeatureOfInterest is automatically extended by the geometry of the Location.
  • This is used to capture data on moving Things, where the FOI is an ever expanding Linestring

[optional] allow additional encodingTypes for Sensor

  • when server.feature.variableEncodingType is enabled the checks for encodingType (standard only allows PDF and SensorML2 as encodingTypes) are bypassed.
  • Note: This only influences encodingType when SensorEntity is posted/patched directly, not when it is inserted nested inside a Datastream (deep insert)

[optional] Trajectory DatasetType

  • when server.feature.isMobile is enabled and Thing->properties contains the property "isMobile":true all newly created Datasets are created with DatasetType trajectory.
  • This allows for Interoperability with the 52North Helgoland API

[optional] Support for ProfileObservations

  • Observations can be annotated with their vertical extend (range or fixed value) using Observation->Parameters. This allows for Observations using the same FOI and the same Timestamp to be inserted into the STA. Currently only numeric values are supported.
  • If the vertical extend is a single value:
  • server.feature.observation.verticalFromTo defines the Observation->Parameters->name where the vertical component is imported from
  • If the vertical extend is a range:
    • server.feature.observation.verticalFrom defines the Observation->Parameters->name where the lower bound is imported from
    • server.feature.observation.verticalTo defines the Observation->Parameters->name where the upper bound is imported from