feat: complete governed Walloon coverage sources
This commit is contained in:
@@ -97,6 +97,7 @@ from app.services.mdk_bathymetry_acquisition_service import MdkBathymetryAcquisi
|
||||
from app.services.mdk_bathymetry_probe_service import MdkBathymetryProbeService
|
||||
from app.services.thematic_raster_acquisition_service import ThematicRasterAcquisitionService
|
||||
from app.services.thematic_raster_analysis_service import ThematicRasterAnalysisService
|
||||
from app.services.walous_land_cover_service import WalousLandCoverService
|
||||
from app.utils.response import envelope
|
||||
|
||||
router = APIRouter(prefix="/projects/{project_id}", tags=["datasets"])
|
||||
@@ -459,6 +460,33 @@ def list_thematic_raster_products(project_id: UUID, db: Session = Depends(get_db
|
||||
return envelope({"items": items, "total": len(items)})
|
||||
|
||||
|
||||
@router.post("/datasets/walous/acquire", response_model=Envelope[JobRead])
|
||||
def acquire_bounded_walous_land_cover(
|
||||
project_id: UUID,
|
||||
payload: ThematicRasterAcquireRequest,
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
job = JobService.run_sync_job(
|
||||
db=db,
|
||||
project_id=project_id,
|
||||
job_type="raster.walous.acquire",
|
||||
parameters=payload.model_dump(mode="json"),
|
||||
operation=lambda: WalousLandCoverService.acquire(db, project_id, payload),
|
||||
)
|
||||
return envelope(job)
|
||||
|
||||
|
||||
@router.get(
|
||||
"/datasets/walous/products",
|
||||
response_model=Envelope[ItemList[ThematicRasterProductRead]],
|
||||
)
|
||||
def list_walous_products(project_id: UUID, db: Session = Depends(get_db)):
|
||||
if not db.get(Project, project_id):
|
||||
raise AppError(code="PROJECT_NOT_FOUND", message="Project not found", status_code=404)
|
||||
items = WalousLandCoverService.list_products()
|
||||
return envelope({"items": items, "total": len(items)})
|
||||
|
||||
|
||||
@router.get("/datasets", response_model=Envelope[DatasetList])
|
||||
def list_datasets(
|
||||
project_id: UUID,
|
||||
@@ -1006,6 +1034,33 @@ def raster_thematic_image(
|
||||
)
|
||||
|
||||
|
||||
@router.post(
|
||||
"/datasets/{dataset_id}/raster/walous/select",
|
||||
response_model=Envelope[ThematicRasterSelectionResponse],
|
||||
)
|
||||
def raster_walous_selection(
|
||||
project_id: UUID,
|
||||
dataset_id: UUID,
|
||||
payload: ThematicRasterSelectionRequest,
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
return envelope(WalousLandCoverService.analyze(db, project_id, dataset_id, payload))
|
||||
|
||||
|
||||
@router.get("/datasets/{dataset_id}/raster/walous/image")
|
||||
def raster_walous_image(
|
||||
project_id: UUID,
|
||||
dataset_id: UUID,
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
content = WalousLandCoverService.render_png(db, project_id, dataset_id)
|
||||
return Response(
|
||||
content=content,
|
||||
media_type="image/png",
|
||||
headers={"Cache-Control": "private, max-age=86400"},
|
||||
)
|
||||
|
||||
|
||||
@router.get(
|
||||
"/datasets/{dataset_id}/raster/stats",
|
||||
response_model=Envelope[RasterStatsResponse],
|
||||
|
||||
Reference in New Issue
Block a user