34 lines
953 B
Python
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)
|