From 34517bcc9cdfcc2e3edb836e871cc015980d53fb Mon Sep 17 00:00:00 2001 From: AM1729 Date: Thu, 23 Jul 2026 14:31:55 +0200 Subject: [PATCH 1/2] fixes bbox for stac resources, observing outisde bounds message --- .../klab/stac/STACCollectionParser.java | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/adapters/klab.ogc/src/main/java/org/integratedmodelling/klab/stac/STACCollectionParser.java b/adapters/klab.ogc/src/main/java/org/integratedmodelling/klab/stac/STACCollectionParser.java index fcab6242f..79d202376 100644 --- a/adapters/klab.ogc/src/main/java/org/integratedmodelling/klab/stac/STACCollectionParser.java +++ b/adapters/klab.ogc/src/main/java/org/integratedmodelling/klab/stac/STACCollectionParser.java @@ -33,26 +33,34 @@ public static String readCollectionId(JSONObject collection) { * @return geometry */ public static IGeometry readGeometry(JSONObject collection, boolean featureOnly) { - GeometryBuilder gBuilder = Geometry.builder(); + + GeometryBuilder gBuilder = Geometry.builder(); JSONObject extent = collection.getJSONObject("extent"); List bbox = extent.getJSONObject("spatial").getJSONArray("bbox").getJSONArray(0).toList(); - gBuilder.space().boundingBox(Double.valueOf(bbox.get(0).toString()), Double.valueOf(bbox.get(1).toString()), - Double.valueOf(bbox.get(2).toString()), Double.valueOf(bbox.get(3).toString())); - - List interval = extent.getJSONObject("temporal").getJSONArray("interval").getJSONArray(0).toList(); - if (interval.get(0) != null) { - gBuilder.time().start(Instant.parse(interval.get(0).toString()).toEpochMilli()); - } - if (interval.size() > 1 && interval.get(1) != null) { - gBuilder.time().end(Instant.parse(interval.get(1).toString()).toEpochMilli()); - } + gBuilder.space().boundingBox(Double.valueOf(bbox.get(0).toString()), Double.valueOf(bbox.get(2).toString()), + Double.valueOf(bbox.get(1).toString()), Double.valueOf(bbox.get(3).toString())); // In STAC, the geometry obj should necessarily be in WGS84 so it's good + + // IMPORTANT: In k.LAB it's minX, maxX, minY, maxY; but in STAC or geoserver the bbox is + // minX, minY, maxX, maxY + + // Avoid setting the time since, they get filtered later on + +// List interval = extent.getJSONObject("temporal").getJSONArray("interval").getJSONArray(0).toList(); +// if (interval.get(0) != null) { +// gBuilder.time().start(Instant.parse(interval.get(0).toString()).toEpochMilli()); +// } +// if (interval.size() > 1 && interval.get(1) != null) { +// gBuilder.time().end(Instant.parse(interval.get(1).toString()).toEpochMilli()); +// } + + //TODO: Figure out a way to know if time would be logical or grid // TODO find non-ad-hoc cases - if (collection.getString("id").equals("slovak_SK_v5_reference-points_EUNIS2012") || featureOnly) { - return gBuilder.build().withProjection(Projection.DEFAULT_PROJECTION_CODE).withTimeType("logical"); - } - return gBuilder.build().withProjection(Projection.DEFAULT_PROJECTION_CODE).withTimeType("grid"); +// if (collection.getString("id").equals("slovak_SK_v5_reference-points_EUNIS2012") || featureOnly) { +// return gBuilder.build().withProjection(Projection.DEFAULT_PROJECTION_CODE).withTimeType("logical"); +// } + return gBuilder.build().withProjection(Projection.DEFAULT_PROJECTION_CODE).withTimeType("logical"); } private static JSONObject findAsset(JSONObject assets, String assetId, Predicate predicate) { From 0daad81f6dd857a78229733b7cf7f4acb5ba3222 Mon Sep 17 00:00:00 2001 From: AM1729 Date: Thu, 23 Jul 2026 14:34:09 +0200 Subject: [PATCH 2/2] removes logical without a time --- .../org/integratedmodelling/klab/stac/STACCollectionParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adapters/klab.ogc/src/main/java/org/integratedmodelling/klab/stac/STACCollectionParser.java b/adapters/klab.ogc/src/main/java/org/integratedmodelling/klab/stac/STACCollectionParser.java index 79d202376..130d83008 100644 --- a/adapters/klab.ogc/src/main/java/org/integratedmodelling/klab/stac/STACCollectionParser.java +++ b/adapters/klab.ogc/src/main/java/org/integratedmodelling/klab/stac/STACCollectionParser.java @@ -60,7 +60,7 @@ public static IGeometry readGeometry(JSONObject collection, boolean featureOnly) // if (collection.getString("id").equals("slovak_SK_v5_reference-points_EUNIS2012") || featureOnly) { // return gBuilder.build().withProjection(Projection.DEFAULT_PROJECTION_CODE).withTimeType("logical"); // } - return gBuilder.build().withProjection(Projection.DEFAULT_PROJECTION_CODE).withTimeType("logical"); + return gBuilder.build().withProjection(Projection.DEFAULT_PROJECTION_CODE); } private static JSONObject findAsset(JSONObject assets, String assetId, Predicate predicate) {