From 4903041ae2e49f042ae5a13605748f0da3aa105d Mon Sep 17 00:00:00 2001 From: Jan Van den bosch Date: Thu, 6 Feb 2025 16:38:50 +0100 Subject: [PATCH] support "proj:code" in addition to "proj:epsg" https://github.com/Open-EO/openeo-geopyspark-driver/issues/1043 --- openeogeotrellis/load_stac.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/openeogeotrellis/load_stac.py b/openeogeotrellis/load_stac.py index a2eb4389..b6c5d922 100644 --- a/openeogeotrellis/load_stac.py +++ b/openeogeotrellis/load_stac.py @@ -126,9 +126,16 @@ def get_proj_metadata(itm: pystac.Item, asst: pystac.Asset) -> (Optional[int], Optional[Tuple[float, float, float, float]], Optional[Tuple[int, int]]): """Returns EPSG code, bbox (in that EPSG) and number of pixels (rows, cols), if available.""" - epsg = asst.extra_fields.get("proj:epsg") or itm.properties.get("proj:epsg") + + def to_epsg(proj_code: Optional[str]) -> Optional[int]: + prefix = "EPSG:" + return int(proj_code[len(prefix):]) if proj_code.upper().startswith(prefix) else None + + code = asst.extra_fields.get("proj:code") or itm.properties.get("proj:code") + epsg = to_epsg(code) or asst.extra_fields.get("proj:epsg") or itm.properties.get("proj:epsg") bbox = asst.extra_fields.get("proj:bbox") or itm.properties.get("proj:bbox") shape = asst.extra_fields.get("proj:shape") or itm.properties.get("proj:shape") + return (epsg, tuple(map(float, bbox)) if bbox else None, tuple(shape) if shape else None)