From a203c5eef62a6577516be413efda2d09830b06e8 Mon Sep 17 00:00:00 2001 From: j8seangel Date: Mon, 2 Sep 2024 14:56:56 +0200 Subject: [PATCH] normalize uploaded area geometries --- apps/fishing-map/features/areas/areas.slice.ts | 1 - .../datasets/upload/datasets-upload.utils.ts | 16 +++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/apps/fishing-map/features/areas/areas.slice.ts b/apps/fishing-map/features/areas/areas.slice.ts index f2ade67930..6611f490b0 100644 --- a/apps/fishing-map/features/areas/areas.slice.ts +++ b/apps/fishing-map/features/areas/areas.slice.ts @@ -190,7 +190,6 @@ export const fetchAreaDetailThunk = createAsyncThunk( } const dataset = selectDatasetById(datasetId)(getState() as RootState) const area = await fetchAreaDetail({ dataset, areaId, areaName, signal, simplify }) - debugger return area }, { diff --git a/apps/fishing-map/features/datasets/upload/datasets-upload.utils.ts b/apps/fishing-map/features/datasets/upload/datasets-upload.utils.ts index 5b92fc2cd4..cc7f368942 100644 --- a/apps/fishing-map/features/datasets/upload/datasets-upload.utils.ts +++ b/apps/fishing-map/features/datasets/upload/datasets-upload.utils.ts @@ -1,4 +1,13 @@ -import { Feature, FeatureCollection, GeoJsonProperties, Point, Polygon } from 'geojson' +import { + Feature, + FeatureCollection, + GeoJsonProperties, + GeometryCollection, + Point, + Polygon, +} from 'geojson' +import { flatten } from '@turf/flatten' +import union from '@turf/union' import { Dataset, DatasetCategory, @@ -23,6 +32,7 @@ import { isPrivateDataset } from 'features/datasets/datasets.utils' import { DatasetMetadata } from 'features/datasets/upload/NewDataset' import { getUTCDateTime } from 'utils/dates' import { FileType } from 'utils/files' +import { AreaGeometry } from 'features/areas/areas.slice' type ExtractMetadataProps = { name: string; sourceFormat?: FileType; data: any } @@ -184,6 +194,10 @@ export const parseGeoJsonProperties = ( return { ...feature, properties, + geometry: + (feature.geometry as unknown as GeometryCollection).type === 'GeometryCollection' + ? (union(flatten(feature.geometry))?.geometry as AreaGeometry) + : (feature.geometry as AreaGeometry), } }) as Feature[], }