Skip to content

Commit a5dfb92

Browse files
Merge pull request #207 from ckmah/main
merscope reader remove invalid polygons
2 parents d4b9c8c + 15f8f68 commit a5dfb92

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

src/spatialdata_io/readers/merscope.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import xarray
1616
from dask import array as da
1717
from dask_image.imread import imread
18+
from shapely.geometry import MultiPolygon
1819
from spatialdata import SpatialData
1920
from spatialdata._logging import logger
2021
from spatialdata.models import Image2DModel, PointsModel, ShapesModel, TableModel
@@ -313,7 +314,8 @@ def _get_polygons(boundaries_path: Path, transformations: dict[str, BaseTransfor
313314
geo_df = geopandas.read_parquet(boundaries_path)
314315
geo_df = geo_df.rename_geometry("geometry")
315316
geo_df = geo_df[geo_df[MerscopeKeys.Z_INDEX] == 0] # Avoid duplicate boundaries on all z-levels
316-
geo_df.geometry = geo_df.geometry.map(lambda x: x.geoms[0]) # The MultiPolygons contain only one polygon
317+
geo_df = geo_df[geo_df.geometry.is_valid] # Remove invalid geometries
318+
geo_df.geometry = geo_df.geometry.map(lambda x: MultiPolygon(x.geoms))
317319
geo_df.index = geo_df[MerscopeKeys.METADATA_CELL_KEY].astype(str)
318320

319321
return ShapesModel.parse(geo_df, transformations=transformations)

0 commit comments

Comments
 (0)