Connected Systems SWG
The 127th OGC Member Meeting
Alex Robin, Sensiasoft / GeoRobotix
25 September 2023
1
Meeting
sponsors
SWG Progress Report
2
SWG Roadmap
3
SWG Resources
4
SensorML JSON Schema�+ Extensions
5
SensorML Extensions
6
Logical Schemas
7
Formats Used
8
Resource Type | Encoding Formats (in Part 1/2) | Encoding Formats (in future Extensions) |
Procedure | GeoJSON/JSON-FG, SensorML JSON | FlatGeoBuff, Protobuf |
System | GeoJSON/JSON-FG, SensorML JSON | FlatGeoBuff, Protobuf |
Deployment | GeoJSON/JSON-FG, SensorML JSON | FlatGeoBuff, Protobuf |
Properties | SensorML JSON | |
DataStream | CSAPI JSON | |
Observation | CSAPI JSON (O&M model) | Protobuf, FlatBuffers |
ControlStream | CSAPI JSON | |
Command | CSAPI JSON | Protobuf, FlatBuffers |
CommandStatus | CSAPI JSON | Protobuf, FlatBuffers |
SystemEvent | SensorML JSON | |
Feature API Logical Schema
9
Example: Logical Schema with Protobuf
10
syntax = "proto3";
import "google/protobuf/timestamp.proto";
message Observation {
/* datastream ID */
optional int64 datastream_id = 1;
/* sampling feature ID */
optional int64 sf_id = 2 [ default = 0 ];
/* sampling time */
Timestamp time = 3 [ (schema_ref) = "phenomenonTime" ];
/* pan (deg) */
float pan = 1 [ (schema_ref) = "result/pan"];
/* tilt (deg) */
float tilt = 2 [ (schema_ref) = "result/tilt" ];
/* zoom factor (%) */
float zoom = 3 [ (schema_ref) = "result/zoom" ];
}
"resultSchema": {
"type": "DataRecord",
"fields": [
{
"name": "pan",
"type": "Quantity",
"definition": "http://sensorml.com/ont/swe/property/PanAngle",
"label": "Pan Angle",
"description": "Rotation of the camera around its vertical axis...",
"uom": {
"code": "deg"
}
},
{
"name": "tilt",
"type": "Quantity",
"definition": "http://sensorml.com/ont/swe/property/PanAngle",
"label": "Tilt Angle",
"description": "Rotation of the camera around its horizontal axis...",
"uom": {
"code": "deg"
}
},
{
"name": "zoom",
"type": "Quantity",
"definition": "http://sensorml.com/ont/swe/property/ZoomFactor",
"label": "Zoom Factor",
"description": "Amount of zoom, 0 being the highest FOV and 100 being the lowest",
"uom": {
"code": "%"
}
}
]
}
Protobuf Schema (.proto)
Logical Schema (SWE Common JSON)
"result": {
"pan": 145.0,
"tilt": 16.5,
"zoom": 25,
}
Hierarchical Systems
11
Hierarchical Systems - 1
12
Hierarchical Systems - 2
13
Hierarchical Systems - 3
14
Sampling Features
15
Sampling Features
16
Mobile Sampling Features - 1
Several sampling features moving along with the platform
17
Web Links
18
General Approach for Links
19
Links to External Resources
20
Links to Domain Features - 1
21
Observation
System
Domain�Feature
Sampling
Feature
Link�href = URL of Feature resource �if = http://www.opengis.net/spec/ogcapi-features-1/1.0
e.g. GW_Aquifer�HY_River, HY_Lake
(Proxy)
Feature
Link�rel = alternate�
Links to Domain Features - 1
22
{
"type": "Feature",
"id": "SP001",
"geometry": {
"type": "Point",
"coordinates": [ 12.31, -86.98]
},
"properties": {
"uid": "urn:x-usgs:sites:301244087575701",
"name": "USGS Site #301244087575701",
"description": "Well at MOBILE RIVER SAWMILL CORP",
"featureType": "http://www.opengis.net/def/samplingFeatureType/OGC-OM/2.0/SF_SamplingPoint",
"sampledFeature@link": {
"href": "https://api.usgs.gov/collections/hydrological_features/items/112TRRC?f=json",
"type" : "application/geo+json",
"title": "Aquifer 112TRRC",
"if": "http://www.opengis.net/spec/ogcapi-features-1/1.0",
}
},
"links": [
{
"href" : "https://data.example.org/api/samplingFeatures/SP001?f=json",
"rel" : "self",
"type" : "application/geo+json",
"title" : "this document"
}, {
"href" : "https://data.example.org/api/samplingFeatures/SP001?f=html",
"rel" : "alternate",
"type" : "text/html",
"title" : "this resource as HTML"
}
]
}
Links to Coverage Results - 1
23
Datastream
System
External�Coverage
Embedded Result
Link�href = URL of coverage resource �if = http://www.opengis.net/spec/ogcapi-coverages-1/1.0
rt = Coverage�
Observation
Links to Coverage Results - 2
24
{
"id": "fefaig45w46v5186d6w",
"datastream@id": "f44f85rrt",
"foi@id": "55f48g48th",
"phenomenonTime": "2023-04-03T18:45:23Z",
"resultTime": "2023-04-03T18:45:23Z",
"result@link": {
"href": "https://data.x-ecmwf.int/wms?service=WMS&version=1.1.0&request=GetMap&format=image/tiff&� layers=HRES-2T-20230215-0600-T1&bbox=-180,90,180,-90&width=3600&height=1800&srs=EPSG:4326",
"title": "Imagery on external WMS server",
"type": "image/tiff; application=geotiff",
"if": "http://www.opengis.net/def/serviceType/ogc/wms/1.1"
}
}
OpenSensorHub Demo
25
26
Thank you!
27