use super::Extension;
use serde::{Deserialize, Serialize};
pub use stac::{DataType, Statistics};
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct Raster {
pub bands: Vec<Band>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct Band {
#[serde(skip_serializing_if = "Option::is_none")]
pub nodata: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sampling: Option<Sampling>,
#[serde(skip_serializing_if = "Option::is_none")]
pub data_type: Option<DataType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bits_per_sample: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub spatial_resolution: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub statistics: Option<Statistics>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unit: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scale: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub offset: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub histogram: Option<Histogram>,
}
#[derive(Debug, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum Sampling {
Area,
Point,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Histogram {
pub count: u64,
pub min: f64,
pub max: f64,
pub buckets: Vec<u64>,
}
impl Extension for Raster {
const IDENTIFIER: &'static str = "https://stac-extensions.github.io/raster/v1.1.0/schema.json";
const PREFIX: &'static str = "raster";
}
impl Raster {
pub fn is_empty(&self) -> bool {
self.bands.is_empty()
}
}