use derive_getters::Getters;
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Clone, Serialize, derive_builder::Builder, Getters)]
#[builder(setter(into, strip_option))]
#[serde(rename_all = "camelCase")]
pub struct ExportImageParameters {
bbox: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
size: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
format: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
pixel_type: Option<PixelType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
no_data: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
interpolation: Option<InterpolationType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
compression_quality: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
band_ids: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
mosaic_rule: Option<MosaicRule>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
rendering_rule: Option<RenderingRule>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "bboxSR")]
#[builder(default)]
bbox_sr: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "imageSR")]
#[builder(default)]
image_sr: Option<u32>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Getters)]
#[serde(rename_all = "camelCase")]
pub struct ExportImageResult {
href: String,
#[serde(skip_serializing_if = "Option::is_none")]
width: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
height: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
extent: Option<Value>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum PixelType {
U8,
S8,
U16,
S16,
U32,
S32,
F32,
F64,
Unknown,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum InterpolationType {
#[serde(rename = "RSP_NearestNeighbor")]
NearestNeighbor,
#[serde(rename = "RSP_BilinearInterpolation")]
BilinearInterpolation,
#[serde(rename = "RSP_CubicConvolution")]
CubicConvolution,
#[serde(rename = "RSP_Majority")]
Majority,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Getters, derive_new::new)]
#[serde(rename_all = "camelCase")]
pub struct MosaicRule {
mosaic_method: String,
#[serde(skip_serializing_if = "Option::is_none")]
mosaic_operation: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
lock_raster_ids: Option<Vec<i64>>,
#[serde(skip_serializing_if = "Option::is_none")]
order_by_field: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
ascending: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Getters, derive_new::new)]
#[serde(rename_all = "camelCase")]
pub struct RenderingRule {
raster_function: String,
#[serde(skip_serializing_if = "Option::is_none")]
raster_function_arguments: Option<Value>,
}
#[derive(Debug, Clone, Serialize, derive_builder::Builder, Getters)]
#[builder(setter(into, strip_option))]
#[serde(rename_all = "camelCase")]
pub struct IdentifyParameters {
geometry: String,
geometry_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
mosaic_rule: Option<MosaicRule>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
rendering_rule: Option<RenderingRule>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "geometrySR")]
#[builder(default)]
geometry_sr: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
return_geometry: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
return_catalog_items: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Getters)]
#[serde(rename_all = "camelCase")]
pub struct ImageIdentifyResult {
#[serde(skip_serializing_if = "Option::is_none")]
value: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
location: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
properties: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
catalog_items: Option<Value>,
}
#[derive(Debug, Clone, Serialize, derive_builder::Builder, Getters)]
#[builder(setter(into, strip_option))]
#[serde(rename_all = "camelCase")]
pub struct SampleParameters {
geometry: String,
geometry_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "geometrySR")]
#[builder(default)]
geometry_sr: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
sample_count: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
sample_distance: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
out_fields: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
return_geometry: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
mosaic_rule: Option<MosaicRule>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
rendering_rule: Option<RenderingRule>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Getters)]
#[serde(rename_all = "camelCase")]
pub struct SampleResult {
samples: Vec<Value>,
}
#[derive(Debug, Clone, Serialize, derive_builder::Builder, Getters)]
#[builder(setter(into, strip_option))]
#[serde(rename_all = "camelCase")]
pub struct HistogramParameters {
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
geometry: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
geometry_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "geometrySR")]
#[builder(default)]
geometry_sr: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
mosaic_rule: Option<MosaicRule>,
#[serde(skip_serializing_if = "Option::is_none")]
#[builder(default)]
rendering_rule: Option<RenderingRule>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Getters)]
#[serde(rename_all = "camelCase")]
pub struct HistogramResult {
histograms: Vec<Histogram>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Getters)]
#[serde(rename_all = "camelCase")]
pub struct Histogram {
counts: Vec<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
min: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
max: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
mean: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "stddev")]
std_dev: Option<f64>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Getters)]
#[serde(rename_all = "camelCase")]
pub struct RasterInfo {
#[serde(skip_serializing_if = "Option::is_none")]
band_count: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pixel_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
extent: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
spatial_reference: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pixel_size_x: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pixel_size_y: Option<f64>,
}