Persist map selections as derived datasets
This commit is contained in:
@@ -25,6 +25,7 @@ from app.schemas import (
|
||||
VectorClipRequest,
|
||||
VectorIntersectRequest,
|
||||
VectorSelectionBBox,
|
||||
VectorSelectionDeriveRequest,
|
||||
VectorSelectionRequest,
|
||||
VectorSelectionResponse,
|
||||
)
|
||||
@@ -205,6 +206,28 @@ def select_vector_features(
|
||||
return envelope(VectorSelectionResponse(**result).model_dump())
|
||||
|
||||
|
||||
@router.post("/datasets/{dataset_id}/vector/select/derive", status_code=201, response_model=dict)
|
||||
def derive_vector_selection_dataset(
|
||||
project_id: UUID,
|
||||
dataset_id: UUID,
|
||||
payload: VectorSelectionDeriveRequest,
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
dataset = DatasetService.get_dataset(db, dataset_id)
|
||||
if dataset.project_id != project_id:
|
||||
raise HTTPException(status_code=404, detail="Dataset not found")
|
||||
if dataset.dataset_type not in {"vector", "geojson"}:
|
||||
raise AppError(code="DATASET_NOT_VECTOR", message="Area selection requires a vector dataset", status_code=400)
|
||||
derived = VectorOperationsService.derive_selection_dataset(
|
||||
db=db,
|
||||
dataset_id=dataset_id,
|
||||
bbox=payload.bbox.model_dump(),
|
||||
limit=payload.limit,
|
||||
output_name=payload.output_name,
|
||||
)
|
||||
return envelope(derived.model_dump())
|
||||
|
||||
|
||||
@router.post("/datasets/{dataset_id}/vector/clip", status_code=201, response_model=dict)
|
||||
def clip_vector_dataset(
|
||||
project_id: UUID,
|
||||
|
||||
Reference in New Issue
Block a user