104 lines
2.5 KiB
Python
104 lines
2.5 KiB
Python
from __future__ import annotations
|
|
|
|
from uuid import UUID
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from .operations import VectorSelectionBBox
|
|
|
|
|
|
class FloodHazardAcquireRequest(BaseModel):
|
|
bbox: VectorSelectionBBox
|
|
area_id: UUID | None = None
|
|
product_key: str = "pluviaal_current_t100"
|
|
resolution_m: float | None = Field(default=None, ge=2.0, le=20.0)
|
|
force_refresh: bool = False
|
|
|
|
|
|
class FloodHazardProductRead(BaseModel):
|
|
key: str
|
|
display_name: str
|
|
mechanism: str
|
|
climate_context: str
|
|
probability_class: str
|
|
return_period_years: int
|
|
coverage_id: str
|
|
native_resolution_m: float
|
|
source_crs: str
|
|
source_value_unit: str
|
|
normalized_value_unit: str
|
|
published_on: str
|
|
catalog_url: str
|
|
attribution: str
|
|
limitation_message: str
|
|
|
|
|
|
class FloodHazardAcquisitionResult(BaseModel):
|
|
output_dataset_id: UUID
|
|
reused: bool
|
|
provider: str
|
|
product_key: str
|
|
display_name: str
|
|
mechanism: str
|
|
climate_context: str
|
|
probability_class: str
|
|
return_period_years: int
|
|
coverage_id: str
|
|
resolution_m: float
|
|
width: int
|
|
height: int
|
|
inundated_pixel_count: int
|
|
bbox_epsg4326: list[float]
|
|
bbox_epsg31370: list[float]
|
|
attribution: str
|
|
limitation_message: str
|
|
|
|
|
|
class FloodHazardSelectionRequest(BaseModel):
|
|
bbox: VectorSelectionBBox
|
|
area_id: UUID | None = None
|
|
|
|
|
|
class FloodHazardPartitionSelectionRequest(FloodHazardSelectionRequest):
|
|
product_key: str = "pluviaal_current_t100"
|
|
dataset_ids: list[UUID] | None = Field(default=None, min_length=1, max_length=16)
|
|
|
|
|
|
class FloodHazardMetric(BaseModel):
|
|
metric_key: str
|
|
metric_label: str
|
|
metric_value: float
|
|
metric_unit: str
|
|
aggregation_method: str
|
|
derived: bool = True
|
|
|
|
|
|
class FloodHazardSelectionSummary(BaseModel):
|
|
metric_label: str
|
|
metric_value: float
|
|
metric_unit: str
|
|
aggregation_method: str
|
|
primary_metric_key: str
|
|
metrics: list[FloodHazardMetric]
|
|
|
|
|
|
class FloodHazardSelectionResponse(BaseModel):
|
|
dataset_id: UUID
|
|
dataset_ids: list[UUID] = Field(default_factory=list)
|
|
partition_count: int = Field(default=1, ge=1)
|
|
product_key: str
|
|
mechanism: str
|
|
climate_context: str
|
|
probability_class: str
|
|
return_period_years: int
|
|
selection_bbox: VectorSelectionBBox
|
|
selection_area_id: UUID | None = None
|
|
selected_cell_count: int
|
|
inundated_cell_count: int
|
|
inundated_fraction: float
|
|
resolution_m: float
|
|
summary: FloodHazardSelectionSummary
|
|
unsupported_metrics: list[str]
|
|
limitation_message: str
|
|
generated_at: str
|