csdif_core/
model.rs

1// SPDX-License-Identifier: MIT
2
3use serde::{Deserialize, Serialize};
4
5/// Represents a physical sensor used in a CSDIF document.
6#[derive(Debug, Serialize, Deserialize, Clone)]
7pub struct Sensor {
8    pub id: String,
9    pub sensor_type: String,
10    pub unit: String,
11    pub location: Location,
12}
13
14/// Represents a geographic location.
15#[derive(Debug, Serialize, Deserialize, Clone)]
16pub struct Location {
17    pub latitude: f64,
18    pub longitude: f64,
19    pub elevation: Option<f64>,
20}
21
22/// Represents a single observation from a sensor.
23#[derive(Debug, Serialize, Deserialize, Clone)]
24pub struct Observation {
25    pub timestamp: String,
26    pub value: f64,
27    pub sensor_id: String,
28}
29
30/// Represents a full CSDIF document.
31#[derive(Debug, Serialize, Deserialize, Clone)]
32pub struct CsdifDocument {
33    pub sensors: Vec<Sensor>,
34    pub observations: Vec<Observation>,
35}
36