From 083325969a53710865c3fe6888c6904544fbfd3d Mon Sep 17 00:00:00 2001 From: utas-amberbian Date: Mon, 7 Sep 2026 12:40:43 +1000 Subject: [PATCH] expose spatial_extents in collection properties --- .../ogcapi/server/core/mapper/Converter.java | 4 +++ .../model/enumeration/CollectionProperty.java | 3 ++- .../core/mapper/StacToCollectionTest.java | 27 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/mapper/Converter.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/mapper/Converter.java index bc661611..de824883 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/mapper/Converter.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/mapper/Converter.java @@ -230,6 +230,10 @@ default Collection getCollection(D m, Filter fil collection.getProperties().put(CollectionProperty.geometry, m.getSummaries().getGeometry()); } + if (m.getSummaries().getSpatialExtents() != null) { + collection.getProperties().put(CollectionProperty.spatialExtents, m.getSummaries().getSpatialExtents()); + } + if (m.getSummaries().getTemporal() != null) { collection.getProperties().put(CollectionProperty.temporal, m.getSummaries().getTemporal()); } diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CollectionProperty.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CollectionProperty.java index b7d59487..a7967bc5 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CollectionProperty.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CollectionProperty.java @@ -30,7 +30,8 @@ public enum CollectionProperty { platformVocabs("platform_vocabs"), organisationVocabs("organisation_vocabs"), aiPlatformVocabs("ai:platform_vocabs"), - datasetProvider("dataset_provider"); + datasetProvider("dataset_provider"), + spatialExtents("spatial_extents"); private final String value; diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/core/mapper/StacToCollectionTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/core/mapper/StacToCollectionTest.java index 4038a791..6c28c467 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/core/mapper/StacToCollectionTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/core/mapper/StacToCollectionTest.java @@ -14,6 +14,7 @@ import au.org.aodn.stac.model.LinkModel; import au.org.aodn.stac.model.StacCollectionModel; import au.org.aodn.stac.model.SummariesModel; +import au.org.aodn.stac.model.SpatialExtentModel; import au.org.aodn.stac.model.ThemesModel; import au.org.aodn.ogcapi.server.core.model.enumeration.CollectionProperty; import au.org.aodn.ogcapi.server.core.parser.stac.CQLToStacFilterFactory; @@ -30,6 +31,7 @@ import org.springframework.boot.test.context.SpringBootTest; import java.io.IOException; +import java.math.BigDecimal; import java.time.Instant; import java.util.*; @@ -313,4 +315,29 @@ public void verifyConvertWorks1() throws IOException, CQLException { CompilerUtil.parseFilter(Language.CQL, "score>=1.5 AND INTERSECTS(geometry,POLYGON ((104 -43, 163 -43, 163 -8, 104 -8, 104 -43)))", factory) ); } + + @Test + public void verifySpatialExtentsInProperties() { + SpatialExtentModel extent = SpatialExtentModel.builder() + .description("Pelorus Reef") + .bbox(List.of(BigDecimal.valueOf(146.5), BigDecimal.valueOf(-18.5), + BigDecimal.valueOf(146.5), BigDecimal.valueOf(-18.5))) + .build(); + StacCollectionModel model = StacCollectionModel.builder() + .summaries(SummariesModel.builder().score(0).spatialExtents(List.of(extent)).build()) + .build(); + + ExtendedCollection collection = (ExtendedCollection) new StacToCollectionImpl().convert(model, null); + Assertions.assertEquals(List.of(extent), collection.getProperties().get(CollectionProperty.spatialExtents)); + } + + @Test + public void verifyNoSpatialExtentsNoProperty() { + StacCollectionModel model = StacCollectionModel.builder() + .summaries(SummariesModel.builder().score(0).build()) + .build(); + + ExtendedCollection collection = (ExtendedCollection) new StacToCollectionImpl().convert(model, null); + Assertions.assertFalse(collection.getProperties().containsKey(CollectionProperty.spatialExtents)); + } }