Datachunk
For minimizing the network load and optimizing performance, BlueForest aggregates records, series and samples into chunk of time. The duration of a chunk is variable, so it MAY contain a variable number of records, series and samples.
Datachunk class diagram
Datachunk object
The datachunk
object describe the datachunk and its properties.
Property | Name | Type | Card. | Description |
---|---|---|---|---|
v | Version | string | 1 | Datachunk Version. Actually : 2.1 |
f | From | DateTime | 1 | Timestamp when this datachunk start. UTC Time. |
t | To | DateTime | 1 | Timestamp when this datachunk end. UTC Time. |
bbox | Bounding box | float | * | GeoJson bounding box for this serie. At a minimum, a bounding box will have four coordinates which define the box. Those “bbox” values define shapes with edges that follow lines of constant longitude, latitude, and elevation. More information |
m | Measurements | string | * | Measurements list included in this datachunk |
r | Records | Record | * | List of Records |
e | Extensions | dynamic | ? | User-customizable key-value properties. Keys and values are fully customizable and up to the user. |
Record object
The record
object describe the record and its properties.
Property | Name | Type | Card. | Description |
---|---|---|---|---|
d | DeviceId | string | 1 | Device Id |
u | Unit | string | 1 or * | CompoundName string or array. eg : a/b or a.c or ["a", "b"] |
tw | Time Window | TimeWindow | 1 | Time window when this record start and end. UTC Time. |
bbox | Bounding box | float | * | GeoJson bounding box for this serie. At a minimum, a bounding box will have four coordinates which define the box. Those “bbox” values define shapes with edges that follow lines of constant longitude, latitude, and elevation. More information |
s | Series | Serie | * | List of Series |
e | Extensions | dynamic | ? | User-customizable key-value properties. Keys and values are fully customizable and up to the user. |
Serie object
The serie
object describe the serie and its properties.
Property | Name | Type | Card. | Description |
---|---|---|---|---|
m | Measurement | string | 1 | Measurement name |
t | Type | string | ? | Sample value type |
schema | Schema | dynamic | ? | Optional schema, either a string for known type to urn for description or inline description. |
tw | Time Window | TimeWindow | 1 | Time window when this serie start and end. UTC Time |
i | Indexes | Indexes | 1 | Bounding indexes |
bbox | Bounding box | float | * | GeoJson bounding box for this serie. At a minimum, a bounding box will have four coordinates which define the box. Those “bbox” values define shapes with edges that follow lines of constant longitude, latitude, and elevation. More information |
s | Samples | Sample or ArraySample |
* or 1 |
List of Samples or An ArraySample |
e | Extensions | dynamic | ? | User-customizable key-value properties. Keys and values are fully customizable and up to the user. |
Time Window object
The timeWindow
object describe the min and max timestamp included in samples. UTC Time.
Property | Name | Type | Card. | Description |
---|---|---|---|---|
f | From | DateTime | 1 | Timestamp when this window start. UTC Time. |
t | To | DateTime | 1 | Timestamp when this window end. UTC Time. |
Indexes object
The indexes
object describe the min and max indexes included in samples.
Property | Name | Type | Card. | Description |
---|---|---|---|---|
f | From | Int64 | 1 | Samples’ min Index representing the order those samples were generated on the device |
t | To | Int64 | 1 | Samples’ max Index representing the order those samples were generated on the device |
Sample object
The sample
object describe the sample and its properties. Sample represent a piece of data at a given time.
Property | Name | Type | Card. | Description |
---|---|---|---|---|
i | Index | Int64 | 1 | Samples’ Index represent the order those samples were generated on the device |
t | Timestamp | DateTime | 1 | Timestamp when the measure was taken. UTC Time |
q | Quality | string | ? | Value’s quality |
g | Geometry | Point | ? | A location point to add spatial information. See Point object |
v | Value | dynamic | 1 | Value contains the actual data. As it is specific to each type of serie, a value MUST be : - an integer - a float - a boolean - a complex object (ex: a Location object) |
e | Extensions | dynamic | ? | User-customizable key-value properties. Keys and values are fully customizable and up to the user. |
Difference between Location Value and Geometry
Location Value : if sample object Value
is representing a location, then you SHOULD use complex object Location
as value and not using the location
extension. See Location object.
Geometry : if sample object Value
is not representing a spatial value, then you COULD add a Geometry
information to add spatial information to value. See Point object.
ArraySample object
The arraySample
object is a set of tables with identical length allowing to optimize the volume of data when a serie have a large number of samples. As a reminder, a sample represent a piece of data at a given time.
Property | Name | Type | Card. | Description |
---|---|---|---|---|
t | Type | string | 1 | “array” |
i | Indexes | Int64 | * | Samples’ Indexes list representing the order those samples were generated on the device |
t | Timestamps | DateTime | * | Timestamps list when the measures were taken. UTC Time |
q | Qualities | string | * | Value’s qualities list |
g | Geometries | Point | * | Location points list to add spatial information. See Point object |
v | Values | dynamic or Locations |
* or 1 |
Values list contains the actual data. As it is specific to each type of serie, each value MUST be : - an integer - a float - a boolean - a complex object (ex: a Location object) Values COULD be also a Locations object representing a list of location as a GeoJson Linestring. |
e | Extensions | dynamic | * | List of user-customizable key-value properties. Keys and values are fully customizable and up to the user. |
Location object
The Location
object describe a sample value as a location. This object is based on point
object from GeoJSON standard.
Property | Name | Type | Card. | Description |
---|---|---|---|---|
coordinates | Coordinates | Float | * | For type “Point”, the “coordinates” member is a single position. A single position is an array of numbers. There MUST be two or more elements. The first two elements are longitude and latitude, precisely in that order and using decimal numbers. Altitude or elevation MAY be included as an optional third element. Altitude is meters above mean sea level. |
type | Type | String | 1 | The value of a Location object’s “type” member MUST be “Point” |
f | Fix | Boolean | ? | Fix quality |
pa | Precision Acc. | Float | ? | Precision accuracy |
m | Magnetic Var. | Float | ? | Magnetic Variation |
e | Extensions | dynamic | ? | User-customizable key-value properties. Keys and values are fully customizable and up to the user. |
Locations object (Linestring)
The Locations
object describe a sample value as a list of locations. This object is based on lineString
object from GeoJSON standard.
Property | Name | Type | Card. | Description |
---|---|---|---|---|
coordinates | Coordinates | Float[] | * | For type “Linestring”, For type “LineString”, the “coordinates” member is an array of two or more positions. A position is an array of numbers. There MUST be two or more elements in position arrays. The first two elements are longitude and latitude, precisely in that order and using decimal numbers. Altitude or elevation MAY be included as an optional third element. Altitude is meters above mean sea level. |
type | Type | String | 1 | The value of a Locations object’s “type” member MUST be “LineString” |
f | Fixes | Boolean | * | Fixes list |
pa | Precisions Acc. | Float | * | Precisions accuracy list |
m | Magnetic Vars. | Float | * | Magnetic Variations list |
e | Extensions | dynamic | * | List of user-customizable key-value properties. Keys and values are fully customizable and up to the user. |
Point object
The Point
object add spatial information on sample. This object is based on point
object from GeoJSON standard.
Property | Name | Type | Card. | Description |
---|---|---|---|---|
coordinates | Coordinates | Float | * | For type “Point”, the “coordinates” member is a single position. A single position is an array of numbers. There MUST be two or more elements. The first two elements are longitude and latitude, precisely in that order and using decimal numbers. Altitude or elevation MAY be included as an optional third element. Altitude is meters above mean sea level. |
type | Type | String | 1 | The value of a Point object’s “type” member MUST be “Point” |