Files
RadioPropagationApi/api/app/routers/terrain.py
T
2026-06-23 09:13:51 +03:00

34 lines
953 B
Python

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)