use crate::Extension;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct ElectroOptical {
#[serde(skip_serializing_if = "Vec::is_empty", default)]
pub bands: Vec<Band>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cloud_cover: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub snow_cover: Option<f64>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Band {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub common_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub center_wavelength: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub full_width_half_max: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub solar_illumination: Option<f64>,
}
impl Extension for ElectroOptical {
const IDENTIFIER: &'static str = "https://stac-extensions.github.io/eo/v1.1.0/schema.json";
const PREFIX: &'static str = "eo";
}
#[cfg(test)]
mod tests {
use super::ElectroOptical;
use crate::{Fields, Item};
#[test]
fn item() {
let item: Item = crate::read("data/eo/item.json").unwrap();
let _: ElectroOptical = item.extension().unwrap();
}
}