from pydantic import BaseModel, Field from app.models.common import AntennaPoint, OutputFormat, SurfaceKind class ViewshedRequest(BaseModel): observer: AntennaPoint radius_m: float = Field(gt=0) calc_radius_m: float | None = Field(default=None, gt=0) target_height_agl: float = Field(default=2, ge=0) surface: SurfaceKind = "dsm" k_factor: float = Field(default=1.333, gt=0) format: OutputFormat = "geotiff"