From 2351dd70aa6c89f20e70a6b99234fb67fa005cf2 Mon Sep 17 00:00:00 2001 From: Gregory Halverson Date: Fri, 3 Jan 2025 15:09:36 -0800 Subject: [PATCH] fixing `MultiRaster` reprojection --- pyproject.toml | 2 +- rasters/multi_raster.py | 21 +++++++++++++++++++ rasters/raster.py | 46 ++++++++++++++++++++++++----------------- rasters/version.txt | 2 +- 4 files changed, 50 insertions(+), 21 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6c2c25d..1cdd13f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "rasters" -version = "1.4.2" +version = "1.4.3" description = "raster processing toolkit" readme = "README.md" authors = [ diff --git a/rasters/multi_raster.py b/rasters/multi_raster.py index dd73ea0..aaddbc7 100644 --- a/rasters/multi_raster.py +++ b/rasters/multi_raster.py @@ -73,6 +73,27 @@ def __init__( self.cmap = cmap self._source_metadata = {} + def contain(self, array=None, geometry=None, nodata=None) -> Raster: + if array is None: + array = self.array + + if geometry is None: + geometry = self.geometry + + if np.size(array) == 1: + return array + + if nodata is None: + nodata = self.nodata + + return MultiRaster( + array, + nodata=nodata, + metadata=self.metadata, + cmap=self.cmap, + geometry=geometry + ) + @classmethod def stack(cls, rasters: List[Raster], *args, **kwargs) -> MultiRaster: geometry = rasters[0].geometry diff --git a/rasters/raster.py b/rasters/raster.py index f42e16d..4faeb8f 100644 --- a/rasters/raster.py +++ b/rasters/raster.py @@ -532,25 +532,33 @@ def contain(self, array=None, geometry=None, nodata=None) -> Raster: if nodata is None: nodata = self.nodata - # try: - if len(array.shape) == 2: - return Raster( - array, - nodata=nodata, - metadata=self.metadata, - cmap=self.cmap, - geometry=geometry - ) - elif len(array.shape) == 3: - return MultiRaster( - array, - nodata=nodata, - metadata=self.metadata, - cmap=self.cmap, - geometry=geometry - ) - else: - raise ValueError(f"invalid raster array with shape {array.shape}") + return Raster( + array, + nodata=nodata, + metadata=self.metadata, + cmap=self.cmap, + geometry=geometry + ) + + # # try: + # if len(array.shape) == 2: + # return Raster( + # array, + # nodata=nodata, + # metadata=self.metadata, + # cmap=self.cmap, + # geometry=geometry + # ) + # elif len(array.shape) == 3: + # return MultiRaster( + # array, + # nodata=nodata, + # metadata=self.metadata, + # cmap=self.cmap, + # geometry=geometry + # ) + # else: + # raise ValueError(f"invalid raster array with shape {array.shape}") # except Exception as e: # return array diff --git a/rasters/version.txt b/rasters/version.txt index c9929e3..3c80e4f 100644 --- a/rasters/version.txt +++ b/rasters/version.txt @@ -1 +1 @@ -1.4.2 \ No newline at end of file +1.4.3 \ No newline at end of file