Skip to content

Commit

Permalink
Issue #690/#712 best effort resample_spatial on cube without metadata
Browse files Browse the repository at this point in the history
  • Loading branch information
soxofaan committed Jan 23, 2025
1 parent 42c31b4 commit 87f44ab
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 5 deletions.
2 changes: 1 addition & 1 deletion openeo/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,7 @@ def drop_dimension(self, name: str = None) -> CubeMetadata:

def resample_spatial(
self,
resolution: Union[int, float, Tuple[float, float], Tuple[int, int]] = 0.0,
resolution: Union[float, Tuple[float, float], List[float]] = 0.0,
projection: Union[int, str, None] = None,
) -> CubeMetadata:
resolution = normalize_resample_resolution(resolution)
Expand Down
7 changes: 3 additions & 4 deletions openeo/rest/datacube.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
Band,
BandDimension,
CollectionMetadata,
CubeMetadata,
SpatialDimension,
TemporalDimension,
metadata_from_stac,
Expand Down Expand Up @@ -750,14 +751,12 @@ def band(self, band: Union[str, int]) -> DataCube:
@openeo_process
def resample_spatial(
self,
resolution: Union[int, float, Tuple[float, float], Tuple[int, int]] = 0.0,
resolution: Union[float, Tuple[float, float], List[float]] = 0.0,
projection: Union[int, str, None] = None,
method: str = "near",
align: str = "upper-left",
) -> DataCube:
metadata = (
self.metadata.resample_spatial(resolution=resolution, projection=projection) if self.metadata else None
)
metadata = (self.metadata or CubeMetadata()).resample_spatial(resolution=resolution, projection=projection)
return self.process(
process_id="resample_spatial",
arguments={
Expand Down
20 changes: 20 additions & 0 deletions tests/rest/datacube/test_datacube.py
Original file line number Diff line number Diff line change
Expand Up @@ -744,6 +744,26 @@ def test_resample_spatial(s2cube):
]


def test_resample_spatial_no_metadata(s2cube_without_metadata):
cube = s2cube_without_metadata.resample_spatial(resolution=(3, 5), projection=4578)
assert get_download_graph(cube, drop_load_collection=True, drop_save_result=True) == {
"resamplespatial1": {
"process_id": "resample_spatial",
"arguments": {
"data": {"from_node": "loadcollection1"},
"resolution": [3, 5],
"projection": 4578,
"method": "near",
"align": "upper-left",
},
}
}
assert cube.metadata.spatial_dimensions == [
SpatialDimension(name="x", extent=[None, None], crs=4578, step=3.0),
SpatialDimension(name="y", extent=[None, None], crs=4578, step=5.0),
]


def test_resample_cube_spatial(s2cube):
cube1 = s2cube.resample_spatial(resolution=[2.0, 3.0], projection=4578)
cube2 = s2cube.resample_spatial(resolution=10, projection=32631)
Expand Down

0 comments on commit 87f44ab

Please sign in to comment.