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

44 lines
1.1 KiB
Python

from typing import Annotated
from fastapi import APIRouter, Depends, Query
from sqlalchemy.orm import Session
from app.deps import get_db
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,
db: Annotated[Session, Depends(get_db)],
) -> TerrainProfileResponse:
return terrain_service.terrain_profile(request, db)
@router.post("/los", response_model=LosResponse)
def los(
request: LosRequest,
db: Annotated[Session, Depends(get_db)],
) -> LosResponse:
return terrain_service.los(request, db)