dev.sensorthings.observation
Schema Diff
+2 -1
Compatibility Analysis
Backward Compatible
No changes detected.
1
1
{
2
2
"id": "dev.sensorthings.observation",
3
3
"defs": {
4
4
"main": {
5
5
"key": "any",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"datastream",
11
11
"result",
12
12
"phenomenonTime"
13
13
],
14
14
"properties": {
15
15
"result": {
16
16
"refs": [
17
17
"#numericResult",
18
18
"#categoryResult",
19
19
"#booleanResult",
20
20
"#arrayResult",
21
21
"#geoPointResult"
22
22
],
23
23
"type": "union",
24
24
"description": "The observation result. Type determined by $type discriminator."
25
25
},
26
26
"datastream": {
27
27
"type": "string",
28
28
"format": "at-uri",
29
29
"description": "AT-URI of the parent Datastream"
30
30
},
31
31
"parameters": {
32
32
"type": "unknown",
33
33
"description": "Additional name-value pairs (e.g. depth, height above ground)"
34
34
},
35
35
"resultTime": {
36
36
"type": "string",
37
37
"format": "datetime",
38
38
"description": "Time the result became available (if different from phenomenonTime)"
39
39
},
40
40
"derivedFrom": {
41
41
"type": "array",
42
42
"items": {
43
43
"type": "string",
44
44
"format": "at-uri"
45
45
},
46
46
"maxLength": 16,
47
47
"description": "AT-URIs of source observations or datastreams from which this observation was derived (e.g. tidal residual derived from observed and predicted level datastreams)"
48
48
},
49
49
"resultQuality": {
50
50
"type": "string",
51
51
"maxLength": 64,
52
52
"description": "Quality flag as a token reference",
53
53
"knownValues": [
54
54
"dev.sensorthings.quality#good",
55
55
"dev.sensorthings.quality#suspect",
56
56
"dev.sensorthings.quality#missing"
57
57
]
58
58
},
59
59
"phenomenonTime": {
60
60
"type": "string",
61
61
"format": "datetime",
62
62
"description": "Time the phenomenon was observed (ISO 8601). Start of interval if phenomenonTimeEnd is present."
63
63
},
64
64
"featureOfInterest": {
65
65
"type": "string",
66
66
"format": "at-uri",
67
67
"description": "AT-URI of the feature being observed, if different from the Thing's location"
68
68
},
69
69
"phenomenonTimeEnd": {
70
70
"type": "string",
71
71
"format": "datetime",
72
72
"description": "End of observation interval (ISO 8601). If absent, the observation is an instant. Used for aggregates (daily means), processing windows (wave burst statistics), and accumulations (hourly rainfall)."
73
73
}
74
74
}
75
75
},
76
76
"description": "A single act of observation. The result type is determined by the $type discriminator on the result object."
77
77
},
78
78
"arrayResult": {
79
79
"type": "object",
80
80
"required": [
81
81
"values"
82
82
],
83
83
"properties": {
84
84
"labels": {
85
85
"type": "array",
86
86
"items": {
87
87
"type": "string",
88
88
"maxLength": 32
89
89
},
90
90
"maxLength": 1024,
91
91
"description": "Optional labels identifying each element (e.g. frequency bin edges in Hz, depth bin centres in m). Must be same length as values if present."
92
92
},
93
93
"values": {
94
94
"type": "array",
95
95
"items": {
96
96
"type": "integer"
97
97
},
98
98
"maxLength": 1024,
99
99
"description": "Ordered array of scaled integer values"
100
100
}
101
101
},
102
102
"description": "Array of scaled integer values sharing the parent Datastream's resultScaleFactor. Used for wave spectra (energy at frequency bins), current profiles (speed at depth bins), and similar array-valued observations."
103
103
},
104
104
"booleanResult": {
105
105
"type": "object",
106
106
"required": [
107
107
"value"
108
108
],
109
109
"properties": {
110
110
"value": {
111
111
"type": "boolean"
112
112
}
113
113
},
114
114
"description": "True/false observation. Used for threshold exceedances, detection flags, binary sensor states."
115
115
},
116
116
"numericResult": {
117
117
"type": "object",
118
118
"required": [
119
119
"value"
120
120
],
121
121
"properties": {
122
122
"value": {
123
123
"type": "integer"
124
124
}
125
125
},
126
126
"description": "Scaled integer result. Real value = value × 10^(−resultScaleFactor). The common case for continuous measurements."
127
127
},
128
128
"categoryResult": {
129
129
"type": "object",
130
130
"required": [
131
131
"value"
132
132
],
133
133
"properties": {
134
134
"value": {
135
135
"type": "string",
136
136
"maxLength": 256,
137
137
"description": "Code or label from the vocabulary"
138
138
},
139
139
"vocabulary": {
140
140
"type": "string",
141
141
"format": "uri",
142
142
"description": "URI of the code list or vocabulary (e.g. https://codes.wmo.int/306/4677 for WMO present weather codes)"
143
143
}
144
144
},
145
145
"description": "Categorical observation from a controlled vocabulary. Used for weather codes, flood alert levels, land cover classes, sea state."
146
146
},
147
147
"geoPointResult": {
148
148
"type": "object",
149
149
"required": [
150
150
"latE7",
151
151
"lonE7"
152
152
],
153
153
"properties": {
154
154
"altMm": {
155
155
"type": "integer",
156
156
"description": "Altitude in mm above WGS84 ellipsoid"
157
157
},
158
158
"latE7": {
159
159
"type": "integer",
160
160
"maximum": 900000000,
161
161
"minimum": -900000000
162
162
},
163
163
"lonE7": {
164
164
"type": "integer",
165
165
"maximum": 1800000000,
166
166
"minimum": -1800000000
167
167
}
168
168
},
169
169
"description": "Geographic position result for position-as-observation (e.g. GPS fix from a drifting buoy). Uses the same encoding as Thing.location."
170
170
}
171
171
},
172
172
"$type": "com.atproto.lexicon.schema",
173
-
"lexicon": 1
173
+
"lexicon": 1,
174
+
"revision": 1
174
175
}