from fastapi import APIRouter, Query from app.models.common import SurfaceKind from app.models.terrain import ( ElevationResponse, LosRequest, LosResponse, TerrainProfileRequest, TerrainProfileResponse, ) from app.routers.errors import as_501 from app.services import terrain as terrain_service router = APIRouter() @router.get("/elevation", response_model=ElevationResponse) def elevation( lat: float = Query(ge=-90, le=90), lon: float = Query(ge=-180, le=180), surface: SurfaceKind = "dtm", ) -> ElevationResponse: return as_501(lambda: terrain_service.elevation_at(lat, lon, surface)) @router.post("/profile", response_model=TerrainProfileResponse) def profile(request: TerrainProfileRequest) -> TerrainProfileResponse: return terrain_service.terrain_profile(request) @router.post("/los", response_model=LosResponse) def los(request: LosRequest) -> LosResponse: return terrain_service.los(request)