36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
from app.config import get_settings
|
|
from app.core.geo import GeoPoint, sample_path
|
|
from app.core.landcover import LandcoverNotConfiguredError, landcover_path
|
|
from app.models.landcover import LandcoverPathRequest, LandcoverPathResponse, LandcoverSegment
|
|
|
|
|
|
def path_landcover(request: LandcoverPathRequest) -> LandcoverPathResponse:
|
|
settings = get_settings()
|
|
points = sample_path(
|
|
GeoPoint(lat=request.start.lat, lon=request.start.lon),
|
|
GeoPoint(lat=request.end.lat, lon=request.end.lon),
|
|
request.samples,
|
|
)
|
|
try:
|
|
result = landcover_path(
|
|
points,
|
|
landcover_path_dir=settings.landcover_path,
|
|
canopy_path_dir=settings.canopy_path,
|
|
)
|
|
except LandcoverNotConfiguredError as exc:
|
|
raise NotImplementedError(str(exc)) from exc
|
|
|
|
return LandcoverPathResponse(
|
|
segments=[
|
|
LandcoverSegment(
|
|
from_m=segment.from_m,
|
|
to_m=segment.to_m,
|
|
class_name=segment.class_name,
|
|
forest_type=segment.forest_type,
|
|
canopy_height_m=segment.canopy_height_m,
|
|
)
|
|
for segment in result.segments
|
|
],
|
|
vegetation_depth_m=result.vegetation_depth_m,
|
|
)
|