Files
geointel/backend/app/schemas/thematic_raster.py
T
Codex c2101ea8f9
GeoIntel release gates / Compile, test, contracts and builds (push) Canceled after 0s
GeoIntel release gates / Python and npm vulnerability policy (push) Canceled after 0s
GeoIntel release gates / GIS image, SBOM and container scan (push) Canceled after 0s
feat: complete governed Walloon coverage sources
2026-07-22 03:39:08 +02:00

122 lines
2.8 KiB
Python

from __future__ import annotations
from uuid import UUID
from pydantic import BaseModel, Field
from .operations import VectorSelectionBBox
class ThematicRasterAcquireRequest(BaseModel):
bbox: VectorSelectionBBox
area_id: UUID | None = None
product_key: str
force_refresh: bool = False
class ThematicRasterProductRead(BaseModel):
key: str
display_name: str
theme: str
metric_kind: str
coverage_id: str
native_resolution_m: float
source_crs: str
source_value_unit: str
observation_year: int
source_version: str
catalog_url: str
attribution: str
license_note: str
legend_min_label: str
legend_max_label: str
included_source_values: list[int]
limitation_message: str
analysis_resolution_m: float | None = None
coverage_zones: list[str] = Field(default_factory=list)
configured: bool = True
status: str = "configured"
class WalousAcquisitionResult(BaseModel):
output_dataset_id: UUID
reused: bool
provider: str
product_key: str
display_name: str
theme: str
metric_kind: str
resolution_m: float
width: int
height: int
valid_pixel_count: int
bbox_epsg4326: list[float]
bbox_epsg3812: list[float]
observation_year: int
source_value_unit: str
attribution: str
limitation_message: str
class ThematicRasterAcquisitionResult(BaseModel):
output_dataset_id: UUID
reused: bool
provider: str
product_key: str
display_name: str
theme: str
metric_kind: str
coverage_id: str
resolution_m: float
width: int
height: int
valid_pixel_count: int
bbox_epsg4326: list[float]
bbox_epsg31370: list[float]
observation_year: int
source_value_unit: str
attribution: str
limitation_message: str
class ThematicRasterSelectionRequest(BaseModel):
bbox: VectorSelectionBBox
area_id: UUID | None = None
class ThematicRasterMetric(BaseModel):
metric_key: str
metric_label: str
metric_value: float
metric_unit: str
aggregation_method: str
derived: bool = True
is_estimate: bool = True
class ThematicRasterSelectionSummary(BaseModel):
metric_label: str
metric_value: float
metric_unit: str
aggregation_method: str
primary_metric_key: str
metrics: list[ThematicRasterMetric]
class ThematicRasterSelectionResponse(BaseModel):
dataset_id: UUID
product_key: str
theme: str
metric_kind: str
selection_bbox: VectorSelectionBBox
selection_area_id: UUID | None = None
selected_cell_count: int
valid_cell_count: int
coverage_ratio: float
resolution_m: float
observation_year: int
summary: ThematicRasterSelectionSummary
unsupported_metrics: list[str]
limitation_message: str
generated_at: str