From 471a500ef1cc8c2a9c1938651b545b8100b20b0c Mon Sep 17 00:00:00 2001 From: sujan Date: Thu, 11 Jul 2024 10:03:46 +0545 Subject: [PATCH 1/3] feat: update split-by-square to avoid creating tasks without any features in it --- src/backend/app/projects/project_crud.py | 7 ++++++- src/backend/app/projects/project_routes.py | 17 ++++++++++++++--- .../components/createnewproject/SplitTasks.tsx | 1 + 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/backend/app/projects/project_crud.py b/src/backend/app/projects/project_crud.py index 942912eb2e..9aa2d43c39 100644 --- a/src/backend/app/projects/project_crud.py +++ b/src/backend/app/projects/project_crud.py @@ -398,7 +398,11 @@ async def create_tasks_from_geojson( raise HTTPException(HTTPStatus.UNPROCESSABLE_ENTITY, detail=e) from e -async def preview_split_by_square(boundary: str, meters: int): +async def preview_split_by_square( + boundary: str, + meters: int, + extract_geojson: Optional[FeatureCollection] = None, +): """Preview split by square for a project boundary. Use a lambda function to remove the "z" dimension from each @@ -409,6 +413,7 @@ async def preview_split_by_square(boundary: str, meters: int): return await run_in_threadpool( lambda: split_by_square( boundary, + osm_extract=extract_geojson, meters=meters, ) ) diff --git a/src/backend/app/projects/project_routes.py b/src/backend/app/projects/project_routes.py index 90b627067c..a446db47d0 100644 --- a/src/backend/app/projects/project_routes.py +++ b/src/backend/app/projects/project_routes.py @@ -801,7 +801,9 @@ async def get_categories(current_user: AuthUser = Depends(login_required)): @router.post("/preview-split-by-square/") async def preview_split_by_square( - project_geojson: UploadFile = File(...), dimension: int = Form(100) + project_geojson: UploadFile = File(...), + extract_geojson: UploadFile = File(None), + dimension: int = Form(100), ): """Preview splitting by square. @@ -820,9 +822,18 @@ async def preview_split_by_square( # Validatiing Coordinate Reference System await check_crs(boundary) + parsed_extract = None + if extract_geojson: + geojson_data = await extract_geojson.read() + parsed_extract = parse_and_filter_geojson(geojson_data, filter=False) + if parsed_extract: + await check_crs(parsed_extract) + else: + log.warning("Parsed geojson file contained no geometries") - result = await project_crud.preview_split_by_square(boundary, dimension) - return result + return await project_crud.preview_split_by_square( + boundary, dimension, parsed_extract + ) @router.post("/generate-data-extract/") diff --git a/src/frontend/src/components/createnewproject/SplitTasks.tsx b/src/frontend/src/components/createnewproject/SplitTasks.tsx index 913b2e0308..80290ed8fa 100644 --- a/src/frontend/src/components/createnewproject/SplitTasks.tsx +++ b/src/frontend/src/components/createnewproject/SplitTasks.tsx @@ -172,6 +172,7 @@ const SplitTasks = ({ flag, geojsonFile, setGeojsonFile, customDataExtractUpload dispatch( GetDividedTaskFromGeojson(`${import.meta.env.VITE_API_URL}/projects/preview-split-by-square/`, { geojson: drawnGeojsonFile, + extract_geojson: formValues.dataExtractWays === 'osm_data_extract' ? null : dataExtractFile, dimension: formValues?.dimension, }), ); From dbd131d2380d32ccace0eb1334ab4f03aff6cd86 Mon Sep 17 00:00:00 2001 From: spwoodcock Date: Fri, 12 Jul 2024 10:00:18 +0100 Subject: [PATCH 2/3] build: update fmtm-splitter to v1.3.0 for latest fixies --- src/backend/pdm.lock | 6 +++--- src/backend/pyproject.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/backend/pdm.lock b/src/backend/pdm.lock index 99e5439502..3257aa635b 100644 --- a/src/backend/pdm.lock +++ b/src/backend/pdm.lock @@ -671,7 +671,7 @@ files = [ [[package]] name = "fmtm-splitter" -version = "1.2.2" +version = "1.3.0" requires_python = ">=3.10" summary = "A utility for splitting an AOI into multiple tasks." dependencies = [ @@ -682,8 +682,8 @@ dependencies = [ "shapely>=1.8.1", ] files = [ - {file = "fmtm-splitter-1.2.2.tar.gz", hash = "sha256:9384dbf00c0e53e24e1f13046ae6693e13567ff3dc0f59f29f4a96ac4a54105e"}, - {file = "fmtm_splitter-1.2.2-py3-none-any.whl", hash = "sha256:bbef78cf0e1f2b67f8c8aeaadb7fd2927bfd333d216927059a12abbbb04a5742"}, + {file = "fmtm-splitter-1.3.0.tar.gz", hash = "sha256:047ecc3d71234b8949ddb9422039ef900a128b2417d6f5c8e22c5e14eab84ae4"}, + {file = "fmtm_splitter-1.3.0-py3-none-any.whl", hash = "sha256:194ea5dca1e5ffd0d8944ae9566c7c752c8bb95a648bca19cea3df7d4a6e0487"}, ] [[package]] diff --git a/src/backend/pyproject.toml b/src/backend/pyproject.toml index a1cc81b3e9..305a207ccf 100644 --- a/src/backend/pyproject.toml +++ b/src/backend/pyproject.toml @@ -49,7 +49,7 @@ dependencies = [ "osm-login-python==1.0.3", "osm-fieldwork==0.12.4", "osm-rawdata==0.3.0", - "fmtm-splitter==1.2.2", + "fmtm-splitter==1.3.0", ] requires-python = ">=3.10" readme = "../../README.md" From b8c242bd5b48ad5e54a1b3021656f62434520fb4 Mon Sep 17 00:00:00 2001 From: spwoodcock Date: Fri, 12 Jul 2024 10:11:14 +0100 Subject: [PATCH 3/3] build: relock backend deps after rebase --- src/backend/pdm.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/pdm.lock b/src/backend/pdm.lock index 3257aa635b..d3cb6e7eeb 100644 --- a/src/backend/pdm.lock +++ b/src/backend/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "debug", "dev", "docs", "test", "monitoring"] strategy = ["cross_platform"] lock_version = "4.4.1" -content_hash = "sha256:498635b56dc6a5c8266b8580ec0b4e7bc794c92de8693ff9028f413ac147fe2b" +content_hash = "sha256:21738350d12719a1b135d272098df6b389ebdfdac51ea377cd59adaade624aac" [[package]] name = "aiohttp"