Skip to content

Commit 8d200c9

Browse files
committed
Issue #690/#712 fix band order bug
1 parent 77c8673 commit 8d200c9

File tree

3 files changed

+32
-24
lines changed

3 files changed

+32
-24
lines changed

openeo/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.38.0a2"
1+
__version__ = "0.38.0a3"

openeo/metadata.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -437,16 +437,17 @@ def resample_spatial(
437437
dimensions = list(self._dimensions)
438438

439439
# Find and replace spatial dimensions
440-
spatial_indixes = [i for i, d in enumerate(dimensions) if isinstance(d, SpatialDimension)]
441-
if len(spatial_indixes) != 2:
442-
raise MetadataException(f"Expected two spatial resolutions but found {spatial_indixes=}")
443-
for i in spatial_indixes:
440+
spatial_indices = [i for i, d in enumerate(dimensions) if isinstance(d, SpatialDimension)]
441+
if len(spatial_indices) != 2:
442+
raise MetadataException(f"Expected two spatial resolutions but found {spatial_indices=}")
443+
assert len(resolution) == 2
444+
for i, r in zip(spatial_indices, resolution):
444445
dim: SpatialDimension = dimensions[i]
445446
dimensions[i] = SpatialDimension(
446447
name=dim.name,
447448
extent=dim.extent,
448449
crs=projection or dim.crs,
449-
step=resolution[i] if resolution[i] else dim.step,
450+
step=r if r != 0.0 else dim.step,
450451
)
451452

452453
return self._clone_and_update(dimensions=dimensions)

tests/test_metadata.py

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,23 @@
2121
)
2222
from openeo.testing.stac import StacDummyBuilder
2323

24+
CUBE_METADATA_XYTB = CubeMetadata(
25+
dimensions=[
26+
SpatialDimension(name="x", extent=[2, 7], crs=4326, step=0.1),
27+
SpatialDimension(name="y", extent=[49, 52], crs=4326, step=0.1),
28+
TemporalDimension(name="t", extent=["2024-09-01", "2024-12-01"]),
29+
BandDimension(name="bands", bands=[Band("B2"), Band("B3")]),
30+
]
31+
)
2432

25-
@pytest.fixture
26-
def xytb_cube_metadata() -> CubeMetadata:
27-
"""Generic 4D cube (x, y, temporal, band) metadata"""
28-
return CubeMetadata(
29-
dimensions=[
30-
SpatialDimension(name="x", extent=[2, 7], crs=4326, step=0.1),
31-
SpatialDimension(name="y", extent=[49, 52], crs=4326, step=0.1),
32-
TemporalDimension(name="t", extent=["2024-09-01", "2024-12-01"]),
33-
BandDimension(name="bands", bands=[Band("B2"), Band("B3")]),
34-
]
35-
)
33+
CUBE_METADATA_TBXY = CubeMetadata(
34+
dimensions=[
35+
TemporalDimension(name="t", extent=["2024-09-01", "2024-12-01"]),
36+
BandDimension(name="bands", bands=[Band("B2"), Band("B3")]),
37+
SpatialDimension(name="x", extent=[2, 7], crs=4326, step=0.1),
38+
SpatialDimension(name="y", extent=[49, 52], crs=4326, step=0.1),
39+
]
40+
)
3641

3742

3843
def test_metadata_get():
@@ -941,20 +946,22 @@ def test_metadata_from_stac_temporal_dimension(tmp_path, stac_dict, expected):
941946
({"resolution": [11, 22], "projection": 32631}, {"crs": 32631, "step": 11}, {"crs": 32631, "step": 22}),
942947
],
943948
)
944-
def test_metadata_resample_spatial(xytb_cube_metadata, kwargs, expected_x, expected_y):
945-
metadata = xytb_cube_metadata.resample_spatial(**kwargs)
949+
@pytest.mark.parametrize("cube_metadata", [CUBE_METADATA_XYTB, CUBE_METADATA_TBXY])
950+
def test_metadata_resample_spatial(cube_metadata, kwargs, expected_x, expected_y):
951+
metadata = cube_metadata.resample_spatial(**kwargs)
946952
assert isinstance(metadata, CubeMetadata)
947953
assert metadata.spatial_dimensions == [
948954
SpatialDimension(name="x", extent=[2, 7], **expected_x),
949955
SpatialDimension(name="y", extent=[49, 52], **expected_y),
950956
]
951-
assert metadata.temporal_dimension == xytb_cube_metadata.temporal_dimension
952-
assert metadata.band_dimension == xytb_cube_metadata.band_dimension
957+
assert metadata.temporal_dimension == cube_metadata.temporal_dimension
958+
assert metadata.band_dimension == cube_metadata.band_dimension
953959

954960

955-
def test_metadata_resample_cube_spatial(xytb_cube_metadata):
956-
metadata1 = xytb_cube_metadata.resample_spatial(resolution=(11, 22), projection=32631)
957-
metadata2 = xytb_cube_metadata.resample_spatial(resolution=0.5)
961+
@pytest.mark.parametrize("cube_metadata", [CUBE_METADATA_XYTB, CUBE_METADATA_TBXY])
962+
def test_metadata_resample_cube_spatial(cube_metadata):
963+
metadata1 = cube_metadata.resample_spatial(resolution=(11, 22), projection=32631)
964+
metadata2 = cube_metadata.resample_spatial(resolution=0.5)
958965

959966
assert metadata1.spatial_dimensions == [
960967
SpatialDimension(name="x", extent=[2, 7], crs=32631, step=11),

0 commit comments

Comments
 (0)